From 07ed2a8391c2aa6ed6fdb2e4eb9f82683d5b95fe Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Sat, 23 Aug 2025 14:22:22 -0500 Subject: [PATCH 001/112] docs: document out of box lsps (#2213) --- packages/web/src/content/docs/docs/lsp.mdx | 27 ++++++++++++++-------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/packages/web/src/content/docs/docs/lsp.mdx b/packages/web/src/content/docs/docs/lsp.mdx index d674cc70da..6a661521cb 100644 --- a/packages/web/src/content/docs/docs/lsp.mdx +++ b/packages/web/src/content/docs/docs/lsp.mdx @@ -11,19 +11,26 @@ opencode integrates with your Language Server Protocol (LSP) to help the LLM int opencode comes with several built-in LSP servers for popular languages: -| LSP Server | Extensions | Requirements | -| ---------- | -------------------------------------------- | ----------------------------------- | -| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` dependency in project | -| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `eslint` dependency in project | -| gopls | .go | `go` command available | -| ruby-lsp | .rb, .rake, .gemspec, .ru | `ruby` and `gem` commands available | -| pyright | .py, .pyi | `pyright` dependency installed | -| elixir-ls | .ex, .exs | `elixir` command available | -| zls | .zig, .zon | `zig` command available | -| csharp | .cs | `.NET SDK` installed | +| LSP Server | Extensions | Requirements | +| ---------- | ---------------------------------------------------- | ----------------------------------- | +| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` dependency in project | +| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | `eslint` dependency in project | +| gopls | .go | `go` command available | +| ruby-lsp | .rb, .rake, .gemspec, .ru | `ruby` and `gem` commands available | +| pyright | .py, .pyi | `pyright` dependency installed | +| elixir-ls | .ex, .exs | `elixir` command available | +| zls | .zig, .zon | `zig` command available | +| csharp | .cs | `.NET SDK` installed | +| vue | .vue | Auto-installs for Vue projects | +| rust | .rs | `rust-analyzer` command available | +| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Auto-installs for C/C++ projects | LSP servers are automatically enabled when one of the above file extensions are detected and the requirements are met. +:::note +You can disable automatic LSP server downloads by setting the `OPENCODE_DISABLE_LSP_DOWNLOAD` environment variable to `true`. +::: + --- ## How It Works From b80046120c9674d3c717dd426997606feeb52eb2 Mon Sep 17 00:00:00 2001 From: OpeOginni <107570612+OpeOginni@users.noreply.github.com> Date: Sat, 23 Aug 2025 21:43:20 +0200 Subject: [PATCH 002/112] docs: document editor --wait flag (#2209) Co-authored-by: rekram1-node --- packages/web/src/content/docs/docs/tui.mdx | 33 ++++++++++++++++------ 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/packages/web/src/content/docs/docs/tui.mdx b/packages/web/src/content/docs/docs/tui.mdx index e6ad101624..a886cd312b 100644 --- a/packages/web/src/content/docs/docs/tui.mdx +++ b/packages/web/src/content/docs/docs/tui.mdx @@ -254,37 +254,52 @@ Both the `/editor` and `/export` commands use the editor specified in your `EDIT ```bash - export EDITOR=nano # or vim, code, etc. + # Example for nano or vim + export EDITOR=nano + export EDITOR=vim + + # For GUI editors (VS Code, Cursor, VSCodium, Windsurf, Zed, etc.) include --wait + export EDITOR="code --wait" ``` To make it permanent, add this to your shell profile; `~/.bashrc`, `~/.zshrc`, etc. - + ```bash - set EDITOR=notepad # or code, vim, etc. + set EDITOR=notepad + + # For GUI editors (VS Code, Cursor, VSCodium, Windsurf, Zed, etc.) include --wait + set EDITOR=code --wait ``` To make it permanent, use **System Properties** > **Environment Variables**. - + - ```bash - $env:EDITOR = "notepad" # or "code", "vim", etc. + ```powershell + $env:EDITOR = "notepad" + + # For GUI editors (VS Code, Cursor, VSCodium, Windsurf, Zed, etc.) include --wait + $env:EDITOR = "code --wait" ``` - To make it permanent, add this to your PowerShell - profile. - + To make it permanent, add this to your PowerShell profile. Popular editor options include: - `code` - Visual Studio Code +- `cursor` - Cursor +- `windsurf` - Windsurf - `vim` - Vim editor - `nano` - Nano editor - `notepad` - Windows Notepad - `subl` - Sublime Text + +:::tip +Some editors need command-line arguments to run in blocking mode. The --wait flag makes the editor process block until closed, which is necessary for opencode to function correctly. +::: From 0fd312346bc172782ea7e45160deb8851d894dbc Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Sat, 23 Aug 2025 14:52:02 -0500 Subject: [PATCH 003/112] docs: fix plan agent docs (#2215) --- packages/web/src/content/docs/docs/agents.mdx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/web/src/content/docs/docs/agents.mdx b/packages/web/src/content/docs/docs/agents.mdx index 51d835a6d5..1527a1b08f 100644 --- a/packages/web/src/content/docs/docs/agents.mdx +++ b/packages/web/src/content/docs/docs/agents.mdx @@ -58,12 +58,11 @@ Build is the **default** primary agent with all tools enabled. This is the stand _Mode_: `primary` -A restricted agent designed for planning and analysis. In the plan agent, the following tools are disabled by default: +A restricted agent designed for planning and analysis. We use a permission system to give you more control and prevent unintended changes. +By default, all of the following are set to `ask`: -- `write` - Cannot create new files -- `edit` - Cannot modify existing files -- `patch` - Cannot apply patches -- `bash` - Cannot execute shell commands +- `file edits`: All writes, patches, and edits +- `bash`: All bash commands This agent is useful when you want the LLM to analyze code, suggest changes, or create plans without making any actual modifications to your codebase. From d4c8d95ec63e873dfca359540a1b2ae5f9349e18 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sun, 24 Aug 2025 12:03:59 +0000 Subject: [PATCH 004/112] ignore: update download stats 2025-08-24 --- STATS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/STATS.md b/STATS.md index f5833afcb2..b17ac694aa 100644 --- a/STATS.md +++ b/STATS.md @@ -57,3 +57,4 @@ | 2025-08-21 | 220,465 (+5,968) | 194,784 (+3,303) | 415,249 (+9,271) | | 2025-08-22 | 225,899 (+5,434) | 197,204 (+2,420) | 423,103 (+7,854) | | 2025-08-23 | 229,005 (+3,106) | 199,238 (+2,034) | 428,243 (+5,140) | +| 2025-08-24 | 232,098 (+3,093) | 201,157 (+1,919) | 433,255 (+5,012) | From cc66e06101484410ef4236aa40f386fa804db1e7 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Sun, 24 Aug 2025 12:06:48 -0500 Subject: [PATCH 005/112] fix: command model selection (#2219) --- packages/opencode/src/session/index.ts | 12 ++++++++---- packages/tui/internal/app/app.go | 2 ++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index e918f2af10..7cb244001c 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -1171,12 +1171,16 @@ export namespace Session { export async function command(input: CommandInput) { const command = await Command.get(input.command) - const agent = input.agent ?? command.agent ?? "build" + const agent = command.agent ?? input.agent ?? "build" + const fmtModel = (model: { providerID: string; modelID: string }) => `${model.providerID}/${model.modelID}` + const model = - input.model ?? command.model ?? - (await Agent.get(agent).then((x) => (x.model ? `${x.model.providerID}/${x.model.modelID}` : undefined))) ?? - (await Provider.defaultModel().then((x) => `${x.providerID}/${x.modelID}`)) + (command.agent && (await Agent.get(command.agent).then((x) => (x.model ? fmtModel(x.model) : undefined)))) ?? + input.model ?? + (input.agent && (await Agent.get(input.agent).then((x) => (x.model ? fmtModel(x.model) : undefined)))) ?? + fmtModel(await Provider.defaultModel()) + let template = command.template.replace("$ARGUMENTS", input.arguments) const bash = Array.from(template.matchAll(bashRegex)) diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go index ecf95ff989..b293e5b0b0 100644 --- a/packages/tui/internal/app/app.go +++ b/packages/tui/internal/app/app.go @@ -820,6 +820,8 @@ func (a *App) SendCommand(ctx context.Context, command string, args string) (*Ap opencode.SessionCommandParams{ Command: opencode.F(command), Arguments: opencode.F(args), + Agent: opencode.F(a.Agents[a.AgentIndex].Name), + Model: opencode.F(a.State.Provider + "/" + a.State.Model), }, ) if err != nil { From f9b5b6d129d7838dbac872b6982be69ead30d27f Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 25 Aug 2025 03:38:02 +0800 Subject: [PATCH 006/112] Add opencode workflow --- .github/workflows/opencode.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/opencode.yml b/.github/workflows/opencode.yml index cbe35f615b..08014cf2ca 100644 --- a/.github/workflows/opencode.yml +++ b/.github/workflows/opencode.yml @@ -8,22 +8,20 @@ jobs: opencode: if: | contains(github.event.comment.body, ' /oc') || - startsWith(github.event.comment.body, '/oc') || - contains(github.event.comment.body, ' /opencode') || - startsWith(github.event.comment.body, '/opencode') + contains(github.event.comment.body, ' /opencode') runs-on: ubuntu-latest permissions: - contents: read id-token: write + contents: read + pull-requests: read + issues: read steps: - name: Checkout repository uses: actions/checkout@v4 - with: - fetch-depth: 1 - name: Run opencode uses: sst/opencode/github@latest env: - ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }} + OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }} with: - model: anthropic/claude-sonnet-4-20250514 + model: opencode/sonic \ No newline at end of file From f22827bdfa371db4f7a35a8a08b54bbc281b075d Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 25 Aug 2025 03:39:11 +0800 Subject: [PATCH 007/112] Add opencode workflow From 60ba42af155f7032386d90533b2b38353f91c374 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 25 Aug 2025 06:14:47 +0800 Subject: [PATCH 008/112] Add opencode workflow From 6b4bd590ac11ff73bbbf8acd04cf46eef579b9fe Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 25 Aug 2025 06:16:21 +0800 Subject: [PATCH 009/112] Add opencode workflow From ca2660ccf8a5f658fa183c92c5183da27368a01a Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 24 Aug 2025 18:31:44 -0400 Subject: [PATCH 010/112] ci: ignore --- packages/opencode/script/publish.ts | 47 ++++++++++++++++++++++++++--- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/packages/opencode/script/publish.ts b/packages/opencode/script/publish.ts index 7076b2d4d5..8466141b0e 100755 --- a/packages/opencode/script/publish.ts +++ b/packages/opencode/script/publish.ts @@ -97,11 +97,11 @@ if (!snapshot) { const macX64Sha = await $`sha256sum ./dist/opencode-darwin-x64.zip | cut -d' ' -f1`.text().then((x) => x.trim()) const macArm64Sha = await $`sha256sum ./dist/opencode-darwin-arm64.zip | cut -d' ' -f1`.text().then((x) => x.trim()) - const pkgbuild = [ + const binaryPkgbuild = [ "# Maintainer: dax", "# Maintainer: adam", "", - "pkgname='${pkg}'", + "pkgname='opencode-bin'", `pkgver=${version.split("-")[0]}`, "options=('!debug' '!strip')", "pkgrel=1", @@ -125,11 +125,50 @@ if (!snapshot) { "", ].join("\n") - for (const pkg of ["opencode-bin"]) { + // Source-based PKGBUILD for opencode + const sourcePkgbuild = [ + "# Maintainer: dax", + "# Maintainer: adam", + "", + "pkgname='opencode'", + `pkgver=${version.split("-")[0]}`, + "options=('!debug' '!strip')", + "pkgrel=1", + "pkgdesc='The AI coding agent built for the terminal.'", + "url='https://github.com/sst/opencode'", + "arch=('aarch64' 'x86_64')", + "license=('MIT')", + "provides=('opencode')", + "conflicts=('opencode-bin')", + "depends=('fzf' 'ripgrep')", + "makedepends=('git' 'bun-bin' 'go')", + "", + `source=("opencode-\${pkgver}.tar.gz::https://github.com/sst/opencode/archive/v${version}.tar.gz")`, + `sha256sums=('SKIP')`, + "", + "build() {", + ` cd "opencode-\${pkgver}"`, + " cd packages/tui", + ` CGO_ENABLED=0 go build -ldflags="-s -w -X main.Version=\${pkgver}" -o tui cmd/opencode/main.go`, + " cd ../opencode", + ` bun build --define OPENCODE_TUI_PATH="'../tui/tui'" --define OPENCODE_VERSION="'\${pkgver}'" --compile --target=bun-linux-x64 --outfile=opencode ./src/index.ts`, + "}", + "", + "package() {", + ` cd "opencode-\${pkgver}/packages/opencode"`, + ' install -Dm755 ./opencode "${pkgdir}/usr/bin/opencode"', + "}", + "", + ].join("\n") + + for (const [pkg, pkgbuild] of [ + ["opencode-bin", binaryPkgbuild], + ["opencode", sourcePkgbuild], + ]) { await $`rm -rf ./dist/aur-${pkg}` await $`git clone ssh://aur@aur.archlinux.org/${pkg}.git ./dist/aur-${pkg}` await $`cd ./dist/aur-${pkg} && git checkout master` - await Bun.file(`./dist/aur-${pkg}/PKGBUILD`).write(pkgbuild.replace("${pkg}", pkg)) + await Bun.file(`./dist/aur-${pkg}/PKGBUILD`).write(pkgbuild) await $`cd ./dist/aur-${pkg} && makepkg --printsrcinfo > .SRCINFO` await $`cd ./dist/aur-${pkg} && git add PKGBUILD .SRCINFO` await $`cd ./dist/aur-${pkg} && git commit -m "Update to v${version}"` From 2992c5a6bf7d0d51904235c5b34a1064b4c878b2 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 24 Aug 2025 18:48:03 -0400 Subject: [PATCH 011/112] ci: retry clone --- packages/opencode/script/publish.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/opencode/script/publish.ts b/packages/opencode/script/publish.ts index 8466141b0e..baeca558bc 100755 --- a/packages/opencode/script/publish.ts +++ b/packages/opencode/script/publish.ts @@ -166,7 +166,14 @@ if (!snapshot) { ["opencode", sourcePkgbuild], ]) { await $`rm -rf ./dist/aur-${pkg}` - await $`git clone ssh://aur@aur.archlinux.org/${pkg}.git ./dist/aur-${pkg}` + while (true) { + try { + await $`git clone ssh://aur@aur.archlinux.org/${pkg}.git ./dist/aur-${pkg}` + break + } catch (e) { + continue + } + } await $`cd ./dist/aur-${pkg} && git checkout master` await Bun.file(`./dist/aur-${pkg}/PKGBUILD`).write(pkgbuild) await $`cd ./dist/aur-${pkg} && makepkg --printsrcinfo > .SRCINFO` From 24e4f5b051dd76ff4d16fe47ed218a30f0681233 Mon Sep 17 00:00:00 2001 From: opencode Date: Sun, 24 Aug 2025 22:53:37 +0000 Subject: [PATCH 012/112] release: v0.5.23 --- cloud/app/package.json | 2 +- cloud/core/package.json | 2 +- cloud/function/package.json | 2 +- cloud/web/package.json | 2 +- packages/function/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cloud/app/package.json b/cloud/app/package.json index 70705f02ef..2d20771ce0 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -5,7 +5,7 @@ "dev": "vinxi dev --host 0.0.0.0", "build": "vinxi build", "start": "vinxi start", - "version": "0.5.18" + "version": "0.5.23" }, "dependencies": { "@ibm/plex": "6.4.1", diff --git a/cloud/core/package.json b/cloud/core/package.json index af30fafc30..666017fe50 100644 --- a/cloud/core/package.json +++ b/cloud/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/cloud-core", - "version": "0.5.18", + "version": "0.5.23", "private": true, "type": "module", "dependencies": { diff --git a/cloud/function/package.json b/cloud/function/package.json index 8d6005d04d..99ab3f0dd2 100644 --- a/cloud/function/package.json +++ b/cloud/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-function", - "version": "0.5.18", + "version": "0.5.23", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/cloud/web/package.json b/cloud/web/package.json index bc604aa5e9..8d6bb43c5a 100644 --- a/cloud/web/package.json +++ b/cloud/web/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-web", - "version": "0.5.18", + "version": "0.5.23", "private": true, "description": "", "type": "module", diff --git a/packages/function/package.json b/packages/function/package.json index d03c3e59ef..d91b1acb22 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/function", - "version": "0.5.18", + "version": "0.5.23", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 4f7e6c2615..e7ced07915 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "0.5.18", + "version": "0.5.23", "name": "opencode", "type": "module", "private": true, diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 5024f2466a..b7c735df5f 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "0.5.18", + "version": "0.5.23", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 2437a1f982..4d67ba1ca9 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "0.5.18", + "version": "0.5.23", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/web/package.json b/packages/web/package.json index 8b9cd1d2c9..488a7ce05a 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,7 +1,7 @@ { "name": "@opencode/web", "type": "module", - "version": "0.5.18", + "version": "0.5.23", "scripts": { "dev": "astro dev", "dev:remote": "sst shell --stage=dev --target=Web astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index e69839c884..14147d1402 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "0.5.18", + "version": "0.5.23", "publisher": "sst-dev", "repository": { "type": "git", From 1b2d3bf6594430d38692d681f4d19e13331d2e2f Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sun, 24 Aug 2025 18:55:32 -0400 Subject: [PATCH 013/112] ci: tweak --- packages/opencode/script/publish.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/opencode/script/publish.ts b/packages/opencode/script/publish.ts index baeca558bc..33ddeff055 100755 --- a/packages/opencode/script/publish.ts +++ b/packages/opencode/script/publish.ts @@ -148,10 +148,11 @@ if (!snapshot) { "", "build() {", ` cd "opencode-\${pkgver}"`, + ` bun install`, " cd packages/tui", ` CGO_ENABLED=0 go build -ldflags="-s -w -X main.Version=\${pkgver}" -o tui cmd/opencode/main.go`, " cd ../opencode", - ` bun build --define OPENCODE_TUI_PATH="'../tui/tui'" --define OPENCODE_VERSION="'\${pkgver}'" --compile --target=bun-linux-x64 --outfile=opencode ./src/index.ts`, + ` bun build --define OPENCODE_TUI_PATH="'$(realpath ../tui/tui)'" --define OPENCODE_VERSION="'\${pkgver}'" --compile --target=bun-linux-x64 --outfile=opencode ./src/index.ts`, "}", "", "package() {", From 5d68a7c2e0675076c4a37df693852226ec7d067e Mon Sep 17 00:00:00 2001 From: opencode Date: Sun, 24 Aug 2025 23:01:00 +0000 Subject: [PATCH 014/112] release: v0.5.24 --- cloud/app/package.json | 2 +- cloud/core/package.json | 2 +- cloud/function/package.json | 2 +- cloud/web/package.json | 2 +- packages/function/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cloud/app/package.json b/cloud/app/package.json index 2d20771ce0..6cd59e147e 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -5,7 +5,7 @@ "dev": "vinxi dev --host 0.0.0.0", "build": "vinxi build", "start": "vinxi start", - "version": "0.5.23" + "version": "0.5.24" }, "dependencies": { "@ibm/plex": "6.4.1", diff --git a/cloud/core/package.json b/cloud/core/package.json index 666017fe50..f396968918 100644 --- a/cloud/core/package.json +++ b/cloud/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/cloud-core", - "version": "0.5.23", + "version": "0.5.24", "private": true, "type": "module", "dependencies": { diff --git a/cloud/function/package.json b/cloud/function/package.json index 99ab3f0dd2..d245c4cefe 100644 --- a/cloud/function/package.json +++ b/cloud/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-function", - "version": "0.5.23", + "version": "0.5.24", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/cloud/web/package.json b/cloud/web/package.json index 8d6bb43c5a..65ab3452f1 100644 --- a/cloud/web/package.json +++ b/cloud/web/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-web", - "version": "0.5.23", + "version": "0.5.24", "private": true, "description": "", "type": "module", diff --git a/packages/function/package.json b/packages/function/package.json index d91b1acb22..555f3ec75b 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/function", - "version": "0.5.23", + "version": "0.5.24", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index e7ced07915..e1af08bbbd 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "0.5.23", + "version": "0.5.24", "name": "opencode", "type": "module", "private": true, diff --git a/packages/plugin/package.json b/packages/plugin/package.json index b7c735df5f..739a5609e8 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "0.5.23", + "version": "0.5.24", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 4d67ba1ca9..2d8af21bf6 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "0.5.23", + "version": "0.5.24", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/web/package.json b/packages/web/package.json index 488a7ce05a..fd8a3c4fdd 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,7 +1,7 @@ { "name": "@opencode/web", "type": "module", - "version": "0.5.23", + "version": "0.5.24", "scripts": { "dev": "astro dev", "dev:remote": "sst shell --stage=dev --target=Web astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index 14147d1402..61deee06c1 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "0.5.23", + "version": "0.5.24", "publisher": "sst-dev", "repository": { "type": "git", From 315c366e1104d46e2c48c29f5753572e38a73aa9 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Sun, 24 Aug 2025 23:53:39 -0500 Subject: [PATCH 015/112] docs: fix shell examples (#2236) --- packages/web/src/content/docs/docs/commands.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/web/src/content/docs/docs/commands.mdx b/packages/web/src/content/docs/docs/commands.mdx index 3869ea8a46..621cf87202 100644 --- a/packages/web/src/content/docs/docs/commands.mdx +++ b/packages/web/src/content/docs/docs/commands.mdx @@ -59,7 +59,7 @@ Run the command with arguments: ## Inject shell output -Use `!command` to inject shell command output into your prompt. +Use !`command` to inject shell command output into your prompt. Create `.opencode/command/analyze-coverage.md`: @@ -69,7 +69,7 @@ description: Analyze test coverage --- Here are the current test results: -`!npm test` +!`npm test` Based on these results, suggest improvements to increase coverage. ``` @@ -82,7 +82,7 @@ description: Review recent changes --- Recent git commits: -`!git log --oneline -10` +!`git log --oneline -10` Review these changes and suggest any improvements. ``` From 95fabc1407d17653359f82b6180924efcb0f927f Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Mon, 25 Aug 2025 12:04:21 +0000 Subject: [PATCH 016/112] ignore: update download stats 2025-08-25 --- STATS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/STATS.md b/STATS.md index b17ac694aa..a8d536d953 100644 --- a/STATS.md +++ b/STATS.md @@ -58,3 +58,4 @@ | 2025-08-22 | 225,899 (+5,434) | 197,204 (+2,420) | 423,103 (+7,854) | | 2025-08-23 | 229,005 (+3,106) | 199,238 (+2,034) | 428,243 (+5,140) | | 2025-08-24 | 232,098 (+3,093) | 201,157 (+1,919) | 433,255 (+5,012) | +| 2025-08-25 | 236,607 (+4,509) | 202,650 (+1,493) | 439,257 (+6,002) | From f597b7287be62de38d8ec6331a4854e51ee56342 Mon Sep 17 00:00:00 2001 From: adamdotdevin <2363879+adamdottv@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:08:10 -0500 Subject: [PATCH 017/112] chore: cleanup --- ...674ed58d31f8b883da41cc2adb4564aad58-audit.json | 15 --------------- logs/mcp-puppeteer-2025-08-22.log | 6 ------ 2 files changed, 21 deletions(-) delete mode 100644 logs/.496fc674ed58d31f8b883da41cc2adb4564aad58-audit.json delete mode 100644 logs/mcp-puppeteer-2025-08-22.log diff --git a/logs/.496fc674ed58d31f8b883da41cc2adb4564aad58-audit.json b/logs/.496fc674ed58d31f8b883da41cc2adb4564aad58-audit.json deleted file mode 100644 index 208b3dd95b..0000000000 --- a/logs/.496fc674ed58d31f8b883da41cc2adb4564aad58-audit.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "keep": { - "days": true, - "amount": 14 - }, - "auditLog": "/Users/adam/code/opencode/dev/logs/.496fc674ed58d31f8b883da41cc2adb4564aad58-audit.json", - "files": [ - { - "date": 1755891797740, - "name": "/Users/adam/code/opencode/dev/logs/mcp-puppeteer-2025-08-22.log", - "hash": "dd9b1f2e98b661ba2f56b91dd9afbdb25e50adbdd52ed1b0eef1d2045235d17c" - } - ], - "hashType": "sha256" -} \ No newline at end of file diff --git a/logs/mcp-puppeteer-2025-08-22.log b/logs/mcp-puppeteer-2025-08-22.log deleted file mode 100644 index 800731d84b..0000000000 --- a/logs/mcp-puppeteer-2025-08-22.log +++ /dev/null @@ -1,6 +0,0 @@ -{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-08-22 14:43:17.765"} -{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-08-22 14:43:17.766"} -{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-08-22 14:46:45.539"} -{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-08-22 14:46:45.540"} -{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-08-22 14:53:08.159"} -{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-08-22 14:53:08.160"} From f1684c9e1525d8417ce3904ca077ea5adfee6ce5 Mon Sep 17 00:00:00 2001 From: adamdotdevin <2363879+adamdottv@users.noreply.github.com> Date: Mon, 25 Aug 2025 10:08:52 -0500 Subject: [PATCH 018/112] fix(tui): fix logo color --- packages/tui/internal/tui/tui.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index f7ce7982b9..b0d169e0bd 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -915,7 +915,7 @@ func (a Model) Cleanup() { func (a Model) home() (string, int, int) { t := theme.CurrentTheme() effectiveWidth := a.width - 4 - baseStyle := styles.NewStyle().Background(t.Background()) + baseStyle := styles.NewStyle().Foreground(t.Text()).Background(t.Background()) base := baseStyle.Render muted := styles.NewStyle().Foreground(t.TextMuted()).Background(t.Background()).Render From f5f6167146b778a8bf6a4c78d45fb2aa1133a96a Mon Sep 17 00:00:00 2001 From: Jay V Date: Fri, 22 Aug 2025 20:29:57 -0400 Subject: [PATCH 019/112] docs: edit --- README.md | 2 +- packages/web/src/content/docs/docs/enterprise.mdx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1e16bde8cc..b844c497ea 100644 --- a/README.md +++ b/README.md @@ -107,4 +107,4 @@ The other confusingly named repo has no relation to this one. You can [read the --- -**Join our community** [Discord](https://discord.gg/opencode) | [YouTube](https://www.youtube.com/c/sst-dev) | [X.com](https://x.com/SST_dev) +**Join our community** [Discord](https://discord.gg/opencode) | [YouTube](https://www.youtube.com/c/sst-dev) | [X.com](https://x.com/anomaly_inv) diff --git a/packages/web/src/content/docs/docs/enterprise.mdx b/packages/web/src/content/docs/docs/enterprise.mdx index d73d1d3a4b..ad6b47f929 100644 --- a/packages/web/src/content/docs/docs/enterprise.mdx +++ b/packages/web/src/content/docs/docs/enterprise.mdx @@ -9,7 +9,7 @@ you to use opencode at your organization. To get started, we recommend: 1. Do a trial internally with your team. -2. [**Contact us**](mailto:hello@sst.dev) to discuss pricing and implementation options. +2. [**Contact us**](mailto:hello@anoma.ly) to discuss pricing and implementation options. --- @@ -55,7 +55,7 @@ We recommend you disable this for your trial. ## Deployment Once you have completed your trial and you are ready to self-host opencode at -your organization, you can [**contact us**](mailto:hello@sst.dev) to discuss +your organization, you can [**contact us**](mailto:hello@anoma.ly) to discuss pricing and implementation options. --- From 0a0b363587cdcc311382561092c1277a5544f4c2 Mon Sep 17 00:00:00 2001 From: adamdotdevin <2363879+adamdottv@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:27:49 -0500 Subject: [PATCH 020/112] feat(tui): grok free --- packages/tui/internal/tui/tui.go | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index b0d169e0bd..9ca0e0172b 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -918,6 +918,7 @@ func (a Model) home() (string, int, int) { baseStyle := styles.NewStyle().Foreground(t.Text()).Background(t.Background()) base := baseStyle.Render muted := styles.NewStyle().Foreground(t.TextMuted()).Background(t.Background()).Render + highlight := styles.NewStyle().Foreground(t.Accent()).Background(t.Background()).Render open := ` █▀▀█ █▀▀█ █▀▀ █▀▀▄ @@ -952,9 +953,9 @@ func (a Model) home() (string, int, int) { ) // Use limit of 4 for vscode, 6 for others - limit := 6 + limit := 4 if util.IsVSCode() { - limit = 4 + limit = 2 } showVscode := util.IsVSCode() @@ -971,15 +972,23 @@ func (a Model) home() (string, int, int) { styles.WhitespaceStyle(t.Background()), ) + grok := highlight("Try Grok Code free for a limited time") + grok = lipgloss.PlaceHorizontal( + effectiveWidth, + lipgloss.Center, + grok, + styles.WhitespaceStyle(t.Background()), + ) + lines := []string{} lines = append(lines, "") - lines = append(lines, "") lines = append(lines, logoAndVersion) lines = append(lines, "") - lines = append(lines, "") lines = append(lines, cmds) lines = append(lines, "") lines = append(lines, "") + lines = append(lines, grok) + lines = append(lines, "") mainHeight := lipgloss.Height(strings.Join(lines, "\n")) From 6357136ca51935ac130f2774109b8120bf151246 Mon Sep 17 00:00:00 2001 From: adamdotdevin <2363879+adamdottv@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:29:56 -0500 Subject: [PATCH 021/112] fix(tui): sort custom commands lower --- packages/tui/internal/commands/command.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/tui/internal/commands/command.go b/packages/tui/internal/commands/command.go index 3a5287ca3d..ae34f4b52a 100644 --- a/packages/tui/internal/commands/command.go +++ b/packages/tui/internal/commands/command.go @@ -92,6 +92,12 @@ func (r CommandRegistry) Sorted() []Command { if b.Name == AppExitCommand { return -1 } + if a.Custom { + return -1 + } + if b.Custom { + return 1 + } return strings.Compare(string(a.Name), string(b.Name)) }) From 836c2060c7d5d0a67ee3b347ad4bf0dc73f9ca0f Mon Sep 17 00:00:00 2001 From: adamdotdevin <2363879+adamdottv@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:32:15 -0500 Subject: [PATCH 022/112] fix(tui): sort custom commands lower --- packages/tui/internal/commands/command.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/tui/internal/commands/command.go b/packages/tui/internal/commands/command.go index ae34f4b52a..d552b78ece 100644 --- a/packages/tui/internal/commands/command.go +++ b/packages/tui/internal/commands/command.go @@ -92,12 +92,12 @@ func (r CommandRegistry) Sorted() []Command { if b.Name == AppExitCommand { return -1 } - if a.Custom { - return -1 - } - if b.Custom { + if a.Custom && !b.Custom { return 1 } + if !a.Custom && b.Custom { + return -1 + } return strings.Compare(string(a.Name), string(b.Name)) }) From 5b5bd146ea44f62c31cac57dfad5ed703a65dd7b Mon Sep 17 00:00:00 2001 From: opencode Date: Mon, 25 Aug 2025 16:38:24 +0000 Subject: [PATCH 023/112] release: v0.5.25 --- cloud/app/package.json | 2 +- cloud/core/package.json | 2 +- cloud/function/package.json | 2 +- cloud/web/package.json | 2 +- packages/function/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cloud/app/package.json b/cloud/app/package.json index 6cd59e147e..e47a166b06 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -5,7 +5,7 @@ "dev": "vinxi dev --host 0.0.0.0", "build": "vinxi build", "start": "vinxi start", - "version": "0.5.24" + "version": "0.5.25" }, "dependencies": { "@ibm/plex": "6.4.1", diff --git a/cloud/core/package.json b/cloud/core/package.json index f396968918..69773a852d 100644 --- a/cloud/core/package.json +++ b/cloud/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/cloud-core", - "version": "0.5.24", + "version": "0.5.25", "private": true, "type": "module", "dependencies": { diff --git a/cloud/function/package.json b/cloud/function/package.json index d245c4cefe..d3f0658d88 100644 --- a/cloud/function/package.json +++ b/cloud/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-function", - "version": "0.5.24", + "version": "0.5.25", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/cloud/web/package.json b/cloud/web/package.json index 65ab3452f1..66bf05f239 100644 --- a/cloud/web/package.json +++ b/cloud/web/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-web", - "version": "0.5.24", + "version": "0.5.25", "private": true, "description": "", "type": "module", diff --git a/packages/function/package.json b/packages/function/package.json index 555f3ec75b..3d9f7e754e 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/function", - "version": "0.5.24", + "version": "0.5.25", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index e1af08bbbd..1ead404f69 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "0.5.24", + "version": "0.5.25", "name": "opencode", "type": "module", "private": true, diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 739a5609e8..25013388c6 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "0.5.24", + "version": "0.5.25", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 2d8af21bf6..bcf3899888 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "0.5.24", + "version": "0.5.25", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/web/package.json b/packages/web/package.json index fd8a3c4fdd..4f9cb0f80d 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,7 +1,7 @@ { "name": "@opencode/web", "type": "module", - "version": "0.5.24", + "version": "0.5.25", "scripts": { "dev": "astro dev", "dev:remote": "sst shell --stage=dev --target=Web astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index 61deee06c1..c003b3d600 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "0.5.24", + "version": "0.5.25", "publisher": "sst-dev", "repository": { "type": "git", From 34982b5d184dd1c8e5e13f8fac411c25d19ca2f4 Mon Sep 17 00:00:00 2001 From: adamdotdevin <2363879+adamdottv@users.noreply.github.com> Date: Mon, 25 Aug 2025 11:33:04 -0500 Subject: [PATCH 024/112] fix(tui): wording --- packages/tui/internal/tui/tui.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index 9ca0e0172b..d1001f7941 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -972,7 +972,7 @@ func (a Model) home() (string, int, int) { styles.WhitespaceStyle(t.Background()), ) - grok := highlight("Try Grok Code free for a limited time") + grok := highlight("Grok Code is free for a limited time") grok = lipgloss.PlaceHorizontal( effectiveWidth, lipgloss.Center, From d7c4faec583efd0cde96b908257fa3bf72bdb070 Mon Sep 17 00:00:00 2001 From: opencode Date: Mon, 25 Aug 2025 16:54:15 +0000 Subject: [PATCH 025/112] release: v0.5.26 --- cloud/app/package.json | 2 +- cloud/core/package.json | 2 +- cloud/function/package.json | 2 +- cloud/web/package.json | 2 +- packages/function/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cloud/app/package.json b/cloud/app/package.json index e47a166b06..63c415887a 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -5,7 +5,7 @@ "dev": "vinxi dev --host 0.0.0.0", "build": "vinxi build", "start": "vinxi start", - "version": "0.5.25" + "version": "0.5.26" }, "dependencies": { "@ibm/plex": "6.4.1", diff --git a/cloud/core/package.json b/cloud/core/package.json index 69773a852d..207148452f 100644 --- a/cloud/core/package.json +++ b/cloud/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/cloud-core", - "version": "0.5.25", + "version": "0.5.26", "private": true, "type": "module", "dependencies": { diff --git a/cloud/function/package.json b/cloud/function/package.json index d3f0658d88..5554c70c27 100644 --- a/cloud/function/package.json +++ b/cloud/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-function", - "version": "0.5.25", + "version": "0.5.26", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/cloud/web/package.json b/cloud/web/package.json index 66bf05f239..8a9d82257e 100644 --- a/cloud/web/package.json +++ b/cloud/web/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-web", - "version": "0.5.25", + "version": "0.5.26", "private": true, "description": "", "type": "module", diff --git a/packages/function/package.json b/packages/function/package.json index 3d9f7e754e..1f9d43af86 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/function", - "version": "0.5.25", + "version": "0.5.26", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 1ead404f69..eef479e437 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "0.5.25", + "version": "0.5.26", "name": "opencode", "type": "module", "private": true, diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 25013388c6..602ec7dc33 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "0.5.25", + "version": "0.5.26", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index bcf3899888..47791c5ac7 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "0.5.25", + "version": "0.5.26", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/web/package.json b/packages/web/package.json index 4f9cb0f80d..14239f1531 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,7 +1,7 @@ { "name": "@opencode/web", "type": "module", - "version": "0.5.25", + "version": "0.5.26", "scripts": { "dev": "astro dev", "dev:remote": "sst shell --stage=dev --target=Web astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index c003b3d600..d1cadc02c7 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "0.5.25", + "version": "0.5.26", "publisher": "sst-dev", "repository": { "type": "git", From 564418f1ff80fc4d39b864de76f36c8f1eb4fbd4 Mon Sep 17 00:00:00 2001 From: adamdotdevin <2363879+adamdottv@users.noreply.github.com> Date: Mon, 25 Aug 2025 12:04:35 -0500 Subject: [PATCH 026/112] fix(tui): too early --- packages/tui/internal/tui/tui.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index d1001f7941..e407485350 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -953,9 +953,9 @@ func (a Model) home() (string, int, int) { ) // Use limit of 4 for vscode, 6 for others - limit := 4 + limit := 6 if util.IsVSCode() { - limit = 2 + limit = 4 } showVscode := util.IsVSCode() @@ -987,8 +987,6 @@ func (a Model) home() (string, int, int) { lines = append(lines, cmds) lines = append(lines, "") lines = append(lines, "") - lines = append(lines, grok) - lines = append(lines, "") mainHeight := lipgloss.Height(strings.Join(lines, "\n")) From 567a1964c0f228de1254c3ec730cea4dc5646778 Mon Sep 17 00:00:00 2001 From: opencode Date: Mon, 25 Aug 2025 17:10:18 +0000 Subject: [PATCH 027/112] release: v0.5.27 --- cloud/app/package.json | 2 +- cloud/core/package.json | 2 +- cloud/function/package.json | 2 +- cloud/web/package.json | 2 +- packages/function/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/cloud/app/package.json b/cloud/app/package.json index 63c415887a..2030d05416 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -5,7 +5,7 @@ "dev": "vinxi dev --host 0.0.0.0", "build": "vinxi build", "start": "vinxi start", - "version": "0.5.26" + "version": "0.5.27" }, "dependencies": { "@ibm/plex": "6.4.1", diff --git a/cloud/core/package.json b/cloud/core/package.json index 207148452f..2198794a97 100644 --- a/cloud/core/package.json +++ b/cloud/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/cloud-core", - "version": "0.5.26", + "version": "0.5.27", "private": true, "type": "module", "dependencies": { diff --git a/cloud/function/package.json b/cloud/function/package.json index 5554c70c27..8b763de4f9 100644 --- a/cloud/function/package.json +++ b/cloud/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-function", - "version": "0.5.26", + "version": "0.5.27", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/cloud/web/package.json b/cloud/web/package.json index 8a9d82257e..46893f9656 100644 --- a/cloud/web/package.json +++ b/cloud/web/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-web", - "version": "0.5.26", + "version": "0.5.27", "private": true, "description": "", "type": "module", diff --git a/packages/function/package.json b/packages/function/package.json index 1f9d43af86..3547ec0c18 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/function", - "version": "0.5.26", + "version": "0.5.27", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index eef479e437..29ac2931a3 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "0.5.26", + "version": "0.5.27", "name": "opencode", "type": "module", "private": true, diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 602ec7dc33..9985b65419 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "0.5.26", + "version": "0.5.27", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 47791c5ac7..01fd7938bf 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "0.5.26", + "version": "0.5.27", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/web/package.json b/packages/web/package.json index 14239f1531..e338eae248 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,7 +1,7 @@ { "name": "@opencode/web", "type": "module", - "version": "0.5.26", + "version": "0.5.27", "scripts": { "dev": "astro dev", "dev:remote": "sst shell --stage=dev --target=Web astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index d1cadc02c7..82e9c607b4 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "0.5.26", + "version": "0.5.27", "publisher": "sst-dev", "repository": { "type": "git", From fd84e8d405dfa9fd9c9c30288b0f28f7144a0d75 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 26 Aug 2025 01:40:52 +0800 Subject: [PATCH 028/112] Add opencode workflow From d2e2eae4b81febcf1c0cd9eab08a06dda103bf7e Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 26 Aug 2025 01:46:16 +0800 Subject: [PATCH 029/112] Add opencode workflow From 012a292948094a403a1d2deb7ab689a8980a06e2 Mon Sep 17 00:00:00 2001 From: Timo Clasen Date: Mon, 25 Aug 2025 22:06:54 +0200 Subject: [PATCH 030/112] fix: model flag in non interactive mode (#2249) --- packages/opencode/src/cli/cmd/run.ts | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index 25d917e14f..4272378cee 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -171,12 +171,8 @@ export const RunCommand = cmd({ const result = await Session.chat({ sessionID: session.id, messageID, - ...(agent.model - ? agent.model - : { - providerID, - modelID, - }), + providerID, + modelID, agent: agent.name, parts: [ { From cb03655aacb6459bbc4637d9fcb1b6c35133091b Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Mon, 25 Aug 2025 23:11:38 -0500 Subject: [PATCH 031/112] fix: eslint ENOTEMPTY (#2252) --- packages/opencode/src/lsp/index.ts | 1 + packages/opencode/src/lsp/server.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/lsp/index.ts b/packages/opencode/src/lsp/index.ts index 3703284e7c..678f602189 100644 --- a/packages/opencode/src/lsp/index.ts +++ b/packages/opencode/src/lsp/index.ts @@ -140,6 +140,7 @@ export namespace LSP { s.broken.add(root + server.id) handle.process.kill() log.error(`Failed to initialize LSP client ${server.id}`, { error: err }) + return undefined }) if (!client) continue s.clients.push(client) diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts index 46c52ec459..2636df9670 100644 --- a/packages/opencode/src/lsp/server.ts +++ b/packages/opencode/src/lsp/server.ts @@ -148,6 +148,7 @@ export namespace LSPServer { async spawn(app, root) { const eslint = await Bun.resolve("eslint", app.path.cwd).catch(() => {}) if (!eslint) return + log.info("spawning eslint server") const serverPath = path.join(Global.Path.bin, "vscode-eslint", "server", "out", "eslintServer.js") if (!(await Bun.file(serverPath).exists())) { if (Flag.OPENCODE_DISABLE_LSP_DOWNLOAD) return @@ -164,7 +165,9 @@ export namespace LSPServer { const extractedPath = path.join(Global.Path.bin, "vscode-eslint-main") const finalPath = path.join(Global.Path.bin, "vscode-eslint") - if (await Bun.file(finalPath).exists()) { + const stats = await fs.stat(finalPath).catch(() => undefined) + if (stats) { + log.info("removing old eslint installation", { path: finalPath }) await fs.rm(finalPath, { force: true, recursive: true }) } await fs.rename(extractedPath, finalPath) From ef6bff638660807a920162bc7ca7b26537b2d5e1 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Tue, 26 Aug 2025 12:04:26 +0000 Subject: [PATCH 032/112] ignore: update download stats 2025-08-26 --- STATS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/STATS.md b/STATS.md index a8d536d953..28f665af3f 100644 --- a/STATS.md +++ b/STATS.md @@ -59,3 +59,4 @@ | 2025-08-23 | 229,005 (+3,106) | 199,238 (+2,034) | 428,243 (+5,140) | | 2025-08-24 | 232,098 (+3,093) | 201,157 (+1,919) | 433,255 (+5,012) | | 2025-08-25 | 236,607 (+4,509) | 202,650 (+1,493) | 439,257 (+6,002) | +| 2025-08-26 | 242,783 (+6,176) | 205,242 (+2,592) | 448,025 (+8,768) | From d9de78cfe88fa997c5b183ff9ce67b9e1e4a26ff Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Tue, 26 Aug 2025 13:42:01 -0500 Subject: [PATCH 033/112] fix: bash tool description (#2260) --- packages/opencode/src/tool/bash.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/opencode/src/tool/bash.txt b/packages/opencode/src/tool/bash.txt index ce78347e0b..342073b9bb 100644 --- a/packages/opencode/src/tool/bash.txt +++ b/packages/opencode/src/tool/bash.txt @@ -109,6 +109,9 @@ IMPORTANT: When the user asks you to create a pull request, follow these steps c gh pr create --title "the pr title" --body "$(cat <<'EOF' ## Summary <1-3 bullet points> +EOF +)" + Important: - NEVER update the git config From 83b9b67c4cc369fb2bc2b24625925059c1a82485 Mon Sep 17 00:00:00 2001 From: Jay V Date: Tue, 26 Aug 2025 12:27:10 -0400 Subject: [PATCH 034/112] docs: adding new provider --- .../web/src/content/docs/docs/providers.mdx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/web/src/content/docs/docs/providers.mdx b/packages/web/src/content/docs/docs/providers.mdx index 9d7b808c84..de1cf8b390 100644 --- a/packages/web/src/content/docs/docs/providers.mdx +++ b/packages/web/src/content/docs/docs/providers.mdx @@ -759,6 +759,23 @@ In this example: --- +### xAI + +For a limited time, you can use xAI's Grok Code for free with opencode. + +:::tip +Grok Code is available for free for a limited time on opencode. +::: + +1. Make sure you are on the latest version of opencode. + +2. Run the `/models` command and select **Grok Code Free**. + +As a part of the trial period, the xAI team will be using the request logs to +monitor and improve Grok Code. + +--- + ### Z.AI 1. Head over to the [Z.AI API console](https://z.ai/manage-apikey/apikey-list), create an account, and click **Create a new API key**. From f4b69df7a3d341a889e30580aeb0d08a10bbce29 Mon Sep 17 00:00:00 2001 From: Jay V Date: Tue, 26 Aug 2025 13:17:40 -0400 Subject: [PATCH 035/112] docs: updating config schema --- packages/opencode/src/config/config.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index f707d35ffd..2041ac35f5 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -339,7 +339,10 @@ export namespace Config { theme: z.string().optional().describe("Theme name to use for the interface"), keybinds: Keybinds.optional().describe("Custom keybind configurations"), tui: TUI.optional().describe("TUI specific settings"), - command: z.record(z.string(), Command).optional(), + command: z + .record(z.string(), Command) + .optional() + .describe("Command configuration, see https://opencode.ai/docs/commands"), plugin: z.string().array().optional(), snapshot: z.boolean().optional(), share: z From 11de2e59f3ff1d39344f77b214e3b4786ef40b4a Mon Sep 17 00:00:00 2001 From: Jay V Date: Tue, 26 Aug 2025 14:03:56 -0400 Subject: [PATCH 036/112] docs: edit commands --- .../web/src/content/docs/docs/commands.mdx | 203 ++++++++++++++---- packages/web/src/content/docs/docs/config.mdx | 47 ++-- packages/web/src/content/docs/docs/tui.mdx | 38 ++-- 3 files changed, 218 insertions(+), 70 deletions(-) diff --git a/packages/web/src/content/docs/docs/commands.mdx b/packages/web/src/content/docs/docs/commands.mdx index 621cf87202..59c9536acd 100644 --- a/packages/web/src/content/docs/docs/commands.mdx +++ b/packages/web/src/content/docs/docs/commands.mdx @@ -3,7 +3,13 @@ title: Commands description: Create custom commands for repetitive tasks. --- -Define custom commands to automate repetitive coding tasks. +Custom commands let you specify a prompt you want to run when that command is executed in the TUI. + +```bash frame="none" +/my-command +``` + +Custom commands are in addition to the built-in commands like `/init`, `/undo`, `/redo`, `/share`, `/help`. [Learn more](/docs/tui#commands). --- @@ -34,12 +40,78 @@ Use the command by typing `/` followed by the command name. --- -## Use arguments +## Configure + +You can add custom commands through the opencode config or by creating markdown files in the `command/` directory. + +--- + +### JSON + +Use the `command` option in your opencode [config](/docs/config): + +```json title="opencode.jsonc" {4-12} +{ + "$schema": "https://opencode.ai/config.json", + "command": { + // This becomes the name of the command + "test": { + // This is the prompt that will be sent to the LLM + "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.", + // This is show as the description in the TUI + "description": "Run tests with coverage", + "agent": "build", + "model": "anthropic/claude-3-5-sonnet-20241022" + }, + } +} +``` + +Now you can run this command in the TUI: + +```bash frame="none" +/test +``` + +--- + +### Markdown + +You can also define commands using markdown files. Place them in: + +- Global: `~/.config/opencode/command/` +- Per-project: `.opencode/command/` + +```markdown title="~/.config/opencode/command/test.md" +--- +description: Run tests with coverage +agent: build +model: anthropic/claude-3-5-sonnet-20241022 +--- + +Run the full test suite with coverage report and show any failures. +Focus on the failing tests and suggest fixes. +``` + +The markdown file name becomes the command name. For example, `test.md` lets +you run: + +```bash frame="none" +/test +``` + +--- + +## Prompt config + +The prompts for the custom commands support several special placeholders and syntax. + +--- + +### Arguments Pass arguments to commands using the `$ARGUMENTS` placeholder. -Create `.opencode/command/component.md`: - ```md title=".opencode/command/component.md" --- description: Create a new component @@ -52,16 +124,18 @@ Include proper typing and basic structure. Run the command with arguments: ```bash frame="none" -"/component Button" +/component Button ``` +And `$ARGUMENTS` will be replaced with `Button`. + --- -## Inject shell output +### Shell output -Use !`command` to inject shell command output into your prompt. +Use _!`command`_ to inject [bash command](/docs/tui#bash-commands) output into your prompt. -Create `.opencode/command/analyze-coverage.md`: +For example, to create a custom command that analyzes test coverage: ```md title=".opencode/command/analyze-coverage.md" --- @@ -74,7 +148,7 @@ Here are the current test results: Based on these results, suggest improvements to increase coverage. ``` -Create `.opencode/command/review-changes.md`: +Or to review recent changes: ```md title=".opencode/command/review-changes.md" --- @@ -91,12 +165,10 @@ Commands run in your project's root directory and their output becomes part of t --- -## Reference files +### File references Include files in your command using `@` followed by the filename. -Create `.opencode/command/review-component.md`: - ```md title=".opencode/command/review-component.md" --- description: Review component @@ -110,47 +182,90 @@ The file content gets included in the prompt automatically. --- -## Command properties +## Options -Configure commands with these optional frontmatter properties: +Let's look at the configuration options in detail. -- **description**: Brief explanation of what the command does -- **agent**: Agent to use (defaults to "build") -- **model**: Specific model to use for this command - -Create `.opencode/command/code-review.md`: - -```md title=".opencode/command/code-review.md" ---- -description: Code review assistant -agent: build -model: anthropic/claude-3-5-sonnet-20241022 --- -Review the code for best practices and suggest improvements. +### Template + +The `template` option defines the prompt that will be sent to the LLM when the command is executed. + +```json title="opencode.json" +{ + "command": { + "test": { + "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes." + } + } +} ``` ---- - -## Command directory - -Store command files in these locations: - -- `.opencode/command/` - Project-specific commands -- `command/` - Global commands in config directory - -Project commands take precedence over global ones. +This is a **required** config option. --- -## Built-in commands +### Description -opencode includes several built-in commands: +Use the `description` option to provide a brief description of what the command does. -- `/init` - Initialize project and create AGENTS.md -- `/undo` - Revert the last changes -- `/redo` - Restore reverted changes -- `/share` - Share the current conversation -- `/help` - Show available commands and keybinds +```json title="opencode.json" +{ + "command": { + "test": { + "description": "Run tests with coverage" + } + } +} +``` -Use `/help` to see all available commands in your setup. +This is shown as the description in the TUI when you type in the command. + +--- + +### Agent + +Use the `agent` config to optionally specify which [agent](/docs/agents) should execute this command. + +```json title="opencode.json" +{ + "command": { + "review": { + "agent": "plan" + } + } +} +``` + +This is an **optional** config option. If not specified, defaults to "build". + +--- + +### Model + +Use the `model` config to override the default model for this command. + +```json title="opencode.json" +{ + "command": { + "analyze": { + "model": "anthropic/claude-3-5-sonnet-20241022" + } + } +} +``` + +This is an **optional** config option. + +--- + +## Built-in + +opencode includes several built-in commands like `/init`, `/undo`, `/redo`, `/share`, `/help`; [learn more](/docs/tui#commands). + +:::note +Custom commands can override built-in commands. +::: + +If you define a custom command with the same name, it will override the built-in command. diff --git a/packages/web/src/content/docs/docs/config.mdx b/packages/web/src/content/docs/docs/config.mdx index 06eb6ee7d8..045bc596c9 100644 --- a/packages/web/src/content/docs/docs/config.mdx +++ b/packages/web/src/content/docs/docs/config.mdx @@ -152,6 +152,32 @@ By default, sharing is set to manual mode where you need to explicitly share con --- +### Commands + +You can configure custom commands for repetitive tasks through the `command` option. + +```jsonc title="opencode.jsonc" +{ + "$schema": "https://opencode.ai/config.json", + "command": { + "test": { + "template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.", + "description": "Run tests with coverage", + "agent": "build", + "model": "anthropic/claude-3-5-sonnet-20241022" + }, + "component": { + "template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.", + "description": "Create a new component" + } + } +} +``` + +You can also define commands using markdown files in `~/.config/opencode/command/` or `.opencode/command/`. [Learn more here](/docs/commands). + +--- + ### Keybinds You can customize your keybinds through the `keybinds` option. @@ -220,6 +246,11 @@ You can configure permissions to control what AI agents can do in your codebase } ``` +This allows you to configure explicit approval requirements for sensitive operations: + +- `edit` - Controls whether file editing operations require user approval (`"ask"` or `"allow"`) +- `bash` - Controls whether bash commands require user approval (can be `"ask"`/`"allow"` or a pattern map) + [Learn more about permissions here](/docs/permissions). --- @@ -259,13 +290,6 @@ about rules here](/docs/rules). You can disable providers that are loaded automatically through the `disabled_providers` option. This is useful when you want to prevent certain providers from being loaded even if their credentials are available. -The `disabled_providers` option accepts an array of provider IDs. When a provider is disabled: - -- It won't be loaded even if environment variables are set -- It won't be loaded even if API keys are configured through `opencode auth login` -- The provider's models won't appear in the model selection list - - ```json title="opencode.json" { "$schema": "https://opencode.ai/config.json", @@ -273,12 +297,11 @@ The `disabled_providers` option accepts an array of provider IDs. When a provide } ``` -The permissions system allows you to configure explicit approval requirements for sensitive operations: +The `disabled_providers` option accepts an array of provider IDs. When a provider is disabled: -- `edit` - Controls whether file editing operations require user approval (`"ask"` or `"allow"`) -- `bash` - Controls whether bash commands require user approval (can be `"ask"`/`"allow"` or a pattern map) - -[Learn more about permissions here](/docs/permissions). +- It won't be loaded even if environment variables are set. +- It won't be loaded even if API keys are configured through `opencode auth login`. +- The provider's models won't appear in the model selection list. --- diff --git a/packages/web/src/content/docs/docs/tui.mdx b/packages/web/src/content/docs/docs/tui.mdx index a886cd312b..113bad697f 100644 --- a/packages/web/src/content/docs/docs/tui.mdx +++ b/packages/web/src/content/docs/docs/tui.mdx @@ -25,6 +25,12 @@ Once you're in the TUI, you can prompt it with a message. Give me a quick summary of the codebase. ``` +--- + +## File references + +You can reference files in your messages using `@`. This does a fuzzy file search in the current working directory. + :::tip You can also use `@` to reference files in your messages. ::: @@ -33,6 +39,20 @@ You can also use `@` to reference files in your messages. How is auth handled in @packages/functions/src/api/index.ts? ``` +The content of the file is added to the conversation automatically. + +--- + +## Bash commands + +Start a message with `!` to run a shell command. + +```bash frame="none" +!ls -la +``` + +The output of the command is added to the conversation as a tool result. + --- ## Commands @@ -235,18 +255,6 @@ Unshare current session. [Learn more](/docs/share#un-sharing). --- -## Bash commands - -Start a message with `!` to run a shell command. - -```bash frame="none" -!ls -la -``` - -The output of the command is added to the conversation as a tool result. - ---- - ## Editor setup Both the `/editor` and `/export` commands use the editor specified in your `EDITOR` environment variable. @@ -300,6 +308,8 @@ Popular editor options include: - `notepad` - Windows Notepad - `subl` - Sublime Text -:::tip -Some editors need command-line arguments to run in blocking mode. The --wait flag makes the editor process block until closed, which is necessary for opencode to function correctly. +:::note +Some editors like VS Code need to be started with the `--wait` flag. ::: + +Some editors need command-line arguments to run in blocking mode. The `--wait` flag makes the editor process block until closed. From e73a7c23d0c39745507bd969ec8323b22d66bcb0 Mon Sep 17 00:00:00 2001 From: Frank Date: Tue, 26 Aug 2025 16:13:16 -0400 Subject: [PATCH 037/112] Revert "fix(tui): too early" This reverts commit 564418f1ff80fc4d39b864de76f36c8f1eb4fbd4. --- packages/tui/internal/tui/tui.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index e407485350..d1001f7941 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -953,9 +953,9 @@ func (a Model) home() (string, int, int) { ) // Use limit of 4 for vscode, 6 for others - limit := 6 + limit := 4 if util.IsVSCode() { - limit = 4 + limit = 2 } showVscode := util.IsVSCode() @@ -987,6 +987,8 @@ func (a Model) home() (string, int, int) { lines = append(lines, cmds) lines = append(lines, "") lines = append(lines, "") + lines = append(lines, grok) + lines = append(lines, "") mainHeight := lipgloss.Height(strings.Join(lines, "\n")) From eebca580e3e72ccfa6786d388d3164811eb28c9b Mon Sep 17 00:00:00 2001 From: opencode Date: Tue, 26 Aug 2025 20:23:34 +0000 Subject: [PATCH 038/112] release: v0.5.28 --- cloud/app/package.json | 2 +- cloud/core/package.json | 2 +- cloud/function/package.json | 2 +- cloud/web/package.json | 2 +- packages/function/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/sdk/js/src/gen/types.gen.ts | 3 +++ packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 11 files changed, 13 insertions(+), 10 deletions(-) diff --git a/cloud/app/package.json b/cloud/app/package.json index 2030d05416..98eb67ef30 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -5,7 +5,7 @@ "dev": "vinxi dev --host 0.0.0.0", "build": "vinxi build", "start": "vinxi start", - "version": "0.5.27" + "version": "0.5.28" }, "dependencies": { "@ibm/plex": "6.4.1", diff --git a/cloud/core/package.json b/cloud/core/package.json index 2198794a97..0078252d2c 100644 --- a/cloud/core/package.json +++ b/cloud/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/cloud-core", - "version": "0.5.27", + "version": "0.5.28", "private": true, "type": "module", "dependencies": { diff --git a/cloud/function/package.json b/cloud/function/package.json index 8b763de4f9..f61f0a731a 100644 --- a/cloud/function/package.json +++ b/cloud/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-function", - "version": "0.5.27", + "version": "0.5.28", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/cloud/web/package.json b/cloud/web/package.json index 46893f9656..1d0184131d 100644 --- a/cloud/web/package.json +++ b/cloud/web/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-web", - "version": "0.5.27", + "version": "0.5.28", "private": true, "description": "", "type": "module", diff --git a/packages/function/package.json b/packages/function/package.json index 3547ec0c18..f9a29310cf 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/function", - "version": "0.5.27", + "version": "0.5.28", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 29ac2931a3..6f5b6fc577 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "0.5.27", + "version": "0.5.28", "name": "opencode", "type": "module", "private": true, diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 9985b65419..9ef1a2a82d 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "0.5.27", + "version": "0.5.28", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 01fd7938bf..ad54199c3d 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "0.5.27", + "version": "0.5.28", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts index 8e9662ad52..1c4fc5b358 100644 --- a/packages/sdk/js/src/gen/types.gen.ts +++ b/packages/sdk/js/src/gen/types.gen.ts @@ -585,6 +585,9 @@ export type Config = { */ scroll_speed: number } + /** + * Command configuration, see https://opencode.ai/docs/commands + */ command?: { [key: string]: { template: string diff --git a/packages/web/package.json b/packages/web/package.json index e338eae248..a1b55ad4d3 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,7 +1,7 @@ { "name": "@opencode/web", "type": "module", - "version": "0.5.27", + "version": "0.5.28", "scripts": { "dev": "astro dev", "dev:remote": "sst shell --stage=dev --target=Web astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index 82e9c607b4..8a14a27914 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "0.5.27", + "version": "0.5.28", "publisher": "sst-dev", "repository": { "type": "git", From 877855d1ee2abe95f5656113174d893be4d2122a Mon Sep 17 00:00:00 2001 From: Stibbs Date: Wed, 27 Aug 2025 07:27:44 +1000 Subject: [PATCH 039/112] docs: mcp access mgmt instructions (#2087) --- .../web/src/content/docs/docs/mcp-servers.mdx | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/packages/web/src/content/docs/docs/mcp-servers.mdx b/packages/web/src/content/docs/docs/mcp-servers.mdx index 861efc6cd5..207b328b32 100644 --- a/packages/web/src/content/docs/docs/mcp-servers.mdx +++ b/packages/web/src/content/docs/docs/mcp-servers.mdx @@ -91,3 +91,39 @@ Local and remote servers can be used together within the same `mcp` config objec } } } +``` + +--- + +## Granular access management + +If you have a large number of MCP servers you may want to disable them globally +and manage access at the agent level instead. To achieve this: + +1. Configure the MCP server. +2. Disable it as a tool globally. +3. In your [Agent Configuration](/docs/agents#agent-configuration) enable +the MCP server as a tool. + +```json title="opencode.json" +{ + "$schema": "https://opencode.ai/config.json", + "mcp": { + "my-mcp": { + "type": "local", + "command": ["bun", "x", "my-mcp-command"], + "enabled": true + } + }, + "tools": { + "my-mcp*": false + }, + "agent": { + "my-agent": { + "tools": { + "my-mcp*": true + } + } + } +} +``` From 587b8ae7ee7223728e14cc724e4589e3ddb57e87 Mon Sep 17 00:00:00 2001 From: Jay V Date: Tue, 26 Aug 2025 17:30:43 -0400 Subject: [PATCH 040/112] docs: edit --- packages/web/src/content/docs/docs/mcp-servers.mdx | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/web/src/content/docs/docs/mcp-servers.mdx b/packages/web/src/content/docs/docs/mcp-servers.mdx index 207b328b32..0ceeb47a3c 100644 --- a/packages/web/src/content/docs/docs/mcp-servers.mdx +++ b/packages/web/src/content/docs/docs/mcp-servers.mdx @@ -95,17 +95,16 @@ Local and remote servers can be used together within the same `mcp` config objec --- -## Granular access management +## Per agent -If you have a large number of MCP servers you may want to disable them globally -and manage access at the agent level instead. To achieve this: +If you have a large number of MCP servers you may want to only enable them per +agent and disable them globally. To do this: 1. Configure the MCP server. 2. Disable it as a tool globally. -3. In your [Agent Configuration](/docs/agents#agent-configuration) enable -the MCP server as a tool. +3. In your [agent config](/docs/agents#tools) enable the MCP server as a tool. -```json title="opencode.json" +```json title="opencode.json" {11, 14-17} { "$schema": "https://opencode.ai/config.json", "mcp": { From 6233251fc0e163231483dea444c3fbd170035c77 Mon Sep 17 00:00:00 2001 From: spoons-and-mirrors <212802214+spoons-and-mirrors@users.noreply.github.com> Date: Wed, 27 Aug 2025 13:18:26 +0200 Subject: [PATCH 041/112] fix: shimmer cpu cost (#2084) --- packages/tui/internal/util/shimmer.go | 75 +++++++++++++-------------- 1 file changed, 35 insertions(+), 40 deletions(-) diff --git a/packages/tui/internal/util/shimmer.go b/packages/tui/internal/util/shimmer.go index 88654ff074..b6ba0db64e 100644 --- a/packages/tui/internal/util/shimmer.go +++ b/packages/tui/internal/util/shimmer.go @@ -11,7 +11,10 @@ import ( "github.com/sst/opencode/internal/styles" ) -var shimmerStart = time.Now() +var ( + shimmerStart = time.Now() + trueColorSupport = hasTrueColor() +) // Shimmer renders text with a moving foreground highlight. // bg is the background color, dim is the base text color, bright is the highlight color. @@ -32,7 +35,7 @@ func Shimmer(s string, bg compat.AdaptiveColor, _ compat.AdaptiveColor, _ compat elapsed := time.Since(shimmerStart).Seconds() pos := (math.Mod(elapsed, sweep) / sweep) * period - half := 4.0 + half := 2.0 type seg struct { useHex bool @@ -41,60 +44,52 @@ func Shimmer(s string, bg compat.AdaptiveColor, _ compat.AdaptiveColor, _ compat faint bool text string } - var segs []seg + segs := make([]seg, 0, n/4) - useHex := hasTrueColor() + useHex := trueColorSupport for i, r := range runes { ip := float64(i + pad) dist := math.Abs(ip - pos) - t := 0.0 - if dist <= half { - x := math.Pi * (dist / half) - t = 0.5 * (1.0 + math.Cos(x)) - } - // Cosine brightness: base + amp*t (quantized for grouping) - base := 0.55 - amp := 0.45 - brightness := base - if t > 0 { - brightness = base + amp*t - } - lvl := int(math.Round(brightness * 255.0)) - if !useHex { - step := 24 // ~11 steps across range for non-truecolor - lvl = int(math.Round(float64(lvl)/float64(step))) * step - } - bold := lvl >= 208 - faint := lvl <= 128 - - // truecolor if possible; else fallback to modifiers only + bold := false + faint := true hex := "" - if useHex { - if lvl < 0 { - lvl = 0 + + if dist <= half { + // Simple 3-level brightness based on distance + if dist <= half/3 { + // Center: brightest + bold = true + faint = false + if useHex { + hex = "#ffffff" + } + } else { + // Edge: medium bright + bold = false + faint = false + if useHex { + hex = "#cccccc" + } } - if lvl > 255 { - lvl = 255 - } - hex = rgbHex(lvl, lvl, lvl) } - if len(segs) == 0 { + if len(segs) == 0 || + segs[len(segs)-1].useHex != useHex || + segs[len(segs)-1].hex != hex || + segs[len(segs)-1].bold != bold || + segs[len(segs)-1].faint != faint { segs = append(segs, seg{useHex: useHex, hex: hex, bold: bold, faint: faint, text: string(r)}) } else { - last := &segs[len(segs)-1] - if last.useHex == useHex && last.hex == hex && last.bold == bold && last.faint == faint { - last.text += string(r) - } else { - segs = append(segs, seg{useHex: useHex, hex: hex, bold: bold, faint: faint, text: string(r)}) - } + segs[len(segs)-1].text += string(r) } } + baseStyle := styles.NewStyle().Background(bg) var b strings.Builder + b.Grow(len(s) * 2) for _, g := range segs { - st := styles.NewStyle().Background(bg) + st := baseStyle if g.useHex && g.hex != "" { c := compat.AdaptiveColor{Dark: lipgloss.Color(g.hex), Light: lipgloss.Color(g.hex)} st = st.Foreground(c) From 3606775b79cac821bf01bd7d9dcc32a4ed821cb5 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Wed, 27 Aug 2025 12:04:25 +0000 Subject: [PATCH 042/112] ignore: update download stats 2025-08-27 --- STATS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/STATS.md b/STATS.md index 28f665af3f..918bf64585 100644 --- a/STATS.md +++ b/STATS.md @@ -60,3 +60,4 @@ | 2025-08-24 | 232,098 (+3,093) | 201,157 (+1,919) | 433,255 (+5,012) | | 2025-08-25 | 236,607 (+4,509) | 202,650 (+1,493) | 439,257 (+6,002) | | 2025-08-26 | 242,783 (+6,176) | 205,242 (+2,592) | 448,025 (+8,768) | +| 2025-08-27 | 248,409 (+5,626) | 205,242 (+0) | 453,651 (+5,626) | From 5c17ee52c5ad82dd759a777eb3ab613a00d27ddb Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 27 Aug 2025 09:41:51 -0500 Subject: [PATCH 043/112] docs: document anthropic thinking budgets (#2243) --- packages/web/src/content/docs/docs/models.mdx | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/packages/web/src/content/docs/docs/models.mdx b/packages/web/src/content/docs/docs/models.mdx index e06ab0eab6..efebc5cb45 100644 --- a/packages/web/src/content/docs/docs/models.mdx +++ b/packages/web/src/content/docs/docs/models.mdx @@ -68,7 +68,7 @@ If you've configured a [custom provider](/docs/providers#custom), the `provider_ You can globally configure a model's options through the config. -```jsonc title="opencode.jsonc" {7-11} +```jsonc title="opencode.jsonc" {7-12,19-24} { "$schema": "https://opencode.ai/config.json", "provider": { @@ -79,16 +79,28 @@ You can globally configure a model's options through the config. "reasoningEffort": "high", "textVerbosity": "low", "reasoningSummary": "auto", - "include": ["reasoning.encrypted_content"] - } - } - } - } - } + "include": ["reasoning.encrypted_content"], + }, + }, + }, + }, + "anthropic": { + "models": { + "claude-sonnet-4-20250514": { + "options": { + "thinking": { + "type": "enabled", + "budgetTokens": 16000, + }, + }, + }, + }, + }, + }, } ``` -Here we are setting global options for the `gpt-5` model when used through the `openai` provider. +Here we're configuring global settings for two models: `gpt-5` when accessed via the `openai` provider, and `claude-sonnet-4-20250514` when accessed via the `anthropic` provider. You can also configure these options for any agents that you are using. The agent config overrides any global options here. [Learn more](/docs/agents/#additional). From 0fbd7c84fd9f93f46eea2eec241a6fde07ce0d59 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Wed, 27 Aug 2025 12:18:09 -0400 Subject: [PATCH 044/112] sdk update --- bun.lock | 23 +- packages/plugin/package.json | 1 - packages/sdk/js/package.json | 2 +- packages/sdk/js/src/client.ts | 4 +- .../gen/client/{client.ts => client.gen.ts} | 59 +++-- packages/sdk/js/src/gen/client/index.ts | 21 +- .../src/gen/client/{types.ts => types.gen.ts} | 67 ++++-- .../src/gen/client/{utils.ts => utils.gen.ts} | 142 +++--------- .../js/src/gen/core/{auth.ts => auth.gen.ts} | 2 + ...odySerializer.ts => bodySerializer.gen.ts} | 6 +- .../src/gen/core/{params.ts => params.gen.ts} | 2 + ...athSerializer.ts => pathSerializer.gen.ts} | 2 + .../js/src/gen/core/serverSentEvents.gen.ts | 210 ++++++++++++++++++ .../src/gen/core/{types.ts => types.gen.ts} | 6 +- packages/sdk/js/src/gen/core/utils.gen.ts | 109 +++++++++ packages/sdk/js/src/gen/sdk.gen.ts | 2 +- 16 files changed, 483 insertions(+), 175 deletions(-) rename packages/sdk/js/src/gen/client/{client.ts => client.gen.ts} (73%) rename packages/sdk/js/src/gen/client/{types.ts => types.gen.ts} (69%) rename packages/sdk/js/src/gen/client/{utils.ts => utils.gen.ts} (72%) rename packages/sdk/js/src/gen/core/{auth.ts => auth.gen.ts} (93%) rename packages/sdk/js/src/gen/core/{bodySerializer.ts => bodySerializer.gen.ts} (92%) rename packages/sdk/js/src/gen/core/{params.ts => params.gen.ts} (98%) rename packages/sdk/js/src/gen/core/{pathSerializer.ts => pathSerializer.gen.ts} (98%) create mode 100644 packages/sdk/js/src/gen/core/serverSentEvents.gen.ts rename packages/sdk/js/src/gen/core/{types.ts => types.gen.ts} (95%) create mode 100644 packages/sdk/js/src/gen/core/utils.gen.ts diff --git a/bun.lock b/bun.lock index 2cd807f317..62b2e88fc4 100644 --- a/bun.lock +++ b/bun.lock @@ -26,7 +26,7 @@ }, "cloud/core": { "name": "@opencode/cloud-core", - "version": "0.5.15", + "version": "0.5.28", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "drizzle-orm": "0.41.0", @@ -40,7 +40,7 @@ }, "cloud/function": { "name": "@opencode/cloud-function", - "version": "0.5.15", + "version": "0.5.28", "dependencies": { "@ai-sdk/anthropic": "2.0.0", "@ai-sdk/openai": "2.0.2", @@ -60,7 +60,7 @@ }, "cloud/web": { "name": "@opencode/cloud-web", - "version": "0.5.15", + "version": "0.5.28", "dependencies": { "@kobalte/core": "0.13.9", "@openauthjs/solid": "0.0.0-20250322224806", @@ -79,7 +79,7 @@ }, "packages/function": { "name": "@opencode/function", - "version": "0.5.15", + "version": "0.5.28", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "22.0.0", @@ -94,7 +94,7 @@ }, "packages/opencode": { "name": "opencode", - "version": "0.5.15", + "version": "0.5.28", "bin": { "opencode": "./bin/opencode", }, @@ -144,21 +144,20 @@ }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "0.5.15", + "version": "0.5.28", "dependencies": { "@opencode-ai/sdk": "workspace:*", }, "devDependencies": { - "@hey-api/openapi-ts": "0.81.0", "@tsconfig/node22": "catalog:", "typescript": "catalog:", }, }, "packages/sdk/js": { "name": "@opencode-ai/sdk", - "version": "0.5.15", + "version": "0.5.28", "dependencies": { - "@hey-api/openapi-ts": "0.80.1", + "@hey-api/openapi-ts": "0.81.0", }, "devDependencies": { "@hey-api/openapi-ts": "0.80.1", @@ -168,7 +167,7 @@ }, "packages/web": { "name": "@opencode/web", - "version": "0.5.15", + "version": "0.5.28", "dependencies": { "@astrojs/cloudflare": "12.6.3", "@astrojs/markdown-remark": "6.3.1", @@ -495,7 +494,7 @@ "@hey-api/json-schema-ref-parser": ["@hey-api/json-schema-ref-parser@1.0.6", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0", "lodash": "^4.17.21" } }, "sha512-yktiFZoWPtEW8QKS65eqKwA5MTKp88CyiL8q72WynrBs/73SAaxlSWlA2zW/DZlywZ5hX1OYzrCC0wFdvO9c2w=="], - "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="], + "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.80.1", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-AC478kg36vmmrseLZNFonZ/cmXXmDzW5yWz4PVg1S8ebJsRtVRJ/QU+mtnXfzf9avN2P0pz/AO4WAe4jyFY2gA=="], "@hono/zod-validator": ["@hono/zod-validator@0.4.2", "", { "peerDependencies": { "hono": ">=3.9.0", "zod": "^3.19.1" } }, "sha512-1rrlBg+EpDPhzOV4hT9pxr5+xDVmKuz6YJl+la7VCwK6ass5ldyKm5fD+umJdV2zhHD6jROoCCv8NbTwyfhT0g=="], @@ -3211,7 +3210,7 @@ "@openauthjs/solid/@openauthjs/openauth": ["@openauthjs/openauth@0.4.2", "", { "dependencies": { "@standard-schema/spec": "1.0.0-beta.3", "aws4fetch": "1.0.20", "jose": "5.9.6" }, "peerDependencies": { "arctic": "^2.2.2", "hono": "^4.0.0" } }, "sha512-8+Bia559iffrZXfQ0LWXrVVVriochS88pDtB8indyQ1S+40MQgDBu8aBzKt+fgSrTmoQGCTT+wlOXgbjc9qIcw=="], - "@opencode-ai/sdk/@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.80.1", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-AC478kg36vmmrseLZNFonZ/cmXXmDzW5yWz4PVg1S8ebJsRtVRJ/QU+mtnXfzf9avN2P0pz/AO4WAe4jyFY2gA=="], + "@opencode-ai/sdk/@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="], "@opencode/cloud-web/solid-js": ["solid-js@1.9.5", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "^1.1.0", "seroval-plugins": "^1.1.0" } }, "sha512-ogI3DaFcyn6UhYhrgcyRAMbu/buBJitYQASZz5WzfQVPP10RD2AbCoRZ517psnezrasyCbWzIxZ6kVqet768xw=="], diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 9ef1a2a82d..887b0a735c 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -19,7 +19,6 @@ "@opencode-ai/sdk": "workspace:*" }, "devDependencies": { - "@hey-api/openapi-ts": "0.81.0", "@tsconfig/node22": "catalog:", "typescript": "catalog:" } diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index ad54199c3d..3f9815017f 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -29,6 +29,6 @@ "@tsconfig/node22": "catalog:" }, "dependencies": { - "@hey-api/openapi-ts": "0.80.1" + "@hey-api/openapi-ts": "0.81.0" } } diff --git a/packages/sdk/js/src/client.ts b/packages/sdk/js/src/client.ts index 8346fd8a21..29b9de9062 100644 --- a/packages/sdk/js/src/client.ts +++ b/packages/sdk/js/src/client.ts @@ -1,8 +1,8 @@ export * from "./gen/types.gen.js" export { type Config as OpencodeClientConfig, OpencodeClient } -import { createClient } from "./gen/client/client.js" -import { type Config } from "./gen/client/types.js" +import { createClient } from "./gen/client/client.gen.js" +import { type Config } from "./gen/client/types.gen.js" import { OpencodeClient } from "./gen/sdk.gen.js" export function createOpencodeClient(config?: Config) { diff --git a/packages/sdk/js/src/gen/client/client.ts b/packages/sdk/js/src/gen/client/client.gen.ts similarity index 73% rename from packages/sdk/js/src/gen/client/client.ts rename to packages/sdk/js/src/gen/client/client.gen.ts index 46a62694c7..34a8d0bece 100644 --- a/packages/sdk/js/src/gen/client/client.ts +++ b/packages/sdk/js/src/gen/client/client.gen.ts @@ -1,4 +1,7 @@ -import type { Client, Config, RequestOptions } from "./types.js" +// This file is auto-generated by @hey-api/openapi-ts + +import { createSseClient } from "../core/serverSentEvents.gen.js" +import type { Client, Config, RequestOptions, ResolvedRequestOptions } from "./types.gen.js" import { buildUrl, createConfig, @@ -7,7 +10,7 @@ import { mergeConfigs, mergeHeaders, setAuthParams, -} from "./utils.js" +} from "./utils.gen.js" type ReqInit = Omit & { body?: any @@ -24,14 +27,15 @@ export const createClient = (config: Config = {}): Client => { return getConfig() } - const interceptors = createInterceptors() + const interceptors = createInterceptors() - const request: Client["request"] = async (options) => { + const beforeRequest = async (options: RequestOptions) => { const opts = { ..._config, ...options, fetch: options.fetch ?? _config.fetch ?? globalThis.fetch, headers: mergeHeaders(_config.headers, options.headers), + serializedBody: undefined, } if (opts.security) { @@ -46,18 +50,26 @@ export const createClient = (config: Config = {}): Client => { } if (opts.body && opts.bodySerializer) { - opts.body = opts.bodySerializer(opts.body) + opts.serializedBody = opts.bodySerializer(opts.body) } // remove Content-Type header if body is empty to avoid sending invalid requests - if (opts.body === undefined || opts.body === "") { + if (opts.serializedBody === undefined || opts.serializedBody === "") { opts.headers.delete("Content-Type") } const url = buildUrl(opts) + + return { opts, url } + } + + const request: Client["request"] = async (options) => { + // @ts-expect-error + const { opts, url } = await beforeRequest(options) const requestInit: ReqInit = { redirect: "follow", ...opts, + body: opts.serializedBody, } let request = new Request(url, requestInit) @@ -166,20 +178,35 @@ export const createClient = (config: Config = {}): Client => { } } + const makeMethod = (method: Required["method"]) => { + const fn = (options: RequestOptions) => request({ ...options, method }) + fn.sse = async (options: RequestOptions) => { + const { opts, url } = await beforeRequest(options) + return createSseClient({ + ...opts, + body: opts.body as BodyInit | null | undefined, + headers: opts.headers as unknown as Record, + method, + url, + }) + } + return fn + } + return { buildUrl, - connect: (options) => request({ ...options, method: "CONNECT" }), - delete: (options) => request({ ...options, method: "DELETE" }), - get: (options) => request({ ...options, method: "GET" }), + connect: makeMethod("CONNECT"), + delete: makeMethod("DELETE"), + get: makeMethod("GET"), getConfig, - head: (options) => request({ ...options, method: "HEAD" }), + head: makeMethod("HEAD"), interceptors, - options: (options) => request({ ...options, method: "OPTIONS" }), - patch: (options) => request({ ...options, method: "PATCH" }), - post: (options) => request({ ...options, method: "POST" }), - put: (options) => request({ ...options, method: "PUT" }), + options: makeMethod("OPTIONS"), + patch: makeMethod("PATCH"), + post: makeMethod("POST"), + put: makeMethod("PUT"), request, setConfig, - trace: (options) => request({ ...options, method: "TRACE" }), - } + trace: makeMethod("TRACE"), + } as Client } diff --git a/packages/sdk/js/src/gen/client/index.ts b/packages/sdk/js/src/gen/client/index.ts index ce89a34ccd..06f21e3d80 100644 --- a/packages/sdk/js/src/gen/client/index.ts +++ b/packages/sdk/js/src/gen/client/index.ts @@ -1,8 +1,14 @@ -export type { Auth } from "../core/auth.js" -export type { QuerySerializerOptions } from "../core/bodySerializer.js" -export { formDataBodySerializer, jsonBodySerializer, urlSearchParamsBodySerializer } from "../core/bodySerializer.js" -export { buildClientParams } from "../core/params.js" -export { createClient } from "./client.js" +// This file is auto-generated by @hey-api/openapi-ts + +export type { Auth } from "../core/auth.gen.js" +export type { QuerySerializerOptions } from "../core/bodySerializer.gen.js" +export { + formDataBodySerializer, + jsonBodySerializer, + urlSearchParamsBodySerializer, +} from "../core/bodySerializer.gen.js" +export { buildClientParams } from "../core/params.gen.js" +export { createClient } from "./client.gen.js" export type { Client, ClientOptions, @@ -12,7 +18,8 @@ export type { OptionsLegacyParser, RequestOptions, RequestResult, + ResolvedRequestOptions, ResponseStyle, TDataShape, -} from "./types.js" -export { createConfig, mergeHeaders } from "./utils.js" +} from "./types.gen.js" +export { createConfig, mergeHeaders } from "./utils.gen.js" diff --git a/packages/sdk/js/src/gen/client/types.ts b/packages/sdk/js/src/gen/client/types.gen.ts similarity index 69% rename from packages/sdk/js/src/gen/client/types.ts rename to packages/sdk/js/src/gen/client/types.gen.ts index f3b116bae5..db8e544cfd 100644 --- a/packages/sdk/js/src/gen/client/types.ts +++ b/packages/sdk/js/src/gen/client/types.gen.ts @@ -1,6 +1,9 @@ -import type { Auth } from "../core/auth.js" -import type { Client as CoreClient, Config as CoreConfig } from "../core/types.js" -import type { Middleware } from "./utils.js" +// This file is auto-generated by @hey-api/openapi-ts + +import type { Auth } from "../core/auth.gen.js" +import type { ServerSentEventsOptions, ServerSentEventsResult } from "../core/serverSentEvents.gen.js" +import type { Client as CoreClient, Config as CoreConfig } from "../core/types.gen.js" +import type { Middleware } from "./utils.gen.js" export type ResponseStyle = "data" | "fields" @@ -49,13 +52,18 @@ export interface Config } export interface RequestOptions< + TData = unknown, TResponseStyle extends ResponseStyle = "fields", ThrowOnError extends boolean = boolean, Url extends string = string, > extends Config<{ - responseStyle: TResponseStyle - throwOnError: ThrowOnError - }> { + responseStyle: TResponseStyle + throwOnError: ThrowOnError + }>, + Pick< + ServerSentEventsOptions, + "onSseError" | "onSseEvent" | "sseDefaultRetryDelay" | "sseMaxRetryAttempts" | "sseMaxRetryDelay" + > { /** * Any body that you want to add to your request. * @@ -71,6 +79,14 @@ export interface RequestOptions< url: Url } +export interface ResolvedRequestOptions< + TResponseStyle extends ResponseStyle = "fields", + ThrowOnError extends boolean = boolean, + Url extends string = string, +> extends RequestOptions { + serializedBody?: string +} + export type RequestResult< TData = unknown, TError = unknown, @@ -112,23 +128,36 @@ export interface ClientOptions { throwOnError?: boolean } -type MethodFn = < +type MethodFnBase = < TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields", >( - options: Omit, "method">, + options: Omit, "method">, ) => RequestResult +type MethodFnServerSentEvents = < + TData = unknown, + TError = unknown, + ThrowOnError extends boolean = false, + TResponseStyle extends ResponseStyle = "fields", +>( + options: Omit, "method">, +) => Promise> + +type MethodFn = MethodFnBase & { + sse: MethodFnServerSentEvents +} + type RequestFn = < TData = unknown, TError = unknown, ThrowOnError extends boolean = false, TResponseStyle extends ResponseStyle = "fields", >( - options: Omit, "method"> & - Pick>, "method">, + options: Omit, "method"> & + Pick>, "method">, ) => RequestResult type BuildUrlFn = < @@ -143,7 +172,7 @@ type BuildUrlFn = < ) => string export type Client = CoreClient & { - interceptors: Middleware + interceptors: Middleware } /** @@ -171,8 +200,10 @@ type OmitKeys = Pick> export type Options< TData extends TDataShape = TDataShape, ThrowOnError extends boolean = boolean, + TResponse = unknown, TResponseStyle extends ResponseStyle = "fields", -> = OmitKeys, "body" | "path" | "query" | "url"> & Omit +> = OmitKeys, "body" | "path" | "query" | "url"> & + Omit export type OptionsLegacyParser< TData = unknown, @@ -180,12 +211,12 @@ export type OptionsLegacyParser< TResponseStyle extends ResponseStyle = "fields", > = TData extends { body?: any } ? TData extends { headers?: any } - ? OmitKeys, "body" | "headers" | "url"> & TData - : OmitKeys, "body" | "url"> & + ? OmitKeys, "body" | "headers" | "url"> & TData + : OmitKeys, "body" | "url"> & TData & - Pick, "headers"> + Pick, "headers"> : TData extends { headers?: any } - ? OmitKeys, "headers" | "url"> & + ? OmitKeys, "headers" | "url"> & TData & - Pick, "body"> - : OmitKeys, "url"> & TData + Pick, "body"> + : OmitKeys, "url"> & TData diff --git a/packages/sdk/js/src/gen/client/utils.ts b/packages/sdk/js/src/gen/client/utils.gen.ts similarity index 72% rename from packages/sdk/js/src/gen/client/utils.ts rename to packages/sdk/js/src/gen/client/utils.gen.ts index 84648c8557..209bfbe8e6 100644 --- a/packages/sdk/js/src/gen/client/utils.ts +++ b/packages/sdk/js/src/gen/client/utils.gen.ts @@ -1,84 +1,11 @@ -import { getAuthToken } from "../core/auth.js" -import type { QuerySerializer, QuerySerializerOptions } from "../core/bodySerializer.js" -import { jsonBodySerializer } from "../core/bodySerializer.js" -import { serializeArrayParam, serializeObjectParam, serializePrimitiveParam } from "../core/pathSerializer.js" -import type { Client, ClientOptions, Config, RequestOptions } from "./types.js" +// This file is auto-generated by @hey-api/openapi-ts -interface PathSerializer { - path: Record - url: string -} - -const PATH_PARAM_RE = /\{[^{}]+\}/g - -type ArrayStyle = "form" | "spaceDelimited" | "pipeDelimited" -type MatrixStyle = "label" | "matrix" | "simple" -type ArraySeparatorStyle = ArrayStyle | MatrixStyle - -const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { - let url = _url - const matches = _url.match(PATH_PARAM_RE) - if (matches) { - for (const match of matches) { - let explode = false - let name = match.substring(1, match.length - 1) - let style: ArraySeparatorStyle = "simple" - - if (name.endsWith("*")) { - explode = true - name = name.substring(0, name.length - 1) - } - - if (name.startsWith(".")) { - name = name.substring(1) - style = "label" - } else if (name.startsWith(";")) { - name = name.substring(1) - style = "matrix" - } - - const value = path[name] - - if (value === undefined || value === null) { - continue - } - - if (Array.isArray(value)) { - url = url.replace(match, serializeArrayParam({ explode, name, style, value })) - continue - } - - if (typeof value === "object") { - url = url.replace( - match, - serializeObjectParam({ - explode, - name, - style, - value: value as Record, - valueOnly: true, - }), - ) - continue - } - - if (style === "matrix") { - url = url.replace( - match, - `;${serializePrimitiveParam({ - name, - value: value as string, - })}`, - ) - continue - } - - const replaceValue = encodeURIComponent(style === "label" ? `.${value as string}` : (value as string)) - url = url.replace(match, replaceValue) - } - } - return url -} +import { getAuthToken } from "../core/auth.gen.js" +import type { QuerySerializerOptions } from "../core/bodySerializer.gen.js" +import { jsonBodySerializer } from "../core/bodySerializer.gen.js" +import { serializeArrayParam, serializeObjectParam, serializePrimitiveParam } from "../core/pathSerializer.gen.js" +import { getUrl } from "../core/utils.gen.js" +import type { Client, ClientOptions, Config, RequestOptions } from "./types.gen.js" export const createQuerySerializer = ({ allowReserved, array, object }: QuerySerializerOptions = {}) => { const querySerializer = (queryParams: T) => { @@ -161,6 +88,21 @@ export const getParseAs = (contentType: string | null): Exclude & { + headers: Headers + }, + name?: string, +): boolean => { + if (!name) { + return false + } + if (options.headers.has(name) || options.query?.[name] || options.headers.get("Cookie")?.includes(`${name}=`)) { + return true + } + return false +} + export const setAuthParams = async ({ security, ...options @@ -169,6 +111,10 @@ export const setAuthParams = async ({ headers: Headers }) => { for (const auth of security) { + if (checkForExistence(options, auth.name)) { + continue + } + const token = await getAuthToken(auth, options.auth) if (!token) { @@ -192,13 +138,11 @@ export const setAuthParams = async ({ options.headers.set(name, token) break } - - return } } -export const buildUrl: Client["buildUrl"] = (options) => { - const url = getUrl({ +export const buildUrl: Client["buildUrl"] = (options) => + getUrl({ baseUrl: options.baseUrl as string, path: options.path, query: options.query, @@ -208,36 +152,6 @@ export const buildUrl: Client["buildUrl"] = (options) => { : createQuerySerializer(options.querySerializer), url: options.url, }) - return url -} - -export const getUrl = ({ - baseUrl, - path, - query, - querySerializer, - url: _url, -}: { - baseUrl?: string - path?: Record - query?: Record - querySerializer: QuerySerializer - url: string -}) => { - const pathUrl = _url.startsWith("/") ? _url : `/${_url}` - let url = (baseUrl ?? "") + pathUrl - if (path) { - url = defaultPathSerializer({ path, url }) - } - let search = query ? querySerializer(query) : "" - if (search.startsWith("?")) { - search = search.substring(1) - } - if (search) { - url += `?${search}` - } - return url -} export const mergeConfigs = (a: Config, b: Config): Config => { const config = { ...a, ...b } diff --git a/packages/sdk/js/src/gen/core/auth.ts b/packages/sdk/js/src/gen/core/auth.gen.ts similarity index 93% rename from packages/sdk/js/src/gen/core/auth.ts rename to packages/sdk/js/src/gen/core/auth.gen.ts index e496d4557a..bc7b230f44 100644 --- a/packages/sdk/js/src/gen/core/auth.ts +++ b/packages/sdk/js/src/gen/core/auth.gen.ts @@ -1,3 +1,5 @@ +// This file is auto-generated by @hey-api/openapi-ts + export type AuthToken = string | undefined export interface Auth { diff --git a/packages/sdk/js/src/gen/core/bodySerializer.ts b/packages/sdk/js/src/gen/core/bodySerializer.gen.ts similarity index 92% rename from packages/sdk/js/src/gen/core/bodySerializer.ts rename to packages/sdk/js/src/gen/core/bodySerializer.gen.ts index 8a4a13410e..0660616052 100644 --- a/packages/sdk/js/src/gen/core/bodySerializer.ts +++ b/packages/sdk/js/src/gen/core/bodySerializer.gen.ts @@ -1,4 +1,6 @@ -import type { ArrayStyle, ObjectStyle, SerializerOptions } from "./pathSerializer.js" +// This file is auto-generated by @hey-api/openapi-ts + +import type { ArrayStyle, ObjectStyle, SerializerOptions } from "./pathSerializer.gen.js" export type QuerySerializer = (query: Record) => string @@ -13,6 +15,8 @@ export interface QuerySerializerOptions { const serializeFormDataPair = (data: FormData, key: string, value: unknown): void => { if (typeof value === "string" || value instanceof Blob) { data.append(key, value) + } else if (value instanceof Date) { + data.append(key, value.toISOString()) } else { data.append(key, JSON.stringify(value)) } diff --git a/packages/sdk/js/src/gen/core/params.ts b/packages/sdk/js/src/gen/core/params.gen.ts similarity index 98% rename from packages/sdk/js/src/gen/core/params.ts rename to packages/sdk/js/src/gen/core/params.gen.ts index 0a09619d10..68ad1a778e 100644 --- a/packages/sdk/js/src/gen/core/params.ts +++ b/packages/sdk/js/src/gen/core/params.gen.ts @@ -1,3 +1,5 @@ +// This file is auto-generated by @hey-api/openapi-ts + type Slot = "body" | "headers" | "path" | "query" export type Field = diff --git a/packages/sdk/js/src/gen/core/pathSerializer.ts b/packages/sdk/js/src/gen/core/pathSerializer.gen.ts similarity index 98% rename from packages/sdk/js/src/gen/core/pathSerializer.ts rename to packages/sdk/js/src/gen/core/pathSerializer.gen.ts index 1e27c8d185..96be3bc5a3 100644 --- a/packages/sdk/js/src/gen/core/pathSerializer.ts +++ b/packages/sdk/js/src/gen/core/pathSerializer.gen.ts @@ -1,3 +1,5 @@ +// This file is auto-generated by @hey-api/openapi-ts + interface SerializeOptions extends SerializePrimitiveOptions, SerializerOptions {} interface SerializePrimitiveOptions { diff --git a/packages/sdk/js/src/gen/core/serverSentEvents.gen.ts b/packages/sdk/js/src/gen/core/serverSentEvents.gen.ts new file mode 100644 index 0000000000..8f7fac549d --- /dev/null +++ b/packages/sdk/js/src/gen/core/serverSentEvents.gen.ts @@ -0,0 +1,210 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { Config } from "./types.gen.js" + +export type ServerSentEventsOptions = Omit & + Pick & { + /** + * Callback invoked when a network or parsing error occurs during streaming. + * + * This option applies only if the endpoint returns a stream of events. + * + * @param error The error that occurred. + */ + onSseError?: (error: unknown) => void + /** + * Callback invoked when an event is streamed from the server. + * + * This option applies only if the endpoint returns a stream of events. + * + * @param event Event streamed from the server. + * @returns Nothing (void). + */ + onSseEvent?: (event: StreamEvent) => void + /** + * Default retry delay in milliseconds. + * + * This option applies only if the endpoint returns a stream of events. + * + * @default 3000 + */ + sseDefaultRetryDelay?: number + /** + * Maximum number of retry attempts before giving up. + */ + sseMaxRetryAttempts?: number + /** + * Maximum retry delay in milliseconds. + * + * Applies only when exponential backoff is used. + * + * This option applies only if the endpoint returns a stream of events. + * + * @default 30000 + */ + sseMaxRetryDelay?: number + /** + * Optional sleep function for retry backoff. + * + * Defaults to using `setTimeout`. + */ + sseSleepFn?: (ms: number) => Promise + url: string + } + +export interface StreamEvent { + data: TData + event?: string + id?: string + retry?: number +} + +export type ServerSentEventsResult = { + stream: AsyncGenerator ? TData[keyof TData] : TData, TReturn, TNext> +} + +export const createSseClient = ({ + onSseError, + onSseEvent, + responseTransformer, + responseValidator, + sseDefaultRetryDelay, + sseMaxRetryAttempts, + sseMaxRetryDelay, + sseSleepFn, + url, + ...options +}: ServerSentEventsOptions): ServerSentEventsResult => { + let lastEventId: string | undefined + + const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms))) + + const createStream = async function* () { + let retryDelay: number = sseDefaultRetryDelay ?? 3000 + let attempt = 0 + const signal = options.signal ?? new AbortController().signal + + while (true) { + if (signal.aborted) break + + attempt++ + + const headers = + options.headers instanceof Headers + ? options.headers + : new Headers(options.headers as Record | undefined) + + if (lastEventId !== undefined) { + headers.set("Last-Event-ID", lastEventId) + } + + try { + const response = await fetch(url, { ...options, headers, signal }) + + if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`) + + if (!response.body) throw new Error("No body in SSE response") + + const reader = response.body.pipeThrough(new TextDecoderStream()).getReader() + + let buffer = "" + + const abortHandler = () => { + try { + reader.cancel() + } catch { + // noop + } + } + + signal.addEventListener("abort", abortHandler) + + try { + while (true) { + const { done, value } = await reader.read() + if (done) break + buffer += value + + const chunks = buffer.split("\n\n") + buffer = chunks.pop() ?? "" + + for (const chunk of chunks) { + const lines = chunk.split("\n") + const dataLines: Array = [] + let eventName: string | undefined + + for (const line of lines) { + if (line.startsWith("data:")) { + dataLines.push(line.replace(/^data:\s*/, "")) + } else if (line.startsWith("event:")) { + eventName = line.replace(/^event:\s*/, "") + } else if (line.startsWith("id:")) { + lastEventId = line.replace(/^id:\s*/, "") + } else if (line.startsWith("retry:")) { + const parsed = Number.parseInt(line.replace(/^retry:\s*/, ""), 10) + if (!Number.isNaN(parsed)) { + retryDelay = parsed + } + } + } + + let data: unknown + let parsedJson = false + + if (dataLines.length) { + const rawData = dataLines.join("\n") + try { + data = JSON.parse(rawData) + parsedJson = true + } catch { + data = rawData + } + } + + if (parsedJson) { + if (responseValidator) { + await responseValidator(data) + } + + if (responseTransformer) { + data = await responseTransformer(data) + } + } + + onSseEvent?.({ + data, + event: eventName, + id: lastEventId, + retry: retryDelay, + }) + + if (dataLines.length) { + yield data as any + } + } + } + } finally { + signal.removeEventListener("abort", abortHandler) + reader.releaseLock() + } + + break // exit loop on normal completion + } catch (error) { + // connection failed or aborted; retry after delay + onSseError?.(error) + + if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) { + break // stop after firing error + } + + // exponential backoff: double retry each attempt, cap at 30s + const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000) + await sleep(backoff) + } + } + } + + const stream = createStream() + + return { stream } +} diff --git a/packages/sdk/js/src/gen/core/types.ts b/packages/sdk/js/src/gen/core/types.gen.ts similarity index 95% rename from packages/sdk/js/src/gen/core/types.ts rename to packages/sdk/js/src/gen/core/types.gen.ts index 3a12e74c69..16408b2d09 100644 --- a/packages/sdk/js/src/gen/core/types.ts +++ b/packages/sdk/js/src/gen/core/types.gen.ts @@ -1,5 +1,7 @@ -import type { Auth, AuthToken } from "./auth.js" -import type { BodySerializer, QuerySerializer, QuerySerializerOptions } from "./bodySerializer.js" +// This file is auto-generated by @hey-api/openapi-ts + +import type { Auth, AuthToken } from "./auth.gen.js" +import type { BodySerializer, QuerySerializer, QuerySerializerOptions } from "./bodySerializer.gen.js" export interface Client { /** diff --git a/packages/sdk/js/src/gen/core/utils.gen.ts b/packages/sdk/js/src/gen/core/utils.gen.ts new file mode 100644 index 0000000000..be18c608a5 --- /dev/null +++ b/packages/sdk/js/src/gen/core/utils.gen.ts @@ -0,0 +1,109 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { QuerySerializer } from "./bodySerializer.gen.js" +import { + type ArraySeparatorStyle, + serializeArrayParam, + serializeObjectParam, + serializePrimitiveParam, +} from "./pathSerializer.gen.js" + +export interface PathSerializer { + path: Record + url: string +} + +export const PATH_PARAM_RE = /\{[^{}]+\}/g + +export const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { + let url = _url + const matches = _url.match(PATH_PARAM_RE) + if (matches) { + for (const match of matches) { + let explode = false + let name = match.substring(1, match.length - 1) + let style: ArraySeparatorStyle = "simple" + + if (name.endsWith("*")) { + explode = true + name = name.substring(0, name.length - 1) + } + + if (name.startsWith(".")) { + name = name.substring(1) + style = "label" + } else if (name.startsWith(";")) { + name = name.substring(1) + style = "matrix" + } + + const value = path[name] + + if (value === undefined || value === null) { + continue + } + + if (Array.isArray(value)) { + url = url.replace(match, serializeArrayParam({ explode, name, style, value })) + continue + } + + if (typeof value === "object") { + url = url.replace( + match, + serializeObjectParam({ + explode, + name, + style, + value: value as Record, + valueOnly: true, + }), + ) + continue + } + + if (style === "matrix") { + url = url.replace( + match, + `;${serializePrimitiveParam({ + name, + value: value as string, + })}`, + ) + continue + } + + const replaceValue = encodeURIComponent(style === "label" ? `.${value as string}` : (value as string)) + url = url.replace(match, replaceValue) + } + } + return url +} + +export const getUrl = ({ + baseUrl, + path, + query, + querySerializer, + url: _url, +}: { + baseUrl?: string + path?: Record + query?: Record + querySerializer: QuerySerializer + url: string +}) => { + const pathUrl = _url.startsWith("/") ? _url : `/${_url}` + let url = (baseUrl ?? "") + pathUrl + if (path) { + url = defaultPathSerializer({ path, url }) + } + let search = query ? querySerializer(query) : "" + if (search.startsWith("?")) { + search = search.substring(1) + } + if (search) { + url += `?${search}` + } + return url +} diff --git a/packages/sdk/js/src/gen/sdk.gen.ts b/packages/sdk/js/src/gen/sdk.gen.ts index b00216b838..f900c24f06 100644 --- a/packages/sdk/js/src/gen/sdk.gen.ts +++ b/packages/sdk/js/src/gen/sdk.gen.ts @@ -123,7 +123,7 @@ class Event extends _HeyApiClient { * Get events */ public subscribe(options?: Options) { - return (options?.client ?? this._client).get({ + return (options?.client ?? this._client).get.sse({ url: "/event", ...options, }) From 8381760b27f60efc62176958a1000aa6e8e1ff9e Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 27 Aug 2025 11:42:09 -0500 Subject: [PATCH 045/112] docs: fix client.event.subscribe example (#2280) --- packages/web/src/content/docs/docs/sdk.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web/src/content/docs/docs/sdk.mdx b/packages/web/src/content/docs/docs/sdk.mdx index 6002d135ac..7ce7d39032 100644 --- a/packages/web/src/content/docs/docs/sdk.mdx +++ b/packages/web/src/content/docs/docs/sdk.mdx @@ -307,8 +307,8 @@ await client.auth.set({ ```javascript // Listen to real-time events -const eventStream = await client.event.subscribe() -for await (const event of eventStream) { +const events = await client.event.subscribe() +for await (const event of events.stream) { console.log("Event:", event.type, event.properties) } ``` From 335941737804b0eacd74c0cb8b56f37f13b1ea36 Mon Sep 17 00:00:00 2001 From: Jay V Date: Wed, 27 Aug 2025 16:02:30 -0400 Subject: [PATCH 046/112] ignore: cloud --- cloud/app/src/asset/lander/check.svg | 2 + cloud/app/src/asset/lander/copy.svg | 2 + .../screenshot-github.png} | Bin .../screenshot-splash.png} | Bin .../screenshot-vscode.png} | Bin cloud/app/src/asset/lander/screenshot.png | Bin 0 -> 606051 bytes cloud/app/src/asset/logo-ornate-light.svg | 18 + cloud/app/src/entry-server.tsx | 6 +- cloud/app/src/routes/index.css | 392 ++++++++++++++---- cloud/app/src/routes/index.tsx | 50 ++- cloud/app/src/style/base.css | 2 +- cloud/app/src/style/token/color.css | 94 ++--- 12 files changed, 409 insertions(+), 157 deletions(-) create mode 100644 cloud/app/src/asset/lander/check.svg create mode 100644 cloud/app/src/asset/lander/copy.svg rename cloud/app/src/asset/{screenshot-github.webp => lander/screenshot-github.png} (100%) rename cloud/app/src/asset/{screenshot-splash.webp => lander/screenshot-splash.png} (100%) rename cloud/app/src/asset/{screenshot-vscode.webp => lander/screenshot-vscode.png} (100%) create mode 100644 cloud/app/src/asset/lander/screenshot.png create mode 100644 cloud/app/src/asset/logo-ornate-light.svg diff --git a/cloud/app/src/asset/lander/check.svg b/cloud/app/src/asset/lander/check.svg new file mode 100644 index 0000000000..22de6f2a88 --- /dev/null +++ b/cloud/app/src/asset/lander/check.svg @@ -0,0 +1,2 @@ + + diff --git a/cloud/app/src/asset/lander/copy.svg b/cloud/app/src/asset/lander/copy.svg new file mode 100644 index 0000000000..f1baac30a0 --- /dev/null +++ b/cloud/app/src/asset/lander/copy.svg @@ -0,0 +1,2 @@ + + diff --git a/cloud/app/src/asset/screenshot-github.webp b/cloud/app/src/asset/lander/screenshot-github.png similarity index 100% rename from cloud/app/src/asset/screenshot-github.webp rename to cloud/app/src/asset/lander/screenshot-github.png diff --git a/cloud/app/src/asset/screenshot-splash.webp b/cloud/app/src/asset/lander/screenshot-splash.png similarity index 100% rename from cloud/app/src/asset/screenshot-splash.webp rename to cloud/app/src/asset/lander/screenshot-splash.png diff --git a/cloud/app/src/asset/screenshot-vscode.webp b/cloud/app/src/asset/lander/screenshot-vscode.png similarity index 100% rename from cloud/app/src/asset/screenshot-vscode.webp rename to cloud/app/src/asset/lander/screenshot-vscode.png diff --git a/cloud/app/src/asset/lander/screenshot.png b/cloud/app/src/asset/lander/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..feb61758515ae7927f19fd7a139cd566d055091e GIT binary patch literal 606051 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%0D&EV)BP>1m%| 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 + + + + + + + + + + + + + + + + + diff --git a/cloud/app/src/entry-server.tsx b/cloud/app/src/entry-server.tsx index eb8aea1e87..4482a6fa43 100644 --- a/cloud/app/src/entry-server.tsx +++ b/cloud/app/src/entry-server.tsx @@ -1,5 +1,5 @@ // @refresh reload -import { createHandler, StartServer } from "@solidjs/start/server"; +import { createHandler, StartServer } from "@solidjs/start/server" export default createHandler(() => ( ( {assets} - +
{children}
{scripts} )} /> -)); +)) diff --git a/cloud/app/src/routes/index.css b/cloud/app/src/routes/index.css index 9b0c7009e7..5796499612 100644 --- a/cloud/app/src/routes/index.css +++ b/cloud/app/src/routes/index.css @@ -1,24 +1,43 @@ [data-page="home"] { - --color-bg: oklch(0.2097 0.008 274.53); - --color-border: oklch(0.46 0.02 269.88); - --color-text: #ffffff; - --color-text-secondary: oklch(0.72 0.01 270.15); - --color-text-dimmed: hsl(224, 7%, 46%); - padding: var(--space-6); + --color-text: hsl(224, 10%, 10%); + --color-text-secondary: hsl(224, 7%, 46%); + --color-text-dimmed: hsl(224, 6%, 63%); + + --color-border: hsl(224, 6%, 77%); +} + +[data-page="home"] { + @media (prefers-color-scheme: dark) { + --color-text: hsl(0, 0%, 100%); + --color-text-secondary: hsl(224, 6%, 66%); + --color-text-dimmed: hsl(224, 7%, 46%); + + --color-border: hsl(224, 6%, 36%); + } +} + +[data-page="home"] { + --padding: 3rem; + --vertical-padding: 1.5rem; + --heading-font-size: 1.5625rem; + + @media (max-width: 30rem) { + --padding: 1rem; + --vertical-padding: 0.75rem; + --heading-font-size: 1.375rem; + } + font-family: var(--font-mono); color: var(--color-text); + padding: calc(var(--padding) + 1rem); a { color: var(--color-text); text-decoration: underline; text-underline-offset: var(--space-0-75); + text-decoration-thickness: 1px; } - background: var(--color-bg); - position: fixed; - overflow-y: scroll; - inset: 0; - [data-component="content"] { max-width: 67.5rem; margin: 0 auto; @@ -26,56 +45,98 @@ } [data-component="top"] { - padding: var(--space-12); + padding: var(--padding); display: flex; flex-direction: column; align-items: start; - gap: var(--space-4); + gap: calc(var(--vertical-padding) / 2); - [data-slot="logo"] { - height: 70px; + img { + height: auto; + width: clamp(200px, 70vw, 400px); + } + + [data-slot="logo dark"] { + display: none; + } + + @media (prefers-color-scheme: dark) { + [data-slot="logo light"] { + display: none; + } + [data-slot="logo dark"] { + display: block; + } } [data-slot="title"] { - font-size: var(--font-size-2xl); + line-height: 1.25; + font-size: var(--heading-font-size); text-transform: uppercase; } } [data-component="cta"] { - height: var(--space-19); border-top: 2px solid var(--color-border); display: flex; + justify-content: flex-start; + align-items: stretch; + + @media (max-width: 50rem) { + flex-direction: column; + } [data-slot="left"] { - display: flex; - padding: 0 var(--space-12); + flex: 0 0 auto; + text-align: center; + line-height: 1.4; + padding: var(--vertical-padding) var(--padding); text-transform: uppercase; - text-decoration: underline; - align-items: center; - justify-content: center; - text-underline-offset: var(--space-0-75); - border-right: 2px solid var(--color-border); + + @media (max-width: 50rem) { + padding-bottom: calc(var(--vertical-padding) + 4px); + } } [data-slot="right"] { flex: 1; - display: flex; - align-items: center; - justify-content: center; - gap: var(--space-2-5); - padding: 0 var(--space-6); + padding: var(--vertical-padding) 1rem; + border-left: 2px solid var(--color-border); + + @media (max-width: 50rem) { + border-left: none; + border-top: 2px solid var(--color-border); + } } [data-slot="command"] { all: unset; display: flex; align-items: center; + justify-content: center; cursor: pointer; color: var(--color-text-secondary); - font-size: var(--font-size-lg); + font-size: 1.125rem; font-family: var(--font-mono); gap: var(--space-2); + width: 100%; + + & > span { + @media (max-width: 24rem) { + font-size: 0.875rem; + } + @media (max-width: 30rem) { + [data-slot="protocol"] { + display: none; + } + } + @media (max-width: 43rem) { + text-align: center; + span:first-child { + display: block; + } + } + } } [data-slot="highlight"] { @@ -86,7 +147,7 @@ [data-component="features"] { border-top: 2px solid var(--color-border); - padding: var(--space-12); + padding: var(--padding); [data-slot="list"] { padding-left: var(--space-4); @@ -98,7 +159,7 @@ strong { text-transform: uppercase; - font-weight: 600; + font-weight: 700; } } @@ -120,24 +181,28 @@ } } - [data-component="title"] { - letter-spacing: -0.03125rem; - text-transform: uppercase; - font-weight: 400; - font-size: var(--font-size-md); - flex-shrink: 0; - color: oklch(0.55 0.02 269.87); - } - [data-component="method"] { - padding: var(--space-4) var(--space-6); display: flex; + padding: calc(var(--vertical-padding) / 2) calc(var(--padding) / 2) calc(var(--vertical-padding) / 2 + 0.125rem); flex-direction: column; - align-items: start; - gap: var(--space-3); + text-align: left; + gap: var(--space-2-5); + + @media (max-width: 30rem) { + gap: 0.3125rem; + } + + @media (max-width: 40rem) { + text-align: left; + } &:nth-child(2) { border-left: 2px solid var(--color-border); + + @media (max-width: 40rem) { + border-left: none; + border-top: 2px solid var(--color-border); + } } &:nth-child(3) { @@ -147,6 +212,23 @@ &:nth-child(4) { border-top: 2px solid var(--color-border); border-left: 2px solid var(--color-border); + + @media (max-width: 40rem) { + border-left: none; + } + } + + [data-component="title"] { + letter-spacing: -0.03125rem; + text-transform: uppercase; + font-weight: normal; + font-size: 1rem; + flex-shrink: 0; + color: var(--color-text-dimmed); + + @media (max-width: 30rem) { + font-size: 0.75rem; + } } [data-slot="button"] { @@ -155,63 +237,176 @@ display: flex; align-items: center; color: var(--color-text-secondary); - gap: var(--space-2); + gap: var(--space-2-5); + font-size: 1rem; + + @media (max-width: 24rem) { + font-size: 0.875rem; + } strong { color: var(--color-text); font-weight: 500; } + + @media (max-width: 40rem) { + justify-content: flex-start; + } + + @media (max-width: 30rem) { + justify-content: center; + } } } [data-component="screenshots"] { - border-top: 2px solid var(--color-border); + --images-height: 600px; display: grid; grid-template-columns: 1fr 1fr; - gap: 0; + grid-template-rows: var(--images-height); + border-top: 2px solid var(--color-border); - [data-slot="left"] { - padding: var(--space-8) var(--space-6); + & > div.left { display: flex; - flex-direction: column; - - img { - width: 100%; - height: auto; - } + grid-row: 1; + grid-column: 1; } - [data-slot="right"] { + & > div.right { display: grid; grid-template-rows: 1fr 1fr; + grid-row: 1; + grid-column: 2; border-left: 2px solid var(--color-border); - } - [data-slot="filler"] { - display: flex; - flex-grow: 1; - align-items: center; - justify-content: center; - } - - [data-slot="cell"] { - padding: var(--space-8) var(--space-6); - display: flex; - flex-direction: column; - gap: var(--space-4); - - &:nth-child(2) { - border-top: 2px solid var(--color-border); + & > div.row1 { + display: flex; + grid-row: 1; + border-bottom: 2px solid var(--color-border); + height: calc(var(--images-height) / 2); } - img { - width: 80%; + & > div.row2 { + display: flex; + grid-row: 2; + height: calc(var(--images-height) / 2); + } + } + + figure { + flex: 1; + display: flex; + flex-direction: column; + gap: calc(var(--padding) / 4); + padding: calc(var(--padding) / 2); + border-width: 0; + border-style: solid; + border-color: var(--color-border); + min-height: 0; + overflow: hidden; + + & > div, figcaption { + display: flex; + align-items: center; + } + + & > div { + flex: 1; + min-height: 0; + display: flex; + align-items: center; + justify-content: center; + } + + a { + display: flex; + flex: 1; + min-height: 0; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; + } + + figcaption { + letter-spacing: -0.03125rem; + text-transform: uppercase; + color: var(--color-text-dimmed); + flex-shrink: 0; + + @media (max-width: 30rem) { + font-size: 0.75rem; + } + } + } + + & > div.left figure { + height: var(--images-height); + box-sizing: border-box; + } + + & > div.right figure { + height: calc(var(--images-height) / 2); + box-sizing: border-box; + } + + & > div.left img { + width: 100%; + height: 100%; + min-width: 0; + object-fit: contain; + } + + & > div.right img { + width: 100%; + height: calc(100% - 2rem); + object-fit: contain; + display: block; + } + + @media (max-width: 30rem) { + & { + --images-height: auto; + grid-template-columns: 1fr; + grid-template-rows: auto auto; + } + + & > div.left { + grid-row: 1; + grid-column: 1; + } + + & > div.right { + grid-row: 2; + grid-column: 1; + border-left: none; + border-top: 2px solid var(--color-border); + + & > div.row1, + & > div.row2 { + height: auto; + } + } + + & > div.left figure, + & > div.right figure { height: auto; } + + & > div.left img, + & > div.right img { + width: 100%; + height: auto; + max-height: none; + } } } [data-component="copy-status"] { + @media (max-width: 43rem) { + display: none; + } + [data-slot="copy"] { display: block; width: var(--space-4); @@ -227,7 +422,7 @@ display: none; width: var(--space-4); height: var(--space-4); - color: white; + color: var(--color-text); [data-copied] & { display: block; @@ -237,20 +432,47 @@ [data-component="footer"] { border-top: 2px solid var(--color-border); - display: grid; - grid-template-columns: 1fr 1fr 1fr; - font-size: var(--font-size-lg); - height: var(--space-20); + display: flex; + flex-direction: row; [data-slot="cell"] { - display: flex; - align-items: center; - justify-content: center; - border-right: 2px solid var(--color-border); + flex: 1; + text-align: center; text-transform: uppercase; + padding: var(--vertical-padding) 0.5rem; + } - &:last-child { - border-right: none; + [data-slot="cell"] + [data-slot="cell"] { + border-left: 2px solid var(--color-border); + } + + /* Small desktop: first two columns shrink to content, third expands */ + @media (max-width: 57rem) { + [data-slot="cell"]:nth-child(1), + [data-slot="cell"]:nth-child(2) { + flex: 0 0 auto; + padding-left: calc(var(--padding) / 2); + padding-right: calc(var(--padding) / 2); + } + + [data-slot="cell"]:nth-child(3) { + flex: 1; + } + } + + /* Mobile: third column on its own row */ + @media (max-width: 40rem) { + flex-wrap: wrap; + + [data-slot="cell"]:nth-child(1), + [data-slot="cell"]:nth-child(2) { + flex: 1; + } + + [data-slot="cell"]:nth-child(3) { + flex: 1 0 100%; + border-left: none; + border-top: 2px solid var(--color-border); } } } diff --git a/cloud/app/src/routes/index.tsx b/cloud/app/src/routes/index.tsx index 057ddb49e6..15b3990d44 100644 --- a/cloud/app/src/routes/index.tsx +++ b/cloud/app/src/routes/index.tsx @@ -1,10 +1,11 @@ import { Title } from "@solidjs/meta" import { onCleanup, onMount } from "solid-js" import "./index.css" -import logo from "../asset/logo-ornate-dark.svg" -import IMG_SPLASH from "../asset/screenshot-splash.webp" -import IMG_VSCODE from "../asset/screenshot-vscode.webp" -import IMG_GITHUB from "../asset/screenshot-github.webp" +import logoLight from "../asset/logo-ornate-light.svg" +import logoDark from "../asset/logo-ornate-dark.svg" +import IMG_SPLASH from "../asset/lander/screenshot-splash.png" +import IMG_VSCODE from "../asset/lander/screenshot-vscode.png" +import IMG_GITHUB from "../asset/lander/screenshot-github.png" import { IconCopy, IconCheck } from "../component/icon" import { createAsync, query, redirect, RouteDefinition } from "@solidjs/router" import { getActor, withActor } from "~/context/auth" @@ -60,7 +61,8 @@ export default function Home() { opencode | AI coding agent built for the terminal
) } diff --git a/packages/web/src/components/share/copy-button.module.css b/packages/web/src/components/share/copy-button.module.css index 9da67a1ba6..31013fc08f 100644 --- a/packages/web/src/components/share/copy-button.module.css +++ b/packages/web/src/components/share/copy-button.module.css @@ -9,7 +9,6 @@ background: none; border: none; padding: 0.125rem; - background-color: var(--sl-color-bg); color: var(--sl-color-text-secondary); svg { diff --git a/packages/web/src/components/share/part.module.css b/packages/web/src/components/share/part.module.css index 85c3cc9b98..45310a0b23 100644 --- a/packages/web/src/components/share/part.module.css +++ b/packages/web/src/components/share/part.module.css @@ -126,6 +126,12 @@ gap: 1rem; flex-grow: 1; max-width: var(--md-tool-width); + position: relative; + + [data-component="copy-button"] { + top: 0.5rem; + right: calc(0.5rem - 1px); + } } [data-component="assistant-reasoning"] { From bce1398b73e67e90ecf31874105bd104f633a3e6 Mon Sep 17 00:00:00 2001 From: Jay V Date: Wed, 27 Aug 2025 19:36:40 -0400 Subject: [PATCH 052/112] ignore: cloud --- cloud/function/src/auth.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cloud/function/src/auth.ts b/cloud/function/src/auth.ts index bbea415402..5d7c852cbb 100644 --- a/cloud/function/src/auth.ts +++ b/cloud/function/src/auth.ts @@ -1,7 +1,9 @@ import { Resource } from "sst" import { z } from "zod" import { issuer } from "@openauthjs/openauth" +import type { Theme } from "@openauthjs/openauth/ui/theme" import { createSubjects } from "@openauthjs/openauth/subject" +import { THEME_OPENAUTH } from "@openauthjs/openauth/ui/theme" import { GithubProvider } from "@openauthjs/openauth/provider/github" import { GoogleOidcProvider } from "@openauthjs/openauth/provider/google" import { CloudflareStorage } from "@openauthjs/openauth/storage/cloudflare" @@ -24,9 +26,15 @@ export const subjects = createSubjects({ }), }) +const MY_THEME: Theme = { + ...THEME_OPENAUTH, + logo: "https://opencode.ai/favicon.svg" +}; + export default { async fetch(request: Request, env: Env, ctx: ExecutionContext) { return issuer({ + theme: MY_THEME, providers: { github: GithubProvider({ clientID: Resource.GITHUB_CLIENT_ID_CONSOLE.value, From 63c7c921ed5bf9ee4f579d88a40748b5e92cd2b8 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Wed, 27 Aug 2025 21:47:45 -0400 Subject: [PATCH 053/112] ignore: cloud --- cloud/app/src/routes/auth/callback.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cloud/app/src/routes/auth/callback.ts b/cloud/app/src/routes/auth/callback.ts index 22dcb2b6d8..edeb357908 100644 --- a/cloud/app/src/routes/auth/callback.ts +++ b/cloud/app/src/routes/auth/callback.ts @@ -1,3 +1,4 @@ +import { redirect } from "@solidjs/router" import type { APIEvent } from "@solidjs/start/server" import { AuthClient, useAuthSession } from "~/context/auth" @@ -25,7 +26,5 @@ export async function GET(input: APIEvent) { current: id, } }) - return { - result, - } + return redirect("/") } From 43e8047ad6bfca6e9079f266a33ddde138637456 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Wed, 27 Aug 2025 21:49:04 -0400 Subject: [PATCH 054/112] ignore: cloud --- cloud/app/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/cloud/app/package.json b/cloud/app/package.json index 98eb67ef30..100377666d 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -3,6 +3,7 @@ "type": "module", "scripts": { "dev": "vinxi dev --host 0.0.0.0", + "dev:remote": "bun sst shell --stage=dev bun dev", "build": "vinxi build", "start": "vinxi start", "version": "0.5.28" From cf79262dc466f6afdf43d06af7dd4498e9a3feec Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Wed, 27 Aug 2025 21:49:39 -0400 Subject: [PATCH 055/112] ignore: cloud --- cloud/app/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cloud/app/package.json b/cloud/app/package.json index 100377666d..0eb3ec6c27 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -3,7 +3,7 @@ "type": "module", "scripts": { "dev": "vinxi dev --host 0.0.0.0", - "dev:remote": "bun sst shell --stage=dev bun dev", + "dev:remote": "bun sst shell --target=Solid --stage=dev bun dev", "build": "vinxi build", "start": "vinxi start", "version": "0.5.28" From 4331d77b9e153fcaa737e02e846759c8e648ad6f Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Thu, 28 Aug 2025 12:04:29 +0000 Subject: [PATCH 056/112] ignore: update download stats 2025-08-28 --- STATS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/STATS.md b/STATS.md index 918bf64585..b6ed1d56ed 100644 --- a/STATS.md +++ b/STATS.md @@ -61,3 +61,4 @@ | 2025-08-25 | 236,607 (+4,509) | 202,650 (+1,493) | 439,257 (+6,002) | | 2025-08-26 | 242,783 (+6,176) | 205,242 (+2,592) | 448,025 (+8,768) | | 2025-08-27 | 248,409 (+5,626) | 205,242 (+0) | 453,651 (+5,626) | +| 2025-08-28 | 252,796 (+4,387) | 205,242 (+0) | 458,038 (+4,387) | From aa9ab0a30452f8ee0cc7dd0d5d170600bad26f8a Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:49:40 -0500 Subject: [PATCH 057/112] feat: include ignored files --- bun.lock | 11 ++++++----- packages/opencode/package.json | 1 + packages/opencode/src/file/index.ts | 19 ++++++++++++++++--- packages/sdk/js/src/gen/types.gen.ts | 1 + 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/bun.lock b/bun.lock index 82f35ef8d4..921a11ec94 100644 --- a/bun.lock +++ b/bun.lock @@ -113,6 +113,7 @@ "gray-matter": "4.0.3", "hono": "catalog:", "hono-openapi": "0.4.8", + "ignore": "7.0.5", "isomorphic-git": "1.32.1", "jsonc-parser": "3.3.1", "minimatch": "10.0.3", @@ -1032,7 +1033,7 @@ "@types/braces": ["@types/braces@3.0.5", "", {}, "sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w=="], - "@types/bun": ["@types/bun@1.2.20", "", { "dependencies": { "bun-types": "1.2.20" } }, "sha512-dX3RGzQ8+KgmMw7CsW4xT5ITBSCrSbfHc36SNT31EOUg/LA9JWq0VDdEXDRSe1InVWpd2yLUM1FUF/kEOyTzYA=="], + "@types/bun": ["@types/bun@1.2.21", "", { "dependencies": { "bun-types": "1.2.21" } }, "sha512-NiDnvEqmbfQ6dmZ3EeUO577s4P5bf4HCTXtI6trMc6f6RzirY5IrF3aIookuSpyslFzrnvv2lmEWv5HyC1X79A=="], "@types/cacheable-request": ["@types/cacheable-request@6.0.3", "", { "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", "@types/node": "*", "@types/responselike": "^1.0.0" } }, "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw=="], @@ -1836,7 +1837,7 @@ "ieee754": ["ieee754@1.1.13", "", {}, "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg=="], - "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + "ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], "ignore-walk": ["ignore-walk@6.0.5", "", { "dependencies": { "minimatch": "^9.0.0" } }, "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A=="], @@ -3302,7 +3303,7 @@ "@tufjs/models/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "@types/bun/bun-types": ["bun-types@1.2.20", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-pxTnQYOrKvdOwyiyd/7sMt9yFOenN004Y6O4lCcCUoKVej48FS5cvTw9geRaEcB9TsDZaJKAxPTVvi8tFsVuXA=="], + "@types/bun/bun-types": ["bun-types@1.2.21", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-sa2Tj77Ijc/NTLS0/Odjq/qngmEPZfbfnOERi0KRUYhT9R8M4VBioWVmMWE5GrYbKMc+5lVybXygLdibHaqVqw=="], "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], @@ -3380,8 +3381,6 @@ "glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "globby/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], - "gray-matter/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], "hast-util-to-parse5/property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="], @@ -3394,6 +3393,8 @@ "ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], + "isomorphic-git/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], + "lambda-local/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], "lazystream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 6f5b6fc577..5e80b480bf 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -41,6 +41,7 @@ "gray-matter": "4.0.3", "hono": "catalog:", "hono-openapi": "0.4.8", + "ignore": "7.0.5", "isomorphic-git": "1.32.1", "jsonc-parser": "3.3.1", "minimatch": "10.0.3", diff --git a/packages/opencode/src/file/index.ts b/packages/opencode/src/file/index.ts index 7613e920d8..40e0c2cfcf 100644 --- a/packages/opencode/src/file/index.ts +++ b/packages/opencode/src/file/index.ts @@ -6,6 +6,7 @@ import path from "path" import * as git from "isomorphic-git" import { App } from "../app/app" import fs from "fs" +import ignore from "ignore" import { Log } from "../util/log" export namespace File { @@ -29,6 +30,7 @@ export namespace File { name: z.string(), path: z.string(), type: z.enum(["file", "directory"]), + ignored: z.boolean(), }) .openapi({ ref: "FileNode", @@ -133,18 +135,29 @@ export namespace File { } export async function list(dir?: string) { - const ignore = [".git", ".DS_Store"] + const exclude = [".git", ".DS_Store"] const app = App.info() + let ignored = (_: string) => false + if (app.git) { + const gitignore = Bun.file(path.join(app.path.root, ".gitignore")) + if (await gitignore.exists()) { + const ig = ignore().add(await gitignore.text()) + ignored = ig.ignores.bind(ig) + } + } const resolved = dir ? path.join(app.path.cwd, dir) : app.path.cwd const nodes: Node[] = [] for (const entry of await fs.promises.readdir(resolved, { withFileTypes: true })) { - if (ignore.includes(entry.name)) continue + if (exclude.includes(entry.name)) continue const fullPath = path.join(resolved, entry.name) const relativePath = path.relative(app.path.cwd, fullPath) + const relativeToRoot = path.relative(app.path.root, fullPath) + const type = entry.isDirectory() ? "directory" : "file" nodes.push({ name: entry.name, path: relativePath, - type: entry.isDirectory() ? "directory" : "file", + type, + ignored: ignored(type === "directory" ? relativeToRoot + "/" : relativeToRoot), }) } return nodes.sort((a, b) => { diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts index 5043f96887..c6e7fedb22 100644 --- a/packages/sdk/js/src/gen/types.gen.ts +++ b/packages/sdk/js/src/gen/types.gen.ts @@ -1142,6 +1142,7 @@ export type FileNode = { name: string path: string type: "file" | "directory" + ignored: boolean } export type File = { From 37cf262094da151da0a066ae92cd77e12feb33ec Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Thu, 28 Aug 2025 10:55:47 -0500 Subject: [PATCH 058/112] fix: tui not showing err toasts (#2290) --- packages/tui/internal/app/app.go | 2 +- packages/tui/internal/components/chat/messages.go | 12 ++++++------ packages/tui/internal/tui/tui.go | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go index b293e5b0b0..53272bf906 100644 --- a/packages/tui/internal/app/app.go +++ b/packages/tui/internal/app/app.go @@ -826,7 +826,7 @@ func (a *App) SendCommand(ctx context.Context, command string, args string) (*Ap ) if err != nil { slog.Error("Failed to execute command", "error", err) - return toast.NewErrorToast("Failed to execute command") + return toast.NewErrorToast("Failed to execute command")() } return nil }) diff --git a/packages/tui/internal/components/chat/messages.go b/packages/tui/internal/components/chat/messages.go index a299d65afc..b3074bb544 100644 --- a/packages/tui/internal/components/chat/messages.go +++ b/packages/tui/internal/components/chat/messages.go @@ -1173,10 +1173,10 @@ func (m *messagesComponent) UndoLastMessage() (tea.Model, tea.Cmd) { ) if err != nil { slog.Error("Failed to undo message", "error", err) - return toast.NewErrorToast("Failed to undo message") + return toast.NewErrorToast("Failed to undo message")() } if response == nil { - return toast.NewErrorToast("Failed to undo message") + return toast.NewErrorToast("Failed to undo message")() } return app.MessageRevertedMsg{Session: *response, Message: revertedMessage} } @@ -1241,10 +1241,10 @@ func (m *messagesComponent) RedoLastMessage() (tea.Model, tea.Cmd) { ) if err != nil { slog.Error("Failed to unrevert session", "error", err) - return toast.NewErrorToast("Failed to redo message") + return toast.NewErrorToast("Failed to redo message")() } if response == nil { - return toast.NewErrorToast("Failed to redo message") + return toast.NewErrorToast("Failed to redo message")() } return app.SessionUnrevertedMsg{Session: *response} } @@ -1261,10 +1261,10 @@ func (m *messagesComponent) RedoLastMessage() (tea.Model, tea.Cmd) { ) if err != nil { slog.Error("Failed to redo message", "error", err) - return toast.NewErrorToast("Failed to redo message") + return toast.NewErrorToast("Failed to redo message")() } if response == nil { - return toast.NewErrorToast("Failed to redo message") + return toast.NewErrorToast("Failed to redo message")() } return app.MessageRevertedMsg{Session: *response, Message: revertedMessage} } diff --git a/packages/tui/internal/tui/tui.go b/packages/tui/internal/tui/tui.go index d1001f7941..71e5b9f717 100644 --- a/packages/tui/internal/tui/tui.go +++ b/packages/tui/internal/tui/tui.go @@ -134,7 +134,7 @@ func (a Model) Update(msg tea.Msg) (tea.Model, tea.Cmd) { ) if err != nil { slog.Error("Failed to respond to permission request", "error", err) - return toast.NewErrorToast("Failed to respond to permission request") + return toast.NewErrorToast("Failed to respond to permission request")() } slog.Debug("Responded to permission request", "response", resp) return nil From 555202f3b12d4d35f98d812eb8c6d68209d48777 Mon Sep 17 00:00:00 2001 From: Ethan Shea Date: Thu, 28 Aug 2025 12:06:45 -0400 Subject: [PATCH 059/112] Vercel AI Gateway key deeplinks into the dashboard (#2287) --- packages/opencode/src/cli/cmd/auth.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/auth.ts b/packages/opencode/src/cli/cmd/auth.ts index be38c0eba3..eb2eb19b72 100644 --- a/packages/opencode/src/cli/cmd/auth.ts +++ b/packages/opencode/src/cli/cmd/auth.ts @@ -245,7 +245,7 @@ export const AuthLoginCommand = cmd({ } if (provider === "vercel") { - prompts.log.info("You can create an api key in the dashboard") + prompts.log.info("You can create an api key at https://vercel.link/ai-gateway-token") } const key = await prompts.password({ From a928a35c96773c6a28b7b836754474ab099471a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Kopeck=C3=BD?= Date: Thu, 28 Aug 2025 19:48:29 +0200 Subject: [PATCH 060/112] fix: mcp client name (#2289) --- packages/opencode/src/mcp/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/mcp/index.ts b/packages/opencode/src/mcp/index.ts index 664111fb22..2ac8fb7a3e 100644 --- a/packages/opencode/src/mcp/index.ts +++ b/packages/opencode/src/mcp/index.ts @@ -55,7 +55,7 @@ export namespace MCP { let lastError: Error | undefined for (const { name, transport } of transports) { const client = await experimental_createMCPClient({ - name: key, + name: "opencode", transport, }).catch((error) => { lastError = error instanceof Error ? error : new Error(String(error)) @@ -92,7 +92,7 @@ export namespace MCP { if (mcp.type === "local") { const [cmd, ...args] = mcp.command const client = await experimental_createMCPClient({ - name: key, + name: "opencode", transport: new StdioClientTransport({ stderr: "ignore", command: cmd, From 02e014b0a0e2917380aca8efedba1439708f1933 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 28 Aug 2025 14:09:34 -0400 Subject: [PATCH 061/112] ignore: cloud --- cloud/app/src/context/auth.tsx | 5 ++--- cloud/core/src/drizzle/index.ts | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/cloud/app/src/context/auth.tsx b/cloud/app/src/context/auth.tsx index 88d3214c11..d6c5887c8c 100644 --- a/cloud/app/src/context/auth.tsx +++ b/cloud/app/src/context/auth.tsx @@ -32,7 +32,7 @@ export const getActor = query(async (): Promise => { }, } } - if (Object.keys(auth.data.account).length > 0) { + if (Object.keys(auth.data.account ?? {}).length > 0) { const current = Object.values(auth.data.account)[0] await auth.update(val => ({ ...val, @@ -96,10 +96,9 @@ export interface AuthSession { } export function useAuthSession() { - return useSession({ password: "0".repeat(32), - name: "auth" + name: "auth", }) } diff --git a/cloud/core/src/drizzle/index.ts b/cloud/core/src/drizzle/index.ts index 46fe93ac4f..1d448bbe08 100644 --- a/cloud/core/src/drizzle/index.ts +++ b/cloud/core/src/drizzle/index.ts @@ -3,7 +3,7 @@ import { Resource } from "sst" export * from "drizzle-orm" import postgres from "postgres" -const createClient = memo(() => { +const createClient = () => { const client = postgres({ idle_timeout: 30000, connect_timeout: 30000, @@ -17,9 +17,8 @@ const createClient = memo(() => { }, max: 1, }) - return drizzle(client, {}) -}) +} import { PgTransaction, type PgTransactionConfig } from "drizzle-orm/pg-core" import type { ExtractTablesWithRelations } from "drizzle-orm" From eff50c0aab254c96966d94599c882a5956c73a44 Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 28 Aug 2025 14:12:31 -0400 Subject: [PATCH 062/112] ignore: cloud --- cloud/app/src/app.tsx | 2 +- cloud/app/src/context/auth.tsx | 3 +++ cloud/app/src/routes/index.tsx | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/cloud/app/src/app.tsx b/cloud/app/src/app.tsx index 504318995f..bea9a3664e 100644 --- a/cloud/app/src/app.tsx +++ b/cloud/app/src/app.tsx @@ -10,7 +10,7 @@ export default function App() { ( - SolidStart - Basic + opencode Something went wrong}> {props.children} diff --git a/cloud/app/src/context/auth.tsx b/cloud/app/src/context/auth.tsx index d6c5887c8c..90db24d21b 100644 --- a/cloud/app/src/context/auth.tsx +++ b/cloud/app/src/context/auth.tsx @@ -21,8 +21,11 @@ export const getActor = query(async (): Promise => { const url = new URL(evt!.request.headers.get("referer") ?? evt!.request.url) const auth = await useAuthSession() const [workspaceHint] = url.pathname.split("/").filter((x) => x.length > 0) + console.log("here1") if (!workspaceHint) { + console.log("here2") if (auth.data.current) { + console.log("here3") const current = auth.data.account[auth.data.current] return { type: "account", diff --git a/cloud/app/src/routes/index.tsx b/cloud/app/src/routes/index.tsx index 15b3990d44..fcc83abacd 100644 --- a/cloud/app/src/routes/index.tsx +++ b/cloud/app/src/routes/index.tsx @@ -23,6 +23,7 @@ function CopyStatus() { const isLoggedIn = query(async () => { "use server" const actor = await getActor() + console.log(actor) if (actor.type === "account") { const workspaces = await withActor(() => Account.workspaces()) throw redirect("/" + workspaces[0].id) From 3de1ce467f7ff76f94c90878babb19f239bc9543 Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 28 Aug 2025 14:18:37 -0400 Subject: [PATCH 063/112] ignore: cloud --- cloud/app/src/context/auth.tsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cloud/app/src/context/auth.tsx b/cloud/app/src/context/auth.tsx index 90db24d21b..afcd3feaec 100644 --- a/cloud/app/src/context/auth.tsx +++ b/cloud/app/src/context/auth.tsx @@ -21,11 +21,8 @@ export const getActor = query(async (): Promise => { const url = new URL(evt!.request.headers.get("referer") ?? evt!.request.url) const auth = await useAuthSession() const [workspaceHint] = url.pathname.split("/").filter((x) => x.length > 0) - console.log("here1") if (!workspaceHint) { - console.log("here2") if (auth.data.current) { - console.log("here3") const current = auth.data.account[auth.data.current] return { type: "account", @@ -102,6 +99,10 @@ export function useAuthSession() { return useSession({ password: "0".repeat(32), name: "auth", + cookie: { + secure: false, + httpOnly: true, + }, }) } From e37e878e7265052ac44135739a338861b10aada3 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 28 Aug 2025 14:34:12 -0500 Subject: [PATCH 064/112] feat: home dir in app info --- packages/opencode/src/app/app.ts | 2 ++ packages/opencode/src/cli/cmd/debug/app.ts | 20 ++++++++++++++++++++ packages/opencode/src/cli/cmd/debug/index.ts | 2 ++ packages/sdk/js/src/gen/types.gen.ts | 1 + 4 files changed, 25 insertions(+) create mode 100644 packages/opencode/src/cli/cmd/debug/app.ts diff --git a/packages/opencode/src/app/app.ts b/packages/opencode/src/app/app.ts index fc7f49cb95..b54c08936f 100644 --- a/packages/opencode/src/app/app.ts +++ b/packages/opencode/src/app/app.ts @@ -15,6 +15,7 @@ export namespace App { hostname: z.string(), git: z.boolean(), path: z.object({ + home: z.string(), config: z.string(), data: z.string(), root: z.string(), @@ -75,6 +76,7 @@ export namespace App { }, git: git !== undefined, path: { + home: os.homedir(), config: Global.Path.config, state: Global.Path.state, data, diff --git a/packages/opencode/src/cli/cmd/debug/app.ts b/packages/opencode/src/cli/cmd/debug/app.ts new file mode 100644 index 0000000000..ee5b038d54 --- /dev/null +++ b/packages/opencode/src/cli/cmd/debug/app.ts @@ -0,0 +1,20 @@ +import { App } from "../../../app/app" +import { bootstrap } from "../../bootstrap" +import { cmd } from "../cmd" + +const AppInfoCommand = cmd({ + command: "info", + builder: (yargs) => yargs, + async handler() { + await bootstrap({ cwd: process.cwd() }, async () => { + const app = App.info() + console.log(JSON.stringify(app, null, 2)) + }) + }, +}) + +export const AppCommand = cmd({ + command: "app", + builder: (yargs) => yargs.command(AppInfoCommand).demandCommand(), + async handler() {}, +}) diff --git a/packages/opencode/src/cli/cmd/debug/index.ts b/packages/opencode/src/cli/cmd/debug/index.ts index 265296f5b0..d7fbc8fb5b 100644 --- a/packages/opencode/src/cli/cmd/debug/index.ts +++ b/packages/opencode/src/cli/cmd/debug/index.ts @@ -1,6 +1,7 @@ import { Global } from "../../../global" import { bootstrap } from "../../bootstrap" import { cmd } from "../cmd" +import { AppCommand } from "./app" import { FileCommand } from "./file" import { LSPCommand } from "./lsp" import { RipgrepCommand } from "./ripgrep" @@ -11,6 +12,7 @@ export const DebugCommand = cmd({ command: "debug", builder: (yargs) => yargs + .command(AppCommand) .command(LSPCommand) .command(RipgrepCommand) .command(FileCommand) diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts index c6e7fedb22..434606d861 100644 --- a/packages/sdk/js/src/gen/types.gen.ts +++ b/packages/sdk/js/src/gen/types.gen.ts @@ -552,6 +552,7 @@ export type App = { hostname: string git: boolean path: { + home: string config: string data: string root: string From 151ff053819f720adc8e84637a3626be88234209 Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 28 Aug 2025 15:51:49 -0400 Subject: [PATCH 065/112] ignore: cloud styles --- cloud/app/src/routes/index.css | 76 +++++++++++++++++++++++++++------- cloud/app/src/routes/index.tsx | 18 +++++--- 2 files changed, 72 insertions(+), 22 deletions(-) diff --git a/cloud/app/src/routes/index.css b/cloud/app/src/routes/index.css index 5796499612..a2fa654d24 100644 --- a/cloud/app/src/routes/index.css +++ b/cloud/app/src/routes/index.css @@ -78,35 +78,78 @@ [data-component="cta"] { border-top: 2px solid var(--color-border); - display: flex; - justify-content: flex-start; + display: grid; + grid-template-columns: auto 1fr auto; align-items: stretch; - @media (max-width: 50rem) { - flex-direction: column; + & > div + div { + border-left: 2px solid var(--color-border); } - [data-slot="left"] { - flex: 0 0 auto; + [data-slot="left"], + [data-slot="right"] { text-align: center; line-height: 1.4; - padding: var(--vertical-padding) var(--padding); + padding: var(--vertical-padding) 2rem; text-transform: uppercase; - @media (max-width: 50rem) { + @media (max-width: 30rem) { padding-bottom: calc(var(--vertical-padding) + 4px); } + + @media (max-width: 30rem) { + padding-left: 0.5rem; + padding-right: 0.5rem; + } } - [data-slot="right"] { - flex: 1; + [data-slot="center"] { padding: var(--vertical-padding) 1rem; - border-left: 2px solid var(--color-border); + } - @media (max-width: 50rem) { + @media (max-width: 55rem) { + display: grid; + grid-template-columns: 1fr 1fr; + grid-template-rows: auto auto; + + [data-slot="left"] { + grid-column: 1; + grid-row: 1; + } + + [data-slot="right"] { + grid-column: 2; + grid-row: 1; + } + + [data-slot="center"] { + grid-column: 1 / -1; + grid-row: 2; border-left: none; border-top: 2px solid var(--color-border); } + + @media (max-width: 22rem) { + grid-template-columns: 1fr; + grid-template-rows: auto auto auto; + + [data-slot="left"] { + grid-column: 1; + grid-row: 1; + } + + [data-slot="right"] { + grid-column: 1; + grid-row: 2; + border-top: 2px solid var(--color-border); + border-left: none; + } + + [data-slot="center"] { + grid-column: 1; + grid-row: 3; + } + } } [data-slot="command"] { @@ -125,12 +168,12 @@ @media (max-width: 24rem) { font-size: 0.875rem; } - @media (max-width: 30rem) { + @media (max-width: 64rem) { [data-slot="protocol"] { display: none; } } - @media (max-width: 43rem) { + @media (max-width: 38rem) { text-align: center; span:first-child { display: block; @@ -305,7 +348,8 @@ min-height: 0; overflow: hidden; - & > div, figcaption { + & > div, + figcaption { display: flex; align-items: center; } @@ -403,7 +447,7 @@ } [data-component="copy-status"] { - @media (max-width: 43rem) { + @media (max-width: 38rem) { display: none; } diff --git a/cloud/app/src/routes/index.tsx b/cloud/app/src/routes/index.tsx index fcc83abacd..349d3952b5 100644 --- a/cloud/app/src/routes/index.tsx +++ b/cloud/app/src/routes/index.tsx @@ -7,7 +7,7 @@ import IMG_SPLASH from "../asset/lander/screenshot-splash.png" import IMG_VSCODE from "../asset/lander/screenshot-vscode.png" import IMG_GITHUB from "../asset/lander/screenshot-github.png" import { IconCopy, IconCheck } from "../component/icon" -import { createAsync, query, redirect, RouteDefinition } from "@solidjs/router" +import { A, createAsync, query, redirect } from "@solidjs/router" import { getActor, withActor } from "~/context/auth" import { Account } from "@opencode/cloud-core/account.js" @@ -23,18 +23,18 @@ function CopyStatus() { const isLoggedIn = query(async () => { "use server" const actor = await getActor() - console.log(actor) if (actor.type === "account") { const workspaces = await withActor(() => Account.workspaces()) - throw redirect("/" + workspaces[0].id) + return workspaces[0].id + // throw redirect("/" + workspaces[0].id) } - return + return false }, "isLoggedIn") export default function Home() { - createAsync(() => isLoggedIn(), { + const workspaceId = createAsync(() => isLoggedIn(), { deferStream: true, }) onMount(() => { @@ -71,7 +71,7 @@ export default function Home() { -
+
+
+ {workspaceId() + ? Dashboard + : Login + } +
From 3f225e3248c54b4f17a0e1067d64614814020ccc Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 28 Aug 2025 16:21:06 -0400 Subject: [PATCH 066/112] ignore: cloud --- cloud/app/src/routes/index.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/cloud/app/src/routes/index.tsx b/cloud/app/src/routes/index.tsx index 349d3952b5..2b7678d0b6 100644 --- a/cloud/app/src/routes/index.tsx +++ b/cloud/app/src/routes/index.tsx @@ -7,7 +7,7 @@ import IMG_SPLASH from "../asset/lander/screenshot-splash.png" import IMG_VSCODE from "../asset/lander/screenshot-vscode.png" import IMG_GITHUB from "../asset/lander/screenshot-github.png" import { IconCopy, IconCheck } from "../component/icon" -import { A, createAsync, query, redirect } from "@solidjs/router" +import { A, createAsync, query } from "@solidjs/router" import { getActor, withActor } from "~/context/auth" import { Account } from "@opencode/cloud-core/account.js" @@ -26,7 +26,6 @@ const isLoggedIn = query(async () => { if (actor.type === "account") { const workspaces = await withActor(() => Account.workspaces()) return workspaces[0].id - // throw redirect("/" + workspaces[0].id) } return false }, "isLoggedIn") @@ -84,8 +83,8 @@ export default function Home() {
{workspaceId() - ? Dashboard - : Login + ? Dashboard + : Login }
From f97fdceb01c69ca563e755c6d50312ef7352f663 Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 28 Aug 2025 16:29:21 -0400 Subject: [PATCH 067/112] ignore: cloud --- cloud/app/src/routes/index.tsx | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/cloud/app/src/routes/index.tsx b/cloud/app/src/routes/index.tsx index 2b7678d0b6..7f8433e7e5 100644 --- a/cloud/app/src/routes/index.tsx +++ b/cloud/app/src/routes/index.tsx @@ -7,7 +7,7 @@ import IMG_SPLASH from "../asset/lander/screenshot-splash.png" import IMG_VSCODE from "../asset/lander/screenshot-vscode.png" import IMG_GITHUB from "../asset/lander/screenshot-github.png" import { IconCopy, IconCheck } from "../component/icon" -import { A, createAsync, query } from "@solidjs/router" +import { createAsync, query, redirect } from "@solidjs/router" import { getActor, withActor } from "~/context/auth" import { Account } from "@opencode/cloud-core/account.js" @@ -25,7 +25,7 @@ const isLoggedIn = query(async () => { const actor = await getActor() if (actor.type === "account") { const workspaces = await withActor(() => Account.workspaces()) - return workspaces[0].id + throw redirect("/" + workspaces[0].id) } return false }, "isLoggedIn") @@ -82,10 +82,7 @@ export default function Home() {
- {workspaceId() - ? Dashboard - : Login - } + Login
From c6ef92634d0ae026a59e023e69847b481975462b Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 28 Aug 2025 16:44:55 -0400 Subject: [PATCH 068/112] wip cloud --- cloud/app/src/routes/[workspaceID].tsx | 190 +++++++++++++++++++++++-- cloud/app/src/style/token/color.css | 4 +- cloud/core/src/billing.ts | 93 +++++++++++- cloud/core/src/key.ts | 79 ++++++++++ cloud/core/src/user.ts | 18 +++ 5 files changed, 372 insertions(+), 12 deletions(-) create mode 100644 cloud/core/src/key.ts create mode 100644 cloud/core/src/user.ts diff --git a/cloud/app/src/routes/[workspaceID].tsx b/cloud/app/src/routes/[workspaceID].tsx index 706a643233..98d03753f4 100644 --- a/cloud/app/src/routes/[workspaceID].tsx +++ b/cloud/app/src/routes/[workspaceID].tsx @@ -1,15 +1,187 @@ -import { createAsync, query } from "@solidjs/router" +import { Billing } from "@opencode/cloud-core/billing.js" +import { Key } from "@opencode/cloud-core/key.js" +import { action, createAsync, revalidate, query, useAction, useSubmission } from "@solidjs/router" +import { createSignal, For, Show } from "solid-js" import { getActor, withActor } from "~/context/auth" -const getPosts = query(async () => { - "use server" - return withActor(() => { - return "ok" - }) -}, "posts") +///////////////////////////////////// +// Keys related queries and actions +///////////////////////////////////// +const listKeys = query(async () => { + "use server" + return withActor(() => Key.list()) +}, "keys") + +const createKey = action(async (name: string) => { + "use server" + return withActor(() => Key.create({ name })) +}, "createKey") + +const removeKey = action(async (id: string) => { + "use server" + return withActor(() => Key.remove({ id })) +}, "removeKey") + +///////////////////////////////////// +// Billing related queries and actions +///////////////////////////////////// + +const getBillingInfo = query(async () => { + "use server" + return withActor(async () => { + const billing = await Billing.get() + const payments = await Billing.payments() + const usage = await Billing.usages() + return { billing, payments, usage } + }) +}, "billingInfo") + +const createCheckoutUrl = action(async (successUrl: string, cancelUrl: string) => { + "use server" + return withActor(() => Billing.generateCheckoutUrl({ successUrl, cancelUrl })) +}, "checkoutUrl") + +const createPortalUrl = action(async (returnUrl: string) => { + "use server" + return withActor(() => Billing.generatePortalUrl({ returnUrl })) +}, "portalUrl") + +//export const route = { +// preload: () => listKeys(), +//} export default function () { - const actor = createAsync(async () => getActor()) - return
{JSON.stringify(actor())}
+ const actor = createAsync(() => getActor()) + const keys = createAsync(() => listKeys()) + const createKeyAction = useAction(createKey) + const removeKeyAction = useAction(removeKey) + const createKeySubmission = useSubmission(createKey) + const [showCreateForm, setShowCreateForm] = createSignal(false) + const [keyName, setKeyName] = createSignal("") + + const formatDate = (date: Date) => { + return date.toLocaleDateString() + } + + const formatKey = (key: string) => { + if (key.length <= 11) return key + return `${key.slice(0, 7)}...${key.slice(-4)}` + } + + const copyToClipboard = async (text: string) => { + try { + await navigator.clipboard.writeText(text) + } catch (error) { + console.error("Failed to copy to clipboard:", error) + } + } + + const handleCreateKey = async () => { + if (!keyName().trim()) return + + try { + await createKeyAction(keyName().trim()) + revalidate("keys") + setKeyName("") + setShowCreateForm(false) + } catch (error) { + console.error("Failed to create API key:", error) + } + } + + const handleDeleteKey = async (keyId: string) => { + if (!confirm("Are you sure you want to delete this API key? This action cannot be undone.")) { + return + } + + try { + await removeKeyAction(keyId) + revalidate("keys") + } catch (error) { + console.error("Failed to delete API key:", error) + } + } + + return ( +
+

Actor

+
{JSON.stringify(actor())}
+

API Keys

+ + setKeyName(e.currentTarget.value)} + onKeyPress={(e) => e.key === "Enter" && handleCreateKey()} + /> +
+ + +
+
+ } + > + + +
+ +

Create an API key to access opencode gateway

+
+ } + > + {(key) => ( +
+
+
{key.name}
+
{formatKey(key.key)}
+
+ Created: {formatDate(key.timeCreated)} + {key.timeUsed && ` • Last used: ${formatDate(key.timeUsed)}`} +
+
+
+ + +
+
+ )} + + + + ) } diff --git a/cloud/app/src/style/token/color.css b/cloud/app/src/style/token/color.css index 35846acd95..31d11e2dd4 100644 --- a/cloud/app/src/style/token/color.css +++ b/cloud/app/src/style/token/color.css @@ -47,7 +47,7 @@ @media (prefers-color-scheme: dark) { :root { /* OpenCode dark theme colors */ - --color-bg: #0c0c0e; + /*--color-bg: #0c0c0e;*/ --color-bg-surface: #161618; --color-bg-elevated: #1c1c1f; @@ -87,4 +87,4 @@ --color-surface-hover: var(--color-bg-elevated); --color-border: var(--color-border); } -} +} \ No newline at end of file diff --git a/cloud/core/src/billing.ts b/cloud/core/src/billing.ts index 1a7bb29465..94ba23b832 100644 --- a/cloud/core/src/billing.ts +++ b/cloud/core/src/billing.ts @@ -1,12 +1,13 @@ import { Resource } from "sst" import { Stripe } from "stripe" import { Database, eq, sql } from "./drizzle" -import { BillingTable, UsageTable } from "./schema/billing.sql" +import { BillingTable, PaymentTable, UsageTable } from "./schema/billing.sql" import { Actor } from "./actor" import { fn } from "./util/fn" import { z } from "zod" import { Identifier } from "./identifier" import { centsToMicroCents } from "./util/price" +import { User } from "./user" export namespace Billing { export const stripe = () => @@ -29,6 +30,28 @@ export namespace Billing { ) } + export const payments = async () => { + return await Database.use((tx) => + tx + .select() + .from(PaymentTable) + .where(eq(PaymentTable.workspaceID, Actor.workspace())) + .orderBy(sql`${PaymentTable.timeCreated} DESC`) + .limit(100), + ) + } + + export const usages = async () => { + return await Database.use((tx) => + tx + .select() + .from(UsageTable) + .where(eq(UsageTable.workspaceID, Actor.workspace())) + .orderBy(sql`${UsageTable.timeCreated} DESC`) + .limit(100), + ) + } + export const consume = fn( z.object({ requestID: z.string().optional(), @@ -68,4 +91,72 @@ export namespace Billing { }) }, ) + + export const generateCheckoutUrl = fn( + z.object({ + successUrl: z.string(), + cancelUrl: z.string(), + }), + async (input) => { + const account = Actor.assert("user") + const { successUrl, cancelUrl } = input + + const user = await User.fromID(account.properties.userID) + const customer = await Billing.get() + const session = await Billing.stripe().checkout.sessions.create({ + mode: "payment", + line_items: [ + { + price_data: { + currency: "usd", + product_data: { + name: "opencode credits", + }, + unit_amount: 2000, // $20 minimum + }, + quantity: 1, + }, + ], + payment_intent_data: { + setup_future_usage: "on_session", + }, + ...(customer.customerID + ? { customer: customer.customerID } + : { + customer_email: user.email, + customer_creation: "always", + }), + metadata: { + workspaceID: Actor.workspace(), + }, + currency: "usd", + payment_method_types: ["card"], + success_url: successUrl, + cancel_url: cancelUrl, + }) + + return session.url + }, + ) + + export const generatePortalUrl = fn( + z.object({ + returnUrl: z.string(), + }), + async (input) => { + const { returnUrl } = input + + const customer = await Billing.get() + if (!customer?.customerID) { + throw new Error("No stripe customer ID") + } + + const session = await Billing.stripe().billingPortal.sessions.create({ + customer: customer.customerID, + return_url: returnUrl, + }) + + return session.url + }, + ) } diff --git a/cloud/core/src/key.ts b/cloud/core/src/key.ts new file mode 100644 index 0000000000..cf4f6e4104 --- /dev/null +++ b/cloud/core/src/key.ts @@ -0,0 +1,79 @@ +import { z } from "zod" +import { fn } from "./util/fn" +import { Actor } from "./actor" +import { and, Database, eq, sql } from "./drizzle" +import { Identifier } from "./identifier" +import { KeyTable } from "./schema/key.sql" + +export namespace Key { + export const list = async () => { + const user = Actor.assert("user") + const keys = await Database.use((tx) => + tx + .select({ + id: KeyTable.id, + name: KeyTable.name, + key: KeyTable.key, + userID: KeyTable.userID, + timeCreated: KeyTable.timeCreated, + timeUsed: KeyTable.timeUsed, + }) + .from(KeyTable) + .where(eq(KeyTable.workspaceID, user.properties.workspaceID)) + .orderBy(sql`${KeyTable.timeCreated} DESC`), + ) + return keys + } + + export const create = fn(z.object({ name: z.string().min(1).max(255) }), async (input) => { + const user = Actor.assert("user") + const { name } = input + + // Generate secret key: sk- + 64 random characters (upper, lower, numbers) + const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" + let randomPart = "" + for (let i = 0; i < 64; i++) { + randomPart += chars.charAt(Math.floor(Math.random() * chars.length)) + } + const secretKey = `sk-${randomPart}` + + const keyRecord = await Database.use((tx) => + tx + .insert(KeyTable) + .values({ + id: Identifier.create("key"), + workspaceID: user.properties.workspaceID, + userID: user.properties.userID, + name, + key: secretKey, + timeUsed: null, + }) + .returning(), + ) + + return { + key: secretKey, + id: keyRecord[0].id, + name: keyRecord[0].name, + created: keyRecord[0].timeCreated, + } + }) + + export const remove = fn(z.object({ id: z.string() }), async (input) => { + const user = Actor.assert("user") + const { id } = input + + const result = await Database.use((tx) => + tx + .delete(KeyTable) + .where(and(eq(KeyTable.id, id), eq(KeyTable.workspaceID, user.properties.workspaceID))) + .returning({ id: KeyTable.id }), + ) + + if (result.length === 0) { + throw new Error("Key not found") + } + + return { id: result[0].id } + }) +} diff --git a/cloud/core/src/user.ts b/cloud/core/src/user.ts new file mode 100644 index 0000000000..7914926ffc --- /dev/null +++ b/cloud/core/src/user.ts @@ -0,0 +1,18 @@ +import { z } from "zod" +import { eq } from "drizzle-orm" +import { fn } from "./util/fn" +import { Database } from "./drizzle" +import { UserTable } from "./schema/user.sql" + +export namespace User { + export const fromID = fn(z.string(), async (id) => + Database.transaction(async (tx) => { + return tx + .select() + .from(UserTable) + .where(eq(UserTable.id, id)) + .execute() + .then((rows) => rows[0]) + }), + ) +} From 5a0e7698e1296b0f15fe20209793f884cc1a5afa Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 28 Aug 2025 17:05:51 -0400 Subject: [PATCH 069/112] wip cloud --- cloud/app/src/routes/[workspaceID].tsx | 98 ++++++++++++++++++++++++-- 1 file changed, 92 insertions(+), 6 deletions(-) diff --git a/cloud/app/src/routes/[workspaceID].tsx b/cloud/app/src/routes/[workspaceID].tsx index 98d03753f4..1afcc979ef 100644 --- a/cloud/app/src/routes/[workspaceID].tsx +++ b/cloud/app/src/routes/[workspaceID].tsx @@ -1,7 +1,7 @@ import { Billing } from "@opencode/cloud-core/billing.js" import { Key } from "@opencode/cloud-core/key.js" import { action, createAsync, revalidate, query, useAction, useSubmission } from "@solidjs/router" -import { createSignal, For, Show } from "solid-js" +import { createEffect, createSignal, For, onMount, Show } from "solid-js" import { getActor, withActor } from "~/context/auth" ///////////////////////////////////// @@ -42,17 +42,16 @@ const createCheckoutUrl = action(async (successUrl: string, cancelUrl: string) = return withActor(() => Billing.generateCheckoutUrl({ successUrl, cancelUrl })) }, "checkoutUrl") -const createPortalUrl = action(async (returnUrl: string) => { - "use server" - return withActor(() => Billing.generatePortalUrl({ returnUrl })) -}, "portalUrl") - //export const route = { // preload: () => listKeys(), //} export default function () { const actor = createAsync(() => getActor()) + + ///////////////// + // Keys section + ///////////////// const keys = createAsync(() => listKeys()) const createKeyAction = useAction(createKey) const removeKeyAction = useAction(removeKey) @@ -103,6 +102,51 @@ export default function () { } } + ///////////////// + // Billing section + ///////////////// + const billingInfo = createAsync(() => getBillingInfo()) + const [isLoading, setIsLoading] = createSignal(false) + const createCheckoutUrlAction = useAction(createCheckoutUrl) + + // Run once on component mount to check URL parameters + onMount(() => { + const url = new URL(window.location.href) + const result = url.hash + + console.log("STRIPE RESULT", result) + + if (url.hash === "#success") { + setIsLoading(true) + // Remove the hash from the URL + window.history.replaceState(null, "", window.location.pathname + window.location.search) + } + }) + + createEffect((old?: number) => { + if (old && old !== billingInfo()?.billing?.balance) { + setIsLoading(false) + } + return billingInfo()?.billing?.balance + }) + + const handleBuyCredits = async () => { + try { + setIsLoading(true) + const baseUrl = window.location.href + const successUrl = new URL(baseUrl) + successUrl.hash = "success" + + const checkoutUrl = await createCheckoutUrlAction(successUrl.toString(), baseUrl) + if (checkoutUrl) { + window.location.href = checkoutUrl + } + } catch (error) { + console.error("Failed to get checkout URL:", error) + setIsLoading(false) + } + } + return (

Actor

@@ -182,6 +226,48 @@ export default function () { )}
+ +

Balance

+

Manage your billing and add credits to your account.

+

+ {(() => { + const balanceStr = ((billingInfo()?.billing?.balance ?? 0) / 100000000).toFixed(2) + return `$${balanceStr === "-0.00" ? "0.00" : balanceStr}` + })()} +

+ + +

Payments History

+

Your recent payment transactions.

+ No payments found.

}> + {(payment) => ( +
+ {payment.id} + {" | "} + ${((payment.amount ?? 0) / 100000000).toFixed(2)} + {" | "} + {new Date(payment.timeCreated).toLocaleDateString()} +
+ )} +
+ +

Usage History

+

Your recent API usage and costs.

+ No usage found.

}> + {(usage) => ( +
+ {usage.model} + {" | "} + {usage.inputTokens + usage.outputTokens} tokens + {" | "} + ${((usage.cost ?? 0) / 100000000).toFixed(4)} + {" | "} + {new Date(usage.timeCreated).toLocaleDateString()} +
+ )} +
) } From 36ec9dddb2b09ba4a7a52764637356397ee0d639 Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 28 Aug 2025 16:50:38 -0400 Subject: [PATCH 070/112] ignore: cloud --- cloud/app/src/app.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/cloud/app/src/app.tsx b/cloud/app/src/app.tsx index bea9a3664e..f86960dc0c 100644 --- a/cloud/app/src/app.tsx +++ b/cloud/app/src/app.tsx @@ -1,4 +1,4 @@ -import { MetaProvider, Title } from "@solidjs/meta"; +import { MetaProvider, Title, Meta } from "@solidjs/meta"; import { Router } from "@solidjs/router"; import { FileRoutes } from "@solidjs/start/router"; import { ErrorBoundary, Suspense } from "solid-js"; @@ -11,6 +11,7 @@ export default function App() { root={props => ( opencode + Something went wrong}> {props.children} From 4d81f90dded0ad3d57a75c880c919e6809087948 Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 28 Aug 2025 17:10:41 -0400 Subject: [PATCH 071/112] ignore: cloud --- cloud/app/src/context/auth.tsx | 37 ++++++++----------- cloud/app/src/routes/index.tsx | 3 +- .../routes/{ => workspace}/[workspaceID].tsx | 9 +++-- 3 files changed, 22 insertions(+), 27 deletions(-) rename cloud/app/src/routes/{ => workspace}/[workspaceID].tsx (97%) diff --git a/cloud/app/src/context/auth.tsx b/cloud/app/src/context/auth.tsx index afcd3feaec..59fbff6e6b 100644 --- a/cloud/app/src/context/auth.tsx +++ b/cloud/app/src/context/auth.tsx @@ -1,5 +1,3 @@ - - import { useSession } from "vinxi/http" import { createClient } from "@openauthjs/openauth/client" import { getRequestEvent } from "solid-js/web" @@ -20,7 +18,7 @@ export const getActor = query(async (): Promise => { const evt = getRequestEvent() const url = new URL(evt!.request.headers.get("referer") ?? evt!.request.url) const auth = await useAuthSession() - const [workspaceHint] = url.pathname.split("/").filter((x) => x.length > 0) + const [, workspaceHint] = url.pathname.split("/").filter((x) => x.length > 0) if (!workspaceHint) { if (auth.data.current) { const current = auth.data.account[auth.data.current] @@ -34,7 +32,7 @@ export const getActor = query(async (): Promise => { } if (Object.keys(auth.data.account ?? {}).length > 0) { const current = Object.values(auth.data.account)[0] - await auth.update(val => ({ + await auth.update((val) => ({ ...val, current: current.id, })) @@ -53,18 +51,14 @@ export const getActor = query(async (): Promise => { } const accounts = Object.keys(auth.data.account) const result = await Database.transaction(async (tx) => { - return await tx.select({ - user: UserTable - }) + return await tx + .select({ + user: UserTable, + }) .from(AccountTable) .innerJoin(UserTable, and(eq(UserTable.email, AccountTable.email))) .innerJoin(WorkspaceTable, eq(WorkspaceTable.id, UserTable.workspaceID)) - .where( - and( - inArray(AccountTable.id, accounts), - eq(WorkspaceTable.id, workspaceHint), - ) - ) + .where(and(inArray(AccountTable.id, accounts), eq(WorkspaceTable.id, workspaceHint))) .limit(1) .execute() .then((x) => x[0]) @@ -81,17 +75,19 @@ export const getActor = query(async (): Promise => { throw redirect("/auth/authorize") }, "actor") - export const AuthClient = createClient({ clientID: "app", issuer: import.meta.env.VITE_AUTH_URL, }) export interface AuthSession { - account: Record + account: Record< + string, + { + id: string + email: string + } + > current?: string } @@ -106,7 +102,4 @@ export function useAuthSession() { }) } - -export function AuthProvider() { -} - +export function AuthProvider() { } diff --git a/cloud/app/src/routes/index.tsx b/cloud/app/src/routes/index.tsx index 7f8433e7e5..7a43f26245 100644 --- a/cloud/app/src/routes/index.tsx +++ b/cloud/app/src/routes/index.tsx @@ -23,9 +23,10 @@ function CopyStatus() { const isLoggedIn = query(async () => { "use server" const actor = await getActor() + console.log(actor) if (actor.type === "account") { const workspaces = await withActor(() => Account.workspaces()) - throw redirect("/" + workspaces[0].id) + throw redirect(`/workspace/${workspaces[0].id}`) } return false }, "isLoggedIn") diff --git a/cloud/app/src/routes/[workspaceID].tsx b/cloud/app/src/routes/workspace/[workspaceID].tsx similarity index 97% rename from cloud/app/src/routes/[workspaceID].tsx rename to cloud/app/src/routes/workspace/[workspaceID].tsx index 1afcc979ef..00e61a0c7a 100644 --- a/cloud/app/src/routes/[workspaceID].tsx +++ b/cloud/app/src/routes/workspace/[workspaceID].tsx @@ -42,11 +42,12 @@ const createCheckoutUrl = action(async (successUrl: string, cancelUrl: string) = return withActor(() => Billing.generateCheckoutUrl({ successUrl, cancelUrl })) }, "checkoutUrl") -//export const route = { -// preload: () => listKeys(), -//} +const createPortalUrl = action(async (returnUrl: string) => { + "use server" + return withActor(() => Billing.generatePortalUrl({ returnUrl })) +}, "portalUrl") -export default function () { +export default function() { const actor = createAsync(() => getActor()) ///////////////// From 403f9b2f1b153deefcce71923664498b8903fda5 Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 28 Aug 2025 17:17:00 -0400 Subject: [PATCH 072/112] ignore: cloud --- cloud/app/src/routes/index.tsx | 3 +-- cloud/app/src/routes/workspace.tsx | 10 ++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 cloud/app/src/routes/workspace.tsx diff --git a/cloud/app/src/routes/index.tsx b/cloud/app/src/routes/index.tsx index 7a43f26245..3474a99319 100644 --- a/cloud/app/src/routes/index.tsx +++ b/cloud/app/src/routes/index.tsx @@ -23,7 +23,6 @@ function CopyStatus() { const isLoggedIn = query(async () => { "use server" const actor = await getActor() - console.log(actor) if (actor.type === "account") { const workspaces = await withActor(() => Account.workspaces()) throw redirect(`/workspace/${workspaces[0].id}`) @@ -34,7 +33,7 @@ const isLoggedIn = query(async () => { export default function Home() { - const workspaceId = createAsync(() => isLoggedIn(), { + createAsync(() => isLoggedIn(), { deferStream: true, }) onMount(() => { diff --git a/cloud/app/src/routes/workspace.tsx b/cloud/app/src/routes/workspace.tsx new file mode 100644 index 0000000000..e2ecb182b1 --- /dev/null +++ b/cloud/app/src/routes/workspace.tsx @@ -0,0 +1,10 @@ +import { RouteSectionProps } from "@solidjs/router"; + +export default function WorkspaceLayout(props: RouteSectionProps) { + return ( +
+

Workspace

+ {props.children} +
+ ); +} From 3fa02623c3a4cd9bc80cd42f6a18164350547581 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 28 Aug 2025 17:33:52 -0400 Subject: [PATCH 073/112] ignore: cloud --- cloud/core/src/drizzle/index.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cloud/core/src/drizzle/index.ts b/cloud/core/src/drizzle/index.ts index 1d448bbe08..bbf3f4cd77 100644 --- a/cloud/core/src/drizzle/index.ts +++ b/cloud/core/src/drizzle/index.ts @@ -3,7 +3,7 @@ import { Resource } from "sst" export * from "drizzle-orm" import postgres from "postgres" -const createClient = () => { +const init = () => { const client = postgres({ idle_timeout: 30000, connect_timeout: 30000, @@ -20,6 +20,8 @@ const createClient = () => { return drizzle(client, {}) } +const createClient = "NODE_ENV" in process.env ? init : memo(init) + import { PgTransaction, type PgTransactionConfig } from "drizzle-orm/pg-core" import type { ExtractTablesWithRelations } from "drizzle-orm" import type { PostgresJsQueryResultHKT } from "drizzle-orm/postgres-js" From 7d1eb010c1fdeaef400d1b45c3a996bdb9c64f27 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Thu, 28 Aug 2025 17:35:54 -0400 Subject: [PATCH 074/112] ignore: cloud --- cloud/app/src/app.tsx | 4 +--- cloud/core/src/drizzle/index.ts | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cloud/app/src/app.tsx b/cloud/app/src/app.tsx index f86960dc0c..54bb6f4a37 100644 --- a/cloud/app/src/app.tsx +++ b/cloud/app/src/app.tsx @@ -12,9 +12,7 @@ export default function App() { opencode - Something went wrong}> - {props.children} - + {props.children} )} > diff --git a/cloud/core/src/drizzle/index.ts b/cloud/core/src/drizzle/index.ts index bbf3f4cd77..f35ce0a347 100644 --- a/cloud/core/src/drizzle/index.ts +++ b/cloud/core/src/drizzle/index.ts @@ -20,7 +20,7 @@ const init = () => { return drizzle(client, {}) } -const createClient = "NODE_ENV" in process.env ? init : memo(init) +const createClient = "NODE_ENV" in process.env ? memo(init) : init import { PgTransaction, type PgTransactionConfig } from "drizzle-orm/pg-core" import type { ExtractTablesWithRelations } from "drizzle-orm" From 9b27d61fe88840142e817c13f96294f429862361 Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 28 Aug 2025 17:34:55 -0400 Subject: [PATCH 075/112] ignore: cloud --- cloud/app/src/routes/workspace.tsx | 5 +++-- cloud/app/src/routes/workspace/workspace.css | 10 ++++++++++ cloud/app/src/style/base.css | 1 + cloud/app/src/style/token/color.css | 4 ++-- 4 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 cloud/app/src/routes/workspace/workspace.css diff --git a/cloud/app/src/routes/workspace.tsx b/cloud/app/src/routes/workspace.tsx index e2ecb182b1..214d80c1b3 100644 --- a/cloud/app/src/routes/workspace.tsx +++ b/cloud/app/src/routes/workspace.tsx @@ -1,10 +1,11 @@ +import "./workspace/workspace.css" import { RouteSectionProps } from "@solidjs/router"; export default function WorkspaceLayout(props: RouteSectionProps) { return ( -
+

Workspace

{props.children} -
+ ); } diff --git a/cloud/app/src/routes/workspace/workspace.css b/cloud/app/src/routes/workspace/workspace.css new file mode 100644 index 0000000000..843e634f80 --- /dev/null +++ b/cloud/app/src/routes/workspace/workspace.css @@ -0,0 +1,10 @@ +[data-page="workspace"] { + font-family: var(--font-mono); + + @media (prefers-color-scheme: dark) { + } +} + +[data-page="workspace"] { + font-family: var(--font-mono); +} diff --git a/cloud/app/src/style/base.css b/cloud/app/src/style/base.css index 853b3c3865..a4847ed436 100644 --- a/cloud/app/src/style/base.css +++ b/cloud/app/src/style/base.css @@ -1,6 +1,7 @@ html { line-height: 1; background-color: var(--color-bg); + color: var(--color-text); } body { diff --git a/cloud/app/src/style/token/color.css b/cloud/app/src/style/token/color.css index 31d11e2dd4..35846acd95 100644 --- a/cloud/app/src/style/token/color.css +++ b/cloud/app/src/style/token/color.css @@ -47,7 +47,7 @@ @media (prefers-color-scheme: dark) { :root { /* OpenCode dark theme colors */ - /*--color-bg: #0c0c0e;*/ + --color-bg: #0c0c0e; --color-bg-surface: #161618; --color-bg-elevated: #1c1c1f; @@ -87,4 +87,4 @@ --color-surface-hover: var(--color-bg-elevated); --color-border: var(--color-border); } -} \ No newline at end of file +} From 8a0e773addbbf7408cdfe85247404d1ab4bf6df4 Mon Sep 17 00:00:00 2001 From: Frank Date: Thu, 28 Aug 2025 17:52:17 -0400 Subject: [PATCH 076/112] wip cloud --- .../src/routes/gateway/v1/chat/completions.ts | 576 ++++++++++++++++++ cloud/app/src/routes/stripe/webhook.ts | 73 +++ infra/cloud.ts | 10 +- 3 files changed, 658 insertions(+), 1 deletion(-) create mode 100644 cloud/app/src/routes/gateway/v1/chat/completions.ts create mode 100644 cloud/app/src/routes/stripe/webhook.ts diff --git a/cloud/app/src/routes/gateway/v1/chat/completions.ts b/cloud/app/src/routes/gateway/v1/chat/completions.ts new file mode 100644 index 0000000000..f69feade1d --- /dev/null +++ b/cloud/app/src/routes/gateway/v1/chat/completions.ts @@ -0,0 +1,576 @@ +import { Resource } from "sst" +import { Billing } from "@opencode/cloud-core/billing.js" +import type { APIEvent } from "@solidjs/start/server" +import { Database, eq, sql } from "@opencode/cloud-core/drizzle/index.js" +import { BillingTable, PaymentTable } from "@opencode/cloud-core/schema/billing.sql.js" +import { Identifier } from "@opencode/cloud-core/identifier.js" +import { centsToMicroCents } from "@opencode/cloud-core/util/price.js" +import { Actor } from "@opencode/cloud-core/actor.js" +import { KeyTable } from "@opencode/cloud-core/schema/key.sql.js" + +const SUPPORTED_MODELS = { + // "anthropic/claude-sonnet-4": { + // input: 0.0000015, + // output: 0.000006, + // reasoning: 0.0000015, + // cacheRead: 0.0000001, + // cacheWrite: 0.0000001, + // model: () => + // createAnthropic({ + // apiKey: Resource.ANTHROPIC_API_KEY.value, + // })("claude-sonnet-4-20250514"), + // }, + // "openai/gpt-4.1": { + // input: 0.0000015, + // output: 0.000006, + // reasoning: 0.0000015, + // cacheRead: 0.0000001, + // cacheWrite: 0.0000001, + // model: () => + // createOpenAI({ + // apiKey: Resource.OPENAI_API_KEY.value, + // })("gpt-4.1"), + // }, + // "zhipuai/glm-4.5-flash": { + // input: 0, + // output: 0, + // reasoning: 0, + // cacheRead: 0, + // cacheWrite: 0, + // model: () => + // createOpenAICompatible({ + // name: "Zhipu AI", + // baseURL: "https://api.z.ai/api/paas/v4", + // apiKey: Resource.ZHIPU_API_KEY.value, + // })("glm-4.5-flash"), + // }, +} + +export async function POST(input: APIEvent) { + // Check auth header + const authHeader = input.request.headers.get("authorization") + if (!authHeader || !authHeader.startsWith("Bearer ")) + return Response.json( + { + error: { + message: "Missing API key.", + type: "invalid_request_error", + param: null, + code: "unauthorized", + }, + }, + { status: 401 }, + ) + const apiKey = authHeader.split(" ")[1] + + // Check against KeyTable + const keyRecord = await Database.use((tx) => + tx + .select({ + id: KeyTable.id, + workspaceID: KeyTable.workspaceID, + }) + .from(KeyTable) + .where(eq(KeyTable.key, apiKey)) + .then((rows) => rows[0]), + ) + + if (!keyRecord) + return Response.json( + { + error: { + message: "Invalid API key.", + type: "invalid_request_error", + param: null, + code: "unauthorized", + }, + }, + { status: 401 }, + ) + + /* + return await Actor.provide("system", { workspaceID: keyRecord.workspaceID }, async () => { + try { + // Check balance + const customer = await Billing.get() + if (customer.balance <= 0) { + return Response.json( + { + error: { + message: "Insufficient balance", + type: "insufficient_quota", + param: null, + code: "insufficient_quota", + }, + }, + { status: 401 }, + ) + } + + const body = await input.request.json() + const model = SUPPORTED_MODELS[body.model as keyof typeof SUPPORTED_MODELS]?.model() + if (!model) throw new Error(`Unsupported model: ${body.model}`) + + const requestBody = transformOpenAIRequestToAiSDK() + + return body.stream ? await handleStream() : await handleGenerate() + + async function handleStream() { + const result = await model.doStream({ + ...requestBody, + }) + + const encoder = new TextEncoder() + const stream = new ReadableStream({ + async start(controller) { + const id = `chatcmpl-${Date.now()}` + const created = Math.floor(Date.now() / 1000) + + try { + for await (const chunk of result.stream) { + console.log("!!! CHUNK !!! : " + chunk.type) + switch (chunk.type) { + case "text-delta": { + const data = { + id, + object: "chat.completion.chunk", + created, + model: body.model, + choices: [ + { + index: 0, + delta: { + content: chunk.delta, + }, + finish_reason: null, + }, + ], + } + controller.enqueue(encoder.encode(`data: ${JSON.stringify(data)}\n\n`)) + break + } + + case "reasoning-delta": { + const data = { + id, + object: "chat.completion.chunk", + created, + model: body.model, + choices: [ + { + index: 0, + delta: { + reasoning_content: chunk.delta, + }, + finish_reason: null, + }, + ], + } + controller.enqueue(encoder.encode(`data: ${JSON.stringify(data)}\n\n`)) + break + } + + case "tool-call": { + const data = { + id, + object: "chat.completion.chunk", + created, + model: body.model, + choices: [ + { + index: 0, + delta: { + tool_calls: [ + { + index: 0, + id: chunk.toolCallId, + type: "function", + function: { + name: chunk.toolName, + arguments: chunk.input, + }, + }, + ], + }, + finish_reason: null, + }, + ], + } + controller.enqueue(encoder.encode(`data: ${JSON.stringify(data)}\n\n`)) + break + } + + case "error": { + const data = { + id, + object: "chat.completion.chunk", + created, + model: body.model, + choices: [ + { + index: 0, + delta: {}, + finish_reason: "stop", + }, + ], + error: { + message: typeof chunk.error === "string" ? chunk.error : chunk.error, + type: "server_error", + }, + } + controller.enqueue(encoder.encode(`data: ${JSON.stringify(data)}\n\n`)) + controller.enqueue(encoder.encode("data: [DONE]\n\n")) + controller.close() + break + } + + case "finish": { + const data = { + id, + object: "chat.completion.chunk", + created, + model: body.model, + choices: [ + { + index: 0, + delta: {}, + finish_reason: + { + stop: "stop", + length: "length", + "content-filter": "content_filter", + "tool-calls": "tool_calls", + error: "stop", + other: "stop", + unknown: "stop", + }[chunk.finishReason] || "stop", + }, + ], + usage: { + prompt_tokens: chunk.usage.inputTokens, + completion_tokens: chunk.usage.outputTokens, + total_tokens: chunk.usage.totalTokens, + completion_tokens_details: { + reasoning_tokens: chunk.usage.reasoningTokens, + }, + prompt_tokens_details: { + cached_tokens: chunk.usage.cachedInputTokens, + }, + }, + } + await trackUsage(body.model, chunk.usage, chunk.providerMetadata) + controller.enqueue(encoder.encode(`data: ${JSON.stringify(data)}\n\n`)) + controller.enqueue(encoder.encode("data: [DONE]\n\n")) + controller.close() + break + } + + //case "stream-start": + //case "response-metadata": + case "text-start": + case "text-end": + case "reasoning-start": + case "reasoning-end": + case "tool-input-start": + case "tool-input-delta": + case "tool-input-end": + case "raw": + default: + // Log unknown chunk types for debugging + console.warn(`Unknown chunk type: ${(chunk as any).type}`) + break + } + } + } catch (error) { + controller.error(error) + } + }, + }) + + return new Response(stream, { + headers: { + "Content-Type": "text/plain; charset=utf-8", + "Cache-Control": "no-cache", + Connection: "keep-alive", + }, + }) + } + + async function handleGenerate() { + const response = await model.doGenerate({ + ...requestBody, + }) + await trackUsage(body.model, response.usage, response.providerMetadata) + return c.json({ + id: `chatcmpl-${Date.now()}`, + object: "chat.completion" as const, + created: Math.floor(Date.now() / 1000), + model: body.model, + choices: [ + { + index: 0, + message: { + role: "assistant" as const, + content: response.content?.find((c) => c.type === "text")?.text ?? "", + reasoning_content: response.content?.find((c) => c.type === "reasoning")?.text, + tool_calls: response.content + ?.filter((c) => c.type === "tool-call") + .map((toolCall) => ({ + id: toolCall.toolCallId, + type: "function" as const, + function: { + name: toolCall.toolName, + arguments: toolCall.input, + }, + })), + }, + finish_reason: + ( + { + stop: "stop", + length: "length", + "content-filter": "content_filter", + "tool-calls": "tool_calls", + error: "stop", + other: "stop", + unknown: "stop", + } as const + )[response.finishReason] || "stop", + }, + ], + usage: { + prompt_tokens: response.usage?.inputTokens, + completion_tokens: response.usage?.outputTokens, + total_tokens: response.usage?.totalTokens, + completion_tokens_details: { + reasoning_tokens: response.usage?.reasoningTokens, + }, + prompt_tokens_details: { + cached_tokens: response.usage?.cachedInputTokens, + }, + }, + }) + } + + function transformOpenAIRequestToAiSDK() { + const prompt = transformMessages() + const tools = transformTools() + + return { + prompt, + maxOutputTokens: body.max_tokens ?? body.max_completion_tokens ?? undefined, + temperature: body.temperature ?? undefined, + topP: body.top_p ?? undefined, + frequencyPenalty: body.frequency_penalty ?? undefined, + presencePenalty: body.presence_penalty ?? undefined, + providerOptions: body.reasoning_effort + ? { + anthropic: { + reasoningEffort: body.reasoning_effort, + }, + } + : undefined, + stopSequences: (typeof body.stop === "string" ? [body.stop] : body.stop) ?? undefined, + responseFormat: (() => { + if (!body.response_format) return { type: "text" as const } + if (body.response_format.type === "json_schema") + return { + type: "json" as const, + schema: body.response_format.json_schema.schema, + name: body.response_format.json_schema.name, + description: body.response_format.json_schema.description, + } + if (body.response_format.type === "json_object") return { type: "json" as const } + throw new Error("Unsupported response format") + })(), + seed: body.seed ?? undefined, + tools: tools.tools, + toolChoice: tools.toolChoice, + } + + function transformTools() { + const { tools, tool_choice } = body + + if (!tools || tools.length === 0) { + return { tools: undefined, toolChoice: undefined } + } + + const aiSdkTools = tools.map((tool) => { + return { + type: tool.type, + name: tool.function.name, + description: tool.function.description, + inputSchema: tool.function.parameters!, + } + }) + + let aiSdkToolChoice + if (tool_choice == null) { + aiSdkToolChoice = undefined + } else if (tool_choice === "auto") { + aiSdkToolChoice = { type: "auto" as const } + } else if (tool_choice === "none") { + aiSdkToolChoice = { type: "none" as const } + } else if (tool_choice === "required") { + aiSdkToolChoice = { type: "required" as const } + } else if (tool_choice.type === "function") { + aiSdkToolChoice = { + type: "tool" as const, + toolName: tool_choice.function.name, + } + } + + return { tools: aiSdkTools, toolChoice: aiSdkToolChoice } + } + + function transformMessages() { + const { messages } = body + const prompt: LanguageModelV2Prompt = [] + + for (const message of messages) { + switch (message.role) { + case "system": { + prompt.push({ + role: "system", + content: message.content as string, + }) + break + } + + case "user": { + if (typeof message.content === "string") { + prompt.push({ + role: "user", + content: [{ type: "text", text: message.content }], + }) + } else { + const content = message.content.map((part) => { + switch (part.type) { + case "text": + return { type: "text" as const, text: part.text } + case "image_url": + return { + type: "file" as const, + mediaType: "image/jpeg" as const, + data: part.image_url.url, + } + default: + throw new Error(`Unsupported content part type: ${(part as any).type}`) + } + }) + prompt.push({ + role: "user", + content, + }) + } + break + } + + case "assistant": { + const content: Array< + | { type: "text"; text: string } + | { + type: "tool-call" + toolCallId: string + toolName: string + input: any + } + > = [] + + if (message.content) { + content.push({ + type: "text", + text: message.content as string, + }) + } + + if (message.tool_calls) { + for (const toolCall of message.tool_calls) { + content.push({ + type: "tool-call", + toolCallId: toolCall.id, + toolName: toolCall.function.name, + input: JSON.parse(toolCall.function.arguments), + }) + } + } + + prompt.push({ + role: "assistant", + content, + }) + break + } + + case "tool": { + prompt.push({ + role: "tool", + content: [ + { + type: "tool-result", + toolName: "placeholder", + toolCallId: message.tool_call_id, + output: { + type: "text", + value: message.content as string, + }, + }, + ], + }) + break + } + + default: { + throw new Error(`Unsupported message role: ${message.role}`) + } + } + } + + return prompt + } + } + + async function trackUsage(model: string, usage: LanguageModelUsage, providerMetadata?: ProviderMetadata) { + const modelData = SUPPORTED_MODELS[model as keyof typeof SUPPORTED_MODELS] + if (!modelData) throw new Error(`Unsupported model: ${model}`) + + const inputTokens = usage.inputTokens ?? 0 + const outputTokens = usage.outputTokens ?? 0 + const reasoningTokens = usage.reasoningTokens ?? 0 + const cacheReadTokens = usage.cachedInputTokens ?? 0 + const cacheWriteTokens = + providerMetadata?.["anthropic"]?.["cacheCreationInputTokens"] ?? + // @ts-expect-error + providerMetadata?.["bedrock"]?.["usage"]?.["cacheWriteInputTokens"] ?? + 0 + + const inputCost = modelData.input * inputTokens + const outputCost = modelData.output * outputTokens + const reasoningCost = modelData.reasoning * reasoningTokens + const cacheReadCost = modelData.cacheRead * cacheReadTokens + const cacheWriteCost = modelData.cacheWrite * cacheWriteTokens + const costInCents = (inputCost + outputCost + reasoningCost + cacheReadCost + cacheWriteCost) * 100 + + await Billing.consume({ + model, + inputTokens, + outputTokens, + reasoningTokens, + cacheReadTokens, + cacheWriteTokens, + costInCents, + }) + + await Database.use((tx) => + tx + .update(KeyTable) + .set({ timeUsed: sql`now()` }) + .where(eq(KeyTable.id, keyRecord.id)), + ) + } + } catch (error: any) { + return Response.json({ error: { message: error.message } }, { status: 500 }) + } + }) + */ +} diff --git a/cloud/app/src/routes/stripe/webhook.ts b/cloud/app/src/routes/stripe/webhook.ts new file mode 100644 index 0000000000..258ebe4130 --- /dev/null +++ b/cloud/app/src/routes/stripe/webhook.ts @@ -0,0 +1,73 @@ +import { Resource } from "sst" +import { Billing } from "@opencode/cloud-core/billing.js" +import type { APIEvent } from "@solidjs/start/server" +import { Database, eq, sql } from "@opencode/cloud-core/drizzle/index.js" +import { BillingTable, PaymentTable } from "@opencode/cloud-core/schema/billing.sql.js" +import { Identifier } from "@opencode/cloud-core/identifier.js" +import { centsToMicroCents } from "@opencode/cloud-core/util/price.js" +import { Actor } from "@opencode/cloud-core/actor.js" + +export async function POST(input: APIEvent) { + const body = await Billing.stripe().webhooks.constructEventAsync( + await input.request.text(), + input.request.headers.get("stripe-signature")!, + Resource.STRIPE_WEBHOOK_SECRET.value, + ) + + console.log(body.type, JSON.stringify(body, null, 2)) + if (body.type === "checkout.session.completed") { + const workspaceID = body.data.object.metadata?.workspaceID + const customerID = body.data.object.customer as string + const paymentID = body.data.object.payment_intent as string + const amount = body.data.object.amount_total + + if (!workspaceID) throw new Error("Workspace ID not found") + if (!customerID) throw new Error("Customer ID not found") + if (!amount) throw new Error("Amount not found") + if (!paymentID) throw new Error("Payment ID not found") + + await Actor.provide("system", { workspaceID }, async () => { + const customer = await Billing.get() + if (customer?.customerID && customer.customerID !== customerID) throw new Error("Customer ID mismatch") + + // set customer metadata + if (!customer?.customerID) { + await Billing.stripe().customers.update(customerID, { + metadata: { + workspaceID, + }, + }) + } + + // get payment method for the payment intent + const paymentIntent = await Billing.stripe().paymentIntents.retrieve(paymentID, { + expand: ["payment_method"], + }) + const paymentMethod = paymentIntent.payment_method + if (!paymentMethod || typeof paymentMethod === "string") throw new Error("Payment method not expanded") + + await Database.transaction(async (tx) => { + await tx + .update(BillingTable) + .set({ + balance: sql`${BillingTable.balance} + ${centsToMicroCents(amount)}`, + customerID, + paymentMethodID: paymentMethod.id, + paymentMethodLast4: paymentMethod.card!.last4, + }) + .where(eq(BillingTable.workspaceID, workspaceID)) + await tx.insert(PaymentTable).values({ + workspaceID, + id: Identifier.create("payment"), + amount: centsToMicroCents(amount), + paymentID, + customerID, + }) + }) + }) + } + + console.log("finished handling") + + return Response.json("ok", { status: 200 }) +} diff --git a/infra/cloud.ts b/infra/cloud.ts index d1ffb51e09..13fb27683b 100644 --- a/infra/cloud.ts +++ b/infra/cloud.ts @@ -123,7 +123,15 @@ export const console = new sst.cloudflare.x.StaticSite("Console", { */ new sst.x.DevCommand("Solid", { - link: [database], + link: [ + database, + AUTH_API_URL, + STRIPE_WEBHOOK_SECRET, + STRIPE_SECRET_KEY, + ANTHROPIC_API_KEY, + OPENAI_API_KEY, + ZHIPU_API_KEY, + ], dev: { directory: "cloud/app", command: "bun dev", From f2f4d87cc0d0a0466ce1efdac73c55de5693b483 Mon Sep 17 00:00:00 2001 From: Jay V Date: Thu, 28 Aug 2025 18:13:45 -0400 Subject: [PATCH 077/112] ignore: cloud styles --- cloud/app/src/asset/logo.svg | 12 + cloud/app/src/component/icon.tsx | 17 +- cloud/app/src/routes/workspace.tsx | 29 +- cloud/app/src/routes/workspace/workspace.css | 347 ++++++++++++++++++- cloud/app/src/style/token/color.css | 2 + cloud/app/src/style/token/font.css | 5 +- 6 files changed, 401 insertions(+), 11 deletions(-) create mode 100644 cloud/app/src/asset/logo.svg diff --git a/cloud/app/src/asset/logo.svg b/cloud/app/src/asset/logo.svg new file mode 100644 index 0000000000..cbfcccf51a --- /dev/null +++ b/cloud/app/src/asset/logo.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/cloud/app/src/component/icon.tsx b/cloud/app/src/component/icon.tsx index 5a565ab9a1..d73c178bc0 100644 --- a/cloud/app/src/component/icon.tsx +++ b/cloud/app/src/component/icon.tsx @@ -1,6 +1,21 @@ - import { JSX } from "solid-js" +export function IconLogo(props: JSX.SvgSVGAttributes) { + return ( + + + + + + + + + + + + + ); +} export function IconCopy(props: JSX.SvgSVGAttributes) { return ( diff --git a/cloud/app/src/routes/workspace.tsx b/cloud/app/src/routes/workspace.tsx index 214d80c1b3..d0678ef83d 100644 --- a/cloud/app/src/routes/workspace.tsx +++ b/cloud/app/src/routes/workspace.tsx @@ -1,11 +1,34 @@ +import { IconLogo } from "../component/icon" import "./workspace/workspace.css" -import { RouteSectionProps } from "@solidjs/router"; +import { RouteSectionProps } from "@solidjs/router" export default function WorkspaceLayout(props: RouteSectionProps) { return (
-

Workspace

+
+
+ + + +
+ + +
{props.children}
- ); + ) } diff --git a/cloud/app/src/routes/workspace/workspace.css b/cloud/app/src/routes/workspace/workspace.css index 843e634f80..66ae46ed43 100644 --- a/cloud/app/src/routes/workspace/workspace.css +++ b/cloud/app/src/routes/workspace/workspace.css @@ -1,10 +1,347 @@ [data-page="workspace"] { - font-family: var(--font-mono); + display: flex; + flex-direction: column; + gap: var(--space-6); + line-height: 1; + padding: var(--space-6); + + @media (max-width: 30rem) { + padding: var(--space-4); + gap: var(--space-5); + } + + /* Workspace Header */ + [data-component="workspace-header"] { + position: sticky; + top: 0; + z-index: 100; + display: flex; + justify-content: space-between; + align-items: center; + height: 3.5rem; + padding: 0 var(--space-6); + margin: calc(-1 * var(--space-6)); + margin-bottom: var(--space-6); + border-bottom: 1px solid var(--color-border); + background-color: var(--color-bg); + + @media (max-width: 30rem) { + padding: 0 var(--space-4); + margin: calc(-1 * var(--space-4)); + margin-bottom: var(--space-5); + } + } + + [data-slot="header-brand"] { + flex: 0 0 auto; + + svg { + width: 138px; + } + + [data-component="site-title"] { + font-size: var(--font-size-lg); + font-weight: 600; + color: var(--color-text); + text-decoration: none; + letter-spacing: -0.02em; + } + } + + [data-slot="header-nav"] { + display: flex; + gap: var(--space-4); + align-items: center; + + @media (max-width: 50rem) { + display: none; + } + + a { + color: var(--color-text-secondary); + text-decoration: none; + font-size: var(--font-size-sm); + font-weight: 400; + text-transform: uppercase; + letter-spacing: 0.05em; + transition: color 0.15s ease; + + &:hover { + color: var(--color-text); + } + } + } + + [data-slot="header-actions"] { + display: flex; + gap: var(--space-4); + align-items: center; + + a { + display: flex; + align-items: center; + justify-content: center; + color: var(--color-text-muted); + text-decoration: none; + transition: color 0.15s ease; + + &:hover { + color: var(--color-text); + } + + svg { + display: block; + } + } + } + + /* Main content container */ + & > div { + display: flex; + flex-direction: column; + gap: var(--space-6); + } + + /* Adjust header spacing */ + [data-component="workspace-header"] + div { + margin-top: var(--space-2); + } + + /* Section headers */ + h1 { + font-size: var(--font-size-3xl); + font-weight: 500; + line-height: 1.2; + letter-spacing: -0.05em; + margin: 0; + color: var(--color-text); + + @media (max-width: 30rem) { + font-size: var(--font-size-2xl); + line-height: 1.25; + } + } + + /* Section descriptions */ + p { + margin: 0; + color: var(--color-text-secondary); + font-size: var(--font-size-md); + line-height: 1.5; + } + + /* API Keys Section */ + [data-slot="create-form"] { + display: flex; + flex-direction: column; + gap: var(--space-3); + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + max-width: 32rem; + + input { + padding: var(--space-2) var(--space-3); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + background-color: var(--color-bg); + color: var(--color-text); + font-size: var(--font-size-sm); + font-family: var(--font-mono); + + &:focus { + outline: none; + border-color: var(--color-accent); + } + + &::placeholder { + color: var(--color-text-disabled); + } + } + + [data-slot="form-actions"] { + display: flex; + gap: var(--space-2); + justify-content: flex-end; + } + } + + [data-slot="key-list"] { + display: flex; + flex-direction: column; + gap: var(--space-2); + } + + [data-slot="key-item"] { + display: flex; + justify-content: space-between; + align-items: flex-start; + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + gap: var(--space-4); + + @media (max-width: 30rem) { + flex-direction: column; + gap: var(--space-3); + } + } + + [data-slot="key-info"] { + display: flex; + flex-direction: column; + gap: var(--space-1); + flex: 1; + } + + [data-slot="key-name"] { + font-size: var(--font-size-md); + font-weight: 500; + color: var(--color-text); + } + + [data-slot="key-value"] { + font-size: var(--font-size-xs); + font-family: var(--font-mono); + color: var(--color-text-secondary); + background-color: var(--color-bg); + padding: var(--space-1) var(--space-2); + border-radius: var(--space-1); + border: 1px solid var(--color-border-muted); + } + + [data-slot="key-meta"] { + font-size: var(--font-size-xs); + color: var(--color-text-disabled); + } + + [data-slot="key-actions"] { + display: flex; + gap: var(--space-2); + } + + [data-slot="empty-state"] { + padding: var(--space-8); + text-align: center; + color: var(--color-text-muted); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + + p { + margin: 0; + font-size: var(--font-size-sm); + } + } + + /* Balance Section */ + [data-slot="balance"] { + display: flex; + flex-direction: column; + gap: var(--space-3); + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + max-width: 32rem; + + p { + font-size: var(--font-size-2xl); + font-weight: 500; + color: var(--color-text); + margin: 0; + } + } + + /* Payment and Usage Items */ + [data-slot="payment-item"], + [data-slot="usage-item"] { + display: flex; + align-items: center; + gap: var(--space-4); + padding: var(--space-3); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + font-size: var(--font-size-sm); + font-family: var(--font-mono); + + @media (max-width: 30rem) { + flex-direction: column; + align-items: flex-start; + gap: var(--space-2); + } + } + + [data-slot="payment-id"], + [data-slot="payment-amount"], + [data-slot="payment-date"], + [data-slot="usage-model"], + [data-slot="usage-tokens"], + [data-slot="usage-cost"], + [data-slot="usage-date"] { + color: var(--color-text-muted); + } + + /* Buttons */ + button { + padding: var(--space-2) var(--space-4); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + background-color: var(--color-bg); + color: var(--color-text); + font-size: var(--font-size-sm); + font-family: var(--font-sans); + cursor: pointer; + transition: all 0.15s ease; + + &:hover { + background-color: var(--color-surface-hover); + border-color: var(--color-accent); + } + + &:active { + transform: translateY(1px); + } + + &:disabled { + opacity: 0.5; + cursor: not-allowed; + + &:hover { + background-color: var(--color-bg); + border-color: var(--color-border); + transform: none; + } + } + + &[color="primary"] { + background-color: var(--color-primary); + border-color: var(--color-primary); + color: var(--color-primary-text); + + &:hover { + background-color: var(--color-primary-hover); + border-color: var(--color-primary-hover); + } + } + + &[color="ghost"] { + background-color: transparent; + border-color: transparent; + color: var(--color-text-muted); + + &:hover { + background-color: var(--color-surface-hover); + border-color: var(--color-border); + color: var(--color-text); + } + } + } @media (prefers-color-scheme: dark) { + /* Dark mode specific adjustments if needed */ } } - -[data-page="workspace"] { - font-family: var(--font-mono); -} diff --git a/cloud/app/src/style/token/color.css b/cloud/app/src/style/token/color.css index 35846acd95..675ffdde26 100644 --- a/cloud/app/src/style/token/color.css +++ b/cloud/app/src/style/token/color.css @@ -8,6 +8,7 @@ --color-bg-elevated: #ffffff; --color-text: #1d1d1f; + --color-text-secondary: #424245; --color-text-muted: #6e6e73; --color-text-disabled: #86868b; @@ -52,6 +53,7 @@ --color-bg-elevated: #1c1c1f; --color-text: #ffffff; + --color-text-secondary: #c7c7cc; --color-text-muted: #a1a1a6; --color-text-disabled: #68686f; diff --git a/cloud/app/src/style/token/font.css b/cloud/app/src/style/token/font.css index 1852af5b0b..4d20e324cb 100644 --- a/cloud/app/src/style/token/font.css +++ b/cloud/app/src/style/token/font.css @@ -13,6 +13,7 @@ body { --font-size-7xl: 4.5rem; --font-size-8xl: 6rem; --font-size-9xl: 8rem; - --font-mono: IBM Plex Mono; - --font-sans: Inter; + + --font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --font-sans: var(--font-mono); } From 6daf0fdb2b68bae213328c208fc8ba54944d561d Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Thu, 28 Aug 2025 17:31:03 -0500 Subject: [PATCH 078/112] allow slash commands to resolve ~/ references (#2295) --- packages/opencode/src/session/index.ts | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index 41f85b6ea8..5cd76124fd 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -1,4 +1,5 @@ import path from "path" +import os from "os" import { spawn } from "child_process" import { Decimal } from "decimal.js" import { z, ZodSchema } from "zod" @@ -1231,11 +1232,15 @@ export namespace Session { const app = App.info() for (const match of fileMatches) { - const file = path.join(app.path.cwd, match[1]) + const filename = match[1] + const filepath = filename.startsWith("~/") + ? path.join(os.homedir(), filename.slice(2)) + : path.join(app.path.cwd, filename) + parts.push({ type: "file", - url: `file://${file}`, - filename: match[1], + url: `file://${filepath}`, + filename, mime: "text/plain", }) } From 7fab12da282ad6b4657ed7c9de46c2ac5125ae50 Mon Sep 17 00:00:00 2001 From: Netanel Draiman <12609607+ndraiman@users.noreply.github.com> Date: Fri, 29 Aug 2025 02:15:26 +0300 Subject: [PATCH 079/112] fix: replace isomorphic-git status with direct git diff for worktree support (#1706) Co-authored-by: Adam <2363879+adamdotdevin@users.noreply.github.com> --- packages/opencode/src/file/index.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/opencode/src/file/index.ts b/packages/opencode/src/file/index.ts index 40e0c2cfcf..ea3f2d211f 100644 --- a/packages/opencode/src/file/index.ts +++ b/packages/opencode/src/file/index.ts @@ -3,7 +3,6 @@ import { Bus } from "../bus" import { $ } from "bun" import { createPatch } from "diff" import path from "path" -import * as git from "isomorphic-git" import { App } from "../app/app" import fs from "fs" import ignore from "ignore" @@ -118,12 +117,8 @@ export namespace File { .then((x) => x.trim()) if (app.git) { const rel = path.relative(app.path.root, full) - const diff = await git.status({ - fs, - dir: app.path.root, - filepath: rel, - }) - if (diff !== "unmodified") { + const diff = await $`git diff ${rel}`.cwd(app.path.root).quiet().nothrow().text() + if (diff.trim()) { const original = await $`git show HEAD:${rel}`.cwd(app.path.root).quiet().nothrow().text() const patch = createPatch(file, original, content, "old", "new", { context: Infinity, From 1aaf8f11cf6c1e836d9f9b2fb8cc836d3eb2516f Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 28 Aug 2025 18:16:01 -0500 Subject: [PATCH 080/112] chore: update gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 33e3deb818..025b3707b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ .DS_Store node_modules +.worktrees .sst .env .idea From 5ecd7fdd0cce12837034b833911586d28230169e Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 28 Aug 2025 18:16:38 -0500 Subject: [PATCH 081/112] chore: remove unused dep --- bun.lock | 89 ++++++++-------------------------- packages/opencode/package.json | 1 - 2 files changed, 19 insertions(+), 71 deletions(-) diff --git a/bun.lock b/bun.lock index 921a11ec94..432aaf37f9 100644 --- a/bun.lock +++ b/bun.lock @@ -114,7 +114,6 @@ "hono": "catalog:", "hono-openapi": "0.4.8", "ignore": "7.0.5", - "isomorphic-git": "1.32.1", "jsonc-parser": "3.3.1", "minimatch": "10.0.3", "open": "10.1.2", @@ -495,7 +494,7 @@ "@hey-api/json-schema-ref-parser": ["@hey-api/json-schema-ref-parser@1.0.6", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0", "lodash": "^4.17.21" } }, "sha512-yktiFZoWPtEW8QKS65eqKwA5MTKp88CyiL8q72WynrBs/73SAaxlSWlA2zW/DZlywZ5hX1OYzrCC0wFdvO9c2w=="], - "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="], + "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.80.1", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-AC478kg36vmmrseLZNFonZ/cmXXmDzW5yWz4PVg1S8ebJsRtVRJ/QU+mtnXfzf9avN2P0pz/AO4WAe4jyFY2gA=="], "@hono/zod-validator": ["@hono/zod-validator@0.4.2", "", { "peerDependencies": { "hono": ">=3.9.0", "zod": "^3.19.1" } }, "sha512-1rrlBg+EpDPhzOV4hT9pxr5+xDVmKuz6YJl+la7VCwK6ass5ldyKm5fD+umJdV2zhHD6jROoCCv8NbTwyfhT0g=="], @@ -1209,8 +1208,6 @@ "async": ["async@3.2.6", "", {}, "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="], - "async-lock": ["async-lock@1.4.1", "", {}, "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ=="], - "async-sema": ["async-sema@3.1.1", "", {}, "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg=="], "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], @@ -1335,8 +1332,6 @@ "cjs-module-lexer": ["cjs-module-lexer@1.4.3", "", {}, "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q=="], - "clean-git-ref": ["clean-git-ref@2.0.1", "", {}, "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw=="], - "clean-stack": ["clean-stack@2.2.0", "", {}, "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A=="], "cli-boxes": ["cli-boxes@3.0.0", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="], @@ -1499,8 +1494,6 @@ "diff": ["diff@8.0.2", "", {}, "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg=="], - "diff3": ["diff3@0.0.3", "", {}, "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g=="], - "direction": ["direction@2.0.1", "", { "bin": { "direction": "cli.js" } }, "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA=="], "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], @@ -1931,8 +1924,6 @@ "isexe": ["isexe@3.1.1", "", {}, "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ=="], - "isomorphic-git": ["isomorphic-git@1.32.1", "", { "dependencies": { "async-lock": "^1.4.1", "clean-git-ref": "^2.0.1", "crc-32": "^1.2.0", "diff3": "0.0.3", "ignore": "^5.1.4", "minimisted": "^2.0.0", "pako": "^1.0.10", "path-browserify": "^1.0.1", "pify": "^4.0.1", "readable-stream": "^3.4.0", "sha.js": "^2.4.9", "simple-get": "^4.0.1" }, "bin": { "isogit": "cli.cjs" } }, "sha512-NZCS7qpLkCZ1M/IrujYBD31sM6pd/fMVArK4fz4I7h6m0rUW2AsYU7S7zXeABuHL6HIfW6l53b4UQ/K441CQjg=="], - "jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], "jiti": ["jiti@2.5.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w=="], @@ -2185,8 +2176,6 @@ "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], - "minimisted": ["minimisted@2.0.1", "", { "dependencies": { "minimist": "^1.2.5" } }, "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA=="], - "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], "minipass-collect": ["minipass-collect@2.0.1", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw=="], @@ -2341,7 +2330,7 @@ "pagefind": ["pagefind@1.3.0", "", { "optionalDependencies": { "@pagefind/darwin-arm64": "1.3.0", "@pagefind/darwin-x64": "1.3.0", "@pagefind/linux-arm64": "1.3.0", "@pagefind/linux-x64": "1.3.0", "@pagefind/windows-x64": "1.3.0" }, "bin": { "pagefind": "lib/runner/bin.cjs" } }, "sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw=="], - "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], + "pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], "parse-code-context": ["parse-code-context@1.0.0", "", {}, "sha512-OZQaqKaQnR21iqhlnPfVisFjBWjhnMl5J9MgbP8xC+EwoVqbXrq78lp+9Zb3ahmLzrIX5Us/qbvBnaS3hkH6OA=="], @@ -2359,8 +2348,6 @@ "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], - "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], - "path-exists": ["path-exists@5.0.0", "", {}, "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ=="], "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], @@ -2389,8 +2376,6 @@ "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], - "pify": ["pify@4.0.1", "", {}, "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g=="], - "pkce-challenge": ["pkce-challenge@5.0.0", "", {}, "sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ=="], "pkg-dir": ["pkg-dir@7.0.0", "", { "dependencies": { "find-up": "^6.3.0" } }, "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA=="], @@ -2489,7 +2474,7 @@ "read-pkg": ["read-pkg@9.0.1", "", { "dependencies": { "@types/normalize-package-data": "^2.4.3", "normalize-package-data": "^6.0.0", "parse-json": "^8.0.0", "type-fest": "^4.6.0", "unicorn-magic": "^0.1.0" } }, "sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA=="], - "readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + "readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], "readdir-glob": ["readdir-glob@1.1.3", "", { "dependencies": { "minimatch": "^5.1.0" } }, "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA=="], @@ -2627,8 +2612,6 @@ "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], - "sha.js": ["sha.js@2.4.12", "", { "dependencies": { "inherits": "^2.0.4", "safe-buffer": "^5.2.1", "to-buffer": "^1.2.0" }, "bin": { "sha.js": "bin.js" } }, "sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w=="], - "sharp": ["sharp@0.32.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.2", "node-addon-api": "^6.1.0", "prebuild-install": "^7.1.1", "semver": "^7.5.4", "simple-get": "^4.0.1", "tar-fs": "^3.0.4", "tunnel-agent": "^0.6.0" } }, "sha512-0dap3iysgDkNaPOaOL4X/0akdu0ma62GcdC2NBQ+93eqpePdDdr2/LM0sFdDSMmN7yS+odyZtPsb7tx/cYBKnQ=="], "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], @@ -2801,8 +2784,6 @@ "tmp-promise": ["tmp-promise@3.0.3", "", { "dependencies": { "tmp": "^0.2.0" } }, "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ=="], - "to-buffer": ["to-buffer@1.2.1", "", { "dependencies": { "isarray": "^2.0.5", "safe-buffer": "^5.2.1", "typed-array-buffer": "^1.0.3" } }, "sha512-tB82LpAIWjhLYbqjx3X4zEeHN6M8CiuOEy2JY8SEQVdYRe3CCHOFaqrBW1doLDrfpWhplcW7BL+bO3/6S3pcDQ=="], - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], "toad-cache": ["toad-cache@3.7.0", "", {}, "sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw=="], @@ -2843,8 +2824,6 @@ "type-is": ["type-is@2.0.1", "", { "dependencies": { "content-type": "^1.0.5", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw=="], - "typed-array-buffer": ["typed-array-buffer@1.0.3", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-typed-array": "^1.1.14" } }, "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw=="], - "typescript": ["typescript@5.8.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ=="], "ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="], @@ -3211,6 +3190,8 @@ "@openauthjs/solid/@openauthjs/openauth": ["@openauthjs/openauth@0.4.2", "", { "dependencies": { "@standard-schema/spec": "1.0.0-beta.3", "aws4fetch": "1.0.20", "jose": "5.9.6" }, "peerDependencies": { "arctic": "^2.2.2", "hono": "^4.0.0" } }, "sha512-8+Bia559iffrZXfQ0LWXrVVVriochS88pDtB8indyQ1S+40MQgDBu8aBzKt+fgSrTmoQGCTT+wlOXgbjc9qIcw=="], + "@opencode-ai/sdk/@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="], + "@opencode/cloud-web/solid-js": ["solid-js@1.9.5", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "^1.1.0", "seroval-plugins": "^1.1.0" } }, "sha512-ogI3DaFcyn6UhYhrgcyRAMbu/buBJitYQASZz5WzfQVPP10RD2AbCoRZ517psnezrasyCbWzIxZ6kVqet768xw=="], "@opentelemetry/instrumentation-grpc/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], @@ -3329,10 +3310,6 @@ "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "archiver/readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], - - "archiver-utils/readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], - "astro/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], "astro/diff": ["diff@5.2.0", "", {}, "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="], @@ -3345,6 +3322,8 @@ "bl/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], + "bl/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + "cacache/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], "cacheable-request/get-stream": ["get-stream@5.2.0", "", { "dependencies": { "pump": "^3.0.0" } }, "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA=="], @@ -3355,10 +3334,6 @@ "colorspace/color": ["color@3.2.1", "", { "dependencies": { "color-convert": "^1.9.3", "color-string": "^1.6.0" } }, "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA=="], - "compress-commons/readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], - - "crc32-stream/readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], - "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], "dax-sh/undici-types": ["undici-types@5.28.4", "", {}, "sha512-3OeMF5Lyowe8VW0skf5qaIE7Or3yS9LS7fvMUI0gg4YxpIBVg0L8BxCmROw2CcYhSkpR68Epz7CGc8MPj94Uww=="], @@ -3393,8 +3368,6 @@ "ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], - "isomorphic-git/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "lambda-local/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], "lazystream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], @@ -3489,6 +3462,10 @@ "read-pkg/unicorn-magic": ["unicorn-magic@0.1.0", "", {}, "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ=="], + "readable-stream/buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], + + "readable-stream/events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], + "readdir-glob/minimatch": ["minimatch@5.1.6", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g=="], "rollup-plugin-visualizer/open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="], @@ -3531,16 +3508,12 @@ "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], - "to-buffer/isarray": ["isarray@2.0.5", "", {}, "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="], - "tree-sitter/node-addon-api": ["node-addon-api@8.5.0", "", {}, "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A=="], "tree-sitter-bash/node-addon-api": ["node-addon-api@8.5.0", "", {}, "sha512-/bRZty2mXUIFY/xU5HLvveNHlswNJej+RnxBjOMkidWfwZzgTbPG1E3K5TOxRLOR+5hX7bSofy8yf1hZevMS8A=="], "unenv/mime": ["mime@3.0.0", "", { "bin": { "mime": "cli.js" } }, "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A=="], - "unicode-trie/pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], - "unifont/ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], "unimport/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], @@ -3561,6 +3534,10 @@ "vinxi/vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], + "winston/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + + "winston-transport/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + "wrangler/esbuild": ["esbuild@0.25.4", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.4", "@esbuild/android-arm": "0.25.4", "@esbuild/android-arm64": "0.25.4", "@esbuild/android-x64": "0.25.4", "@esbuild/darwin-arm64": "0.25.4", "@esbuild/darwin-x64": "0.25.4", "@esbuild/freebsd-arm64": "0.25.4", "@esbuild/freebsd-x64": "0.25.4", "@esbuild/linux-arm": "0.25.4", "@esbuild/linux-arm64": "0.25.4", "@esbuild/linux-ia32": "0.25.4", "@esbuild/linux-loong64": "0.25.4", "@esbuild/linux-mips64el": "0.25.4", "@esbuild/linux-ppc64": "0.25.4", "@esbuild/linux-riscv64": "0.25.4", "@esbuild/linux-s390x": "0.25.4", "@esbuild/linux-x64": "0.25.4", "@esbuild/netbsd-arm64": "0.25.4", "@esbuild/netbsd-x64": "0.25.4", "@esbuild/openbsd-arm64": "0.25.4", "@esbuild/openbsd-x64": "0.25.4", "@esbuild/sunos-x64": "0.25.4", "@esbuild/win32-arm64": "0.25.4", "@esbuild/win32-ia32": "0.25.4", "@esbuild/win32-x64": "0.25.4" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q=="], "wrangler/unenv": ["unenv@2.0.0-rc.19", "", { "dependencies": { "defu": "^6.1.4", "exsolve": "^1.0.7", "ohash": "^2.0.11", "pathe": "^2.0.3", "ufo": "^1.6.1" } }, "sha512-t/OMHBNAkknVCI7bVB9OWjUUAwhVv9vsPIAGnNUxnu3FxPQN11rjh0sksLMzc3g7IlTgvHmOTl4JM7JHpcv5wA=="], @@ -3579,8 +3556,6 @@ "yauzl/buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], - "zip-stream/readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], - "@astrojs/mdx/@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], "@astrojs/mdx/@astrojs/markdown-remark/@astrojs/prism": ["@astrojs/prism@3.3.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ=="], @@ -3771,14 +3746,6 @@ "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "archiver-utils/readable-stream/buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], - - "archiver-utils/readable-stream/events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], - - "archiver/readable-stream/buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], - - "archiver/readable-stream/events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], - "clipboardy/execa/get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], "clipboardy/execa/human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], @@ -3795,14 +3762,6 @@ "colorspace/color/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="], - "compress-commons/readable-stream/buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], - - "compress-commons/readable-stream/events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], - - "crc32-stream/readable-stream/buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], - - "crc32-stream/readable-stream/events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], - "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], "drizzle-kit/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.19.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA=="], @@ -3883,6 +3842,8 @@ "prebuild-install/tar-fs/tar-stream": ["tar-stream@2.2.0", "", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="], + "readable-stream/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + "rollup-plugin-visualizer/open/define-lazy-prop": ["define-lazy-prop@2.0.0", "", {}, "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="], "rollup-plugin-visualizer/open/is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], @@ -3959,10 +3920,6 @@ "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "zip-stream/readable-stream/buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], - - "zip-stream/readable-stream/events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], - "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from/@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], @@ -3991,22 +3948,16 @@ "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "archiver-utils/readable-stream/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - - "archiver/readable-stream/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - "clipboardy/execa/npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], "clipboardy/execa/onetime/mimic-fn": ["mimic-fn@4.0.0", "", {}, "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw=="], "colorspace/color/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], - "compress-commons/readable-stream/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - - "crc32-stream/readable-stream/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - "nitropack/c12/giget/nypm": ["nypm@0.6.1", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.2", "pathe": "^2.0.3", "pkg-types": "^2.2.0", "tinyexec": "^1.0.1" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-hlacBiRiv1k9hZFiphPUkfSQ/ZfQzZDzC+8z0wL3lvDAOUu/2NnChkKuMoMjNur/9OpKuz2QsIeiPVN0xM5Q0w=="], + "prebuild-install/tar-fs/tar-stream/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], + "rollup-plugin-visualizer/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "rollup-plugin-visualizer/yargs/cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], @@ -4015,8 +3966,6 @@ "rollup-plugin-visualizer/yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "zip-stream/readable-stream/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], - "@grpc/proto-loader/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "@grpc/proto-loader/yargs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 5e80b480bf..43908b8d31 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -42,7 +42,6 @@ "hono": "catalog:", "hono-openapi": "0.4.8", "ignore": "7.0.5", - "isomorphic-git": "1.32.1", "jsonc-parser": "3.3.1", "minimatch": "10.0.3", "open": "10.1.2", From d7a9f343c53d481802c134ce25691a8c150d59d2 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Thu, 28 Aug 2025 18:42:55 -0500 Subject: [PATCH 082/112] tui: show actual error if command fails (#2296) --- packages/tui/internal/app/app.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/tui/internal/app/app.go b/packages/tui/internal/app/app.go index 53272bf906..cbf12e504d 100644 --- a/packages/tui/internal/app/app.go +++ b/packages/tui/internal/app/app.go @@ -826,7 +826,7 @@ func (a *App) SendCommand(ctx context.Context, command string, args string) (*Ap ) if err != nil { slog.Error("Failed to execute command", "error", err) - return toast.NewErrorToast("Failed to execute command")() + return toast.NewErrorToast(fmt.Sprintf("Failed to execute command: %v", err))() } return nil }) @@ -858,7 +858,7 @@ func (a *App) SendShell(ctx context.Context, command string) (*App, tea.Cmd) { ) if err != nil { slog.Error("Failed to submit shell command", "error", err) - return toast.NewErrorToast("Failed to submit shell command")() + return toast.NewErrorToast(fmt.Sprintf("Failed to submit shell command: %v", err))() } return nil }) From b55231c106485affd3e13d6c2938f2f0c8395f46 Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Fri, 29 Aug 2025 12:04:20 +0000 Subject: [PATCH 083/112] ignore: update download stats 2025-08-29 --- STATS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/STATS.md b/STATS.md index b6ed1d56ed..d977fcb68b 100644 --- a/STATS.md +++ b/STATS.md @@ -62,3 +62,4 @@ | 2025-08-26 | 242,783 (+6,176) | 205,242 (+2,592) | 448,025 (+8,768) | | 2025-08-27 | 248,409 (+5,626) | 205,242 (+0) | 453,651 (+5,626) | | 2025-08-28 | 252,796 (+4,387) | 205,242 (+0) | 458,038 (+4,387) | +| 2025-08-29 | 256,045 (+3,249) | 211,075 (+5,833) | 467,120 (+9,082) | From 1a5b456bb63755969e601c464668d4e79e18917a Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Fri, 29 Aug 2025 09:47:08 -0500 Subject: [PATCH 084/112] fix: add additional encouragement for title gen (#2298) --- packages/opencode/src/session/index.ts | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index 5cd76124fd..e4a3162a65 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -705,6 +705,32 @@ export namespace Session { parts: userParts, }, ]), + // When dealing with huge blocks of context sometimes the llm will lose sight of + // parts of system prompt, you can usually get around this by just adding an additional + // reference after large context block that references instructions from system prompt + // and llm will "remember" it needs to do X or Y + ...MessageV2.toModelMessage([ + { + info: { + id: Identifier.ascending("message"), + role: "user", + sessionID: input.sessionID, + time: { + created: Date.now(), + }, + }, + parts: [ + { + type: "text", + id: Identifier.ascending("part"), + messageID: userMsg.id, + sessionID: input.sessionID, + text: "Output only a title for this conversation. No responses to content.", + synthetic: true, + }, + ], + }, + ]), ], model: small.language, }) From 7f5e5fccc8d9248871d59e5adbfe52a7d307d09a Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Fri, 29 Aug 2025 10:53:58 -0500 Subject: [PATCH 085/112] ignore: add error log for title gen failures (#2309) --- packages/opencode/src/session/index.ts | 30 +++----------------------- 1 file changed, 3 insertions(+), 27 deletions(-) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index e4a3162a65..a0b3be3c19 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -705,32 +705,6 @@ export namespace Session { parts: userParts, }, ]), - // When dealing with huge blocks of context sometimes the llm will lose sight of - // parts of system prompt, you can usually get around this by just adding an additional - // reference after large context block that references instructions from system prompt - // and llm will "remember" it needs to do X or Y - ...MessageV2.toModelMessage([ - { - info: { - id: Identifier.ascending("message"), - role: "user", - sessionID: input.sessionID, - time: { - created: Date.now(), - }, - }, - parts: [ - { - type: "text", - id: Identifier.ascending("part"), - messageID: userMsg.id, - sessionID: input.sessionID, - text: "Output only a title for this conversation. No responses to content.", - synthetic: true, - }, - ], - }, - ]), ], model: small.language, }) @@ -742,7 +716,9 @@ export namespace Session { draft.title = title.trim() }) }) - .catch(() => {}) + .catch((error) => { + log.error("failed to generate title", { error, model: small.info.id }) + }) } const agent = await Agent.get(inputAgent) From 4496cd4b64e51805b790728e67a018791e731cd6 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 29 Aug 2025 11:58:17 -0400 Subject: [PATCH 086/112] ignore: cloud solid fixes --- bun.lock | 463 ++++++------------ cloud/app/package.json | 2 +- cloud/app/src/context/auth.session.ts | 23 + cloud/app/src/context/{auth.tsx => auth.ts} | 47 +- cloud/app/src/context/auth.withActor.ts | 7 + .../src/routes/workspace/[workspaceID].tsx | 8 +- cloud/web/package.json | 2 +- package.json | 3 +- packages/web/package.json | 2 +- 9 files changed, 206 insertions(+), 351 deletions(-) create mode 100644 cloud/app/src/context/auth.session.ts rename cloud/app/src/context/{auth.tsx => auth.ts} (77%) create mode 100644 cloud/app/src/context/auth.withActor.ts diff --git a/bun.lock b/bun.lock index 432aaf37f9..fe4d984a93 100644 --- a/bun.lock +++ b/bun.lock @@ -20,7 +20,7 @@ "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.0", "@solidjs/start": "^1.1.0", - "solid-js": "^1.9.5", + "solid-js": "catalog:", "vinxi": "^0.5.7", }, }, @@ -67,7 +67,7 @@ "@solid-primitives/storage": "4.3.1", "@solidjs/meta": "0.29.4", "@solidjs/router": "0.15.3", - "solid-js": "1.9.5", + "solid-js": "catalog:", "solid-list": "0.3.0", }, "devDependencies": { @@ -188,7 +188,7 @@ "remeda": "2.26.0", "sharp": "0.32.5", "shiki": "3.4.2", - "solid-js": "1.9.7", + "solid-js": "catalog:", "toolbeam-docs-theme": "0.4.6", }, "devDependencies": { @@ -216,6 +216,7 @@ "ai": "5.0.8", "hono": "4.7.10", "remeda": "2.26.0", + "solid-js": "1.9.9", "typescript": "5.8.2", "zod": "3.25.76", }, @@ -246,11 +247,11 @@ "@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.1", "", { "dependencies": { "@astrojs/internal-helpers": "0.6.1", "@astrojs/prism": "3.2.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.1", "remark-smartypants": "^3.0.2", "shiki": "^3.0.0", "smol-toml": "^1.3.1", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.3" } }, "sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg=="], - "@astrojs/mdx": ["@astrojs/mdx@4.3.1", "", { "dependencies": { "@astrojs/markdown-remark": "6.3.3", "@mdx-js/mdx": "^3.1.0", "acorn": "^8.14.1", "es-module-lexer": "^1.6.0", "estree-util-visit": "^2.0.0", "hast-util-to-html": "^9.0.5", "kleur": "^4.1.5", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", "source-map": "^0.7.4", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-0ynzkFd5p2IFDLPAfAcGizg44WyS0qUr43nP2vQkvrPlpoPEMeeoi1xWiWsVqQNaZ0FOmNqfUviUn52nm9mLag=="], + "@astrojs/mdx": ["@astrojs/mdx@4.3.4", "", { "dependencies": { "@astrojs/markdown-remark": "6.3.6", "@mdx-js/mdx": "^3.1.0", "acorn": "^8.14.1", "es-module-lexer": "^1.6.0", "estree-util-visit": "^2.0.0", "hast-util-to-html": "^9.0.5", "kleur": "^4.1.5", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", "source-map": "^0.7.4", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-Ew3iP+6zuzzJWNEH5Qr1iknrue1heEfgmfuMpuwLaSwqlUiJQ0NDb2oxKosgWU1ROYmVf1H4KCmS6QdMWKyFjw=="], "@astrojs/prism": ["@astrojs/prism@3.2.0", "", { "dependencies": { "prismjs": "^1.29.0" } }, "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw=="], - "@astrojs/sitemap": ["@astrojs/sitemap@3.4.2", "", { "dependencies": { "sitemap": "^8.0.0", "stream-replace-string": "^2.0.0", "zod": "^3.24.4" } }, "sha512-wfN2dZzdkto6yaMtOFa/J9gc60YE3wl3rgSBoNJ+MU3lJVUMsDY9xf9uAVi8Mp/zEQKFDSJlQzBvqQUpw0Hf6g=="], + "@astrojs/sitemap": ["@astrojs/sitemap@3.5.1", "", { "dependencies": { "sitemap": "^8.0.0", "stream-replace-string": "^2.0.0", "zod": "^3.24.4" } }, "sha512-uX5z52GLtQTgOe8r3jeGmFRYrFe52mdpLYJzqjvL1cdy5Kg3MLOZEvaZ/OCH0fSq0t7e50uJQ6oBMZG0ffszBg=="], "@astrojs/solid-js": ["@astrojs/solid-js@5.1.0", "", { "dependencies": { "vite": "^6.3.5", "vite-plugin-solid": "^2.11.6" }, "peerDependencies": { "solid-devtools": "^0.30.1", "solid-js": "^1.8.5" }, "optionalPeers": ["solid-devtools"] }, "sha512-VmPHOU9k7m6HHCT2Y1mNzifilUnttlowBM36frGcfj5wERJE9Ci0QtWJbzdf6AlcoIirb7xVw+ByupU011Di9w=="], @@ -308,7 +309,7 @@ "@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.782.0", "", { "dependencies": { "@aws-sdk/types": "3.775.0", "@smithy/types": "^4.2.0", "@smithy/util-endpoints": "^3.0.2", "tslib": "^2.6.2" } }, "sha512-/RJOAO7o7HI6lEa4ASbFFLHGU9iPK876BhsVfnl54MvApPVYWQ9sHO0anOUim2S5lQTwd/6ghuH3rFYSq/+rdw=="], - "@aws-sdk/util-locate-window": ["@aws-sdk/util-locate-window@3.804.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-zVoRfpmBVPodYlnMjgVjfGoEZagyRF5IPn3Uo6ZvOZp24chnW/FRstH7ESDHDDRga4z3V+ElUQHKpFDXWyBW5A=="], + "@aws-sdk/util-locate-window": ["@aws-sdk/util-locate-window@3.873.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-xcVhZF6svjM5Rj89T1WzkjQmrTF6dpR2UvIHPMTnSZoNe6CixejPZ6f0JJ2kAhO8H+dUHwNBlsUgOTIKiK/Syg=="], "@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.775.0", "", { "dependencies": { "@aws-sdk/types": "3.775.0", "@smithy/types": "^4.2.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-txw2wkiJmZKVdDbscK7VBK+u+TJnRtlUjRTLei+elZg2ADhpQxfVAQl436FUeIv6AhB/oRHW6/K/EAGXUSWi0A=="], @@ -318,9 +319,9 @@ "@babel/compat-data": ["@babel/compat-data@7.28.0", "", {}, "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw=="], - "@babel/core": ["@babel/core@7.28.0", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.0", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.27.3", "@babel/helpers": "^7.27.6", "@babel/parser": "^7.28.0", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.0", "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ=="], + "@babel/core": ["@babel/core@7.28.3", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.3", "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.3", "@babel/types": "^7.28.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ=="], - "@babel/generator": ["@babel/generator@7.28.0", "", { "dependencies": { "@babel/parser": "^7.28.0", "@babel/types": "^7.28.0", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg=="], + "@babel/generator": ["@babel/generator@7.28.3", "", { "dependencies": { "@babel/parser": "^7.28.3", "@babel/types": "^7.28.2", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw=="], "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.27.3", "", { "dependencies": { "@babel/types": "^7.27.3" } }, "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg=="], @@ -334,7 +335,7 @@ "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.27.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.27.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg=="], + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.27.1", "", { "dependencies": { "@babel/types": "^7.27.1" } }, "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw=="], @@ -350,9 +351,9 @@ "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], - "@babel/helpers": ["@babel/helpers@7.28.2", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.2" } }, "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw=="], + "@babel/helpers": ["@babel/helpers@7.28.3", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.2" } }, "sha512-PTNtvUQihsAsDHMOP5pfobP8C6CM4JWXmP8DrEIt46c3r2bf87Ua1zoqevsMo9g+tWDwgWrFP5EIxuBx5RudAw=="], - "@babel/parser": ["@babel/parser@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.0" }, "bin": "./bin/babel-parser.js" }, "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g=="], + "@babel/parser": ["@babel/parser@7.28.3", "", { "dependencies": { "@babel/types": "^7.28.2" }, "bin": "./bin/babel-parser.js" }, "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA=="], "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w=="], @@ -364,11 +365,11 @@ "@babel/preset-typescript": ["@babel/preset-typescript@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", "@babel/plugin-transform-typescript": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ=="], - "@babel/runtime": ["@babel/runtime@7.28.2", "", {}, "sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA=="], + "@babel/runtime": ["@babel/runtime@7.28.3", "", {}, "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA=="], "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], - "@babel/traverse": ["@babel/traverse@7.28.0", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.0", "@babel/template": "^7.27.2", "@babel/types": "^7.28.0", "debug": "^4.3.1" } }, "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg=="], + "@babel/traverse": ["@babel/traverse@7.28.3", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", "@babel/types": "^7.28.2", "debug": "^4.3.1" } }, "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ=="], "@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], @@ -380,17 +381,17 @@ "@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.4.0", "", { "dependencies": { "mime": "^3.0.0" } }, "sha512-+tv3z+SPp+gqTIcImN9o0hqE9xyfQjI1XD9pL6NuKjua9B1y7mNYv0S9cP+QEbA4ppVgGZEmKOvHX5G5Ei1CVA=="], - "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.5.0", "", { "peerDependencies": { "unenv": "2.0.0-rc.19", "workerd": "^1.20250722.0" }, "optionalPeers": ["workerd"] }, "sha512-CZe9B2VbjIQjBTyc+KoZcN1oUcm4T6GgCXoel9O7647djHuSRAa6sM6G+NdxWArATZgeMMbsvn9C50GCcnIatA=="], + "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.7.0", "", { "peerDependencies": { "unenv": "2.0.0-rc.19", "workerd": "^1.20250816.0" }, "optionalPeers": ["workerd"] }, "sha512-0JbEj+KTCQ4nTIWg2q8Bou+fPxzG6/zwU5O/w6Cld6WEjLl+716foT+2bjg48h09hMtjTKkJdAh1m4LybBKGCg=="], - "@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20250730.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-X3egNyTjLQaECYe34x8Al7r4oXAhcN3a8+8qcpNCcq1sgtuHIeAwS9potgRR/mwkGfmrJn7nfAyDKC4vrkniQQ=="], + "@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20250823.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-yRLJc1cQNqQYcDViOk7kpTXnR5XuBP7B/Ms5KBdlQ6eTr2Vsg9mfKqWKInjzY8/Cx+p+Sic2Tbld42gcYkiM2A=="], - "@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20250730.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-/4bvcaGY/9v0rghgKboGiyPKKGQTbDnQ1EeY0oN0SSQH0Cp3OBzqwni/JRvh8TEaD+5azJnSFLlFZj9w7fo+hw=="], + "@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20250823.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-KJnikUe6J29Ga1QMPKNCc8eHD56DdBlu5XE5LoBH/AYRrbS5UI1d5F844hUWoFKJb8KRaPIH9F849HZWfNa1vw=="], - "@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20250730.0", "", { "os": "linux", "cpu": "x64" }, "sha512-I4ZsXYdNkqkJnzNFKADMufiLIzRdIRsN7dSH8UCPw2fYp1BbKA10AkKVqitFwBxIY8eOzQ6Vf7c41AjLQmtJqA=="], + "@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20250823.0", "", { "os": "linux", "cpu": "x64" }, "sha512-4QFXq4eDWEAK5QjGxRe0XUTBax1Fgarc08HETL6q0y/KPZp2nOTLfjLjklTn/qEiztafNFoJEIwhkiknHeOi/g=="], - "@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20250730.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-tTpO6139jFQ5vxgtBZgS8Y8R1jVidS4n7s37x5xO9bCWLZoL0kTj38UGZ8FENkTeaMxE9Mm//nbQol7TfJ2nZg=="], + "@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20250823.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-sODSrSVe4W/maoBu76qb0sJGBhxhSM2Q2tg/+G7q1IPgRZSzArMKIPrW6nBnmBrrG1O0X6aoAdID6w5hfuEM4g=="], - "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20250730.0", "", { "os": "win32", "cpu": "x64" }, "sha512-paVHgocuilMzOU+gEyKR/86j/yI+QzmSHRnqdd8OdQ37Hf6SyPX7kQj6VVNRXbzVHWix1WxaJsXfTGK1LK05wA=="], + "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20250823.0", "", { "os": "win32", "cpu": "x64" }, "sha512-WaNqUOXUnrcEI+i2NI4+okA9CrJMI9n2XTfVtDg/pLvcA/ZPTz23MEFMZU1splr4SslS1th1NBO38RMPnDB4rA=="], "@cloudflare/workers-types": ["@cloudflare/workers-types@4.20250522.0", "", {}, "sha512-9RIffHobc35JWeddzBguGgPa4wLDr5x5F94+0/qy7LiV6pTBQ/M5qGEN9VA16IDT3EUpYI0WKh6VpcmeVEtVtw=="], @@ -412,63 +413,63 @@ "@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="], - "@emnapi/runtime": ["@emnapi/runtime@1.4.5", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg=="], + "@emnapi/runtime": ["@emnapi/runtime@1.5.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ=="], "@esbuild-kit/core-utils": ["@esbuild-kit/core-utils@3.3.2", "", { "dependencies": { "esbuild": "~0.18.20", "source-map-support": "^0.5.21" } }, "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ=="], "@esbuild-kit/esm-loader": ["@esbuild-kit/esm-loader@2.6.5", "", { "dependencies": { "@esbuild-kit/core-utils": "^3.3.2", "get-tsconfig": "^4.7.0" } }, "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA=="], - "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.8", "", { "os": "aix", "cpu": "ppc64" }, "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.9", "", { "os": "aix", "cpu": "ppc64" }, "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA=="], - "@esbuild/android-arm": ["@esbuild/android-arm@0.25.8", "", { "os": "android", "cpu": "arm" }, "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw=="], + "@esbuild/android-arm": ["@esbuild/android-arm@0.25.9", "", { "os": "android", "cpu": "arm" }, "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ=="], - "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.8", "", { "os": "android", "cpu": "arm64" }, "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w=="], + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.9", "", { "os": "android", "cpu": "arm64" }, "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg=="], - "@esbuild/android-x64": ["@esbuild/android-x64@0.25.8", "", { "os": "android", "cpu": "x64" }, "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA=="], + "@esbuild/android-x64": ["@esbuild/android-x64@0.25.9", "", { "os": "android", "cpu": "x64" }, "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw=="], - "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.8", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw=="], + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.9", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg=="], - "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.8", "", { "os": "darwin", "cpu": "x64" }, "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg=="], + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.9", "", { "os": "darwin", "cpu": "x64" }, "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ=="], - "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.8", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA=="], + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.9", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q=="], - "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.8", "", { "os": "freebsd", "cpu": "x64" }, "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw=="], + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.9", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg=="], - "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.8", "", { "os": "linux", "cpu": "arm" }, "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg=="], + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.9", "", { "os": "linux", "cpu": "arm" }, "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw=="], - "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w=="], + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.9", "", { "os": "linux", "cpu": "arm64" }, "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw=="], - "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.8", "", { "os": "linux", "cpu": "ia32" }, "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg=="], + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.9", "", { "os": "linux", "cpu": "ia32" }, "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A=="], - "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.8", "", { "os": "linux", "cpu": "none" }, "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ=="], + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.9", "", { "os": "linux", "cpu": "none" }, "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ=="], - "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.8", "", { "os": "linux", "cpu": "none" }, "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw=="], + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.9", "", { "os": "linux", "cpu": "none" }, "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA=="], - "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.8", "", { "os": "linux", "cpu": "ppc64" }, "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ=="], + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.9", "", { "os": "linux", "cpu": "ppc64" }, "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w=="], - "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.8", "", { "os": "linux", "cpu": "none" }, "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg=="], + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.9", "", { "os": "linux", "cpu": "none" }, "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg=="], - "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.8", "", { "os": "linux", "cpu": "s390x" }, "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg=="], + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.9", "", { "os": "linux", "cpu": "s390x" }, "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA=="], - "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.8", "", { "os": "linux", "cpu": "x64" }, "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ=="], + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.9", "", { "os": "linux", "cpu": "x64" }, "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg=="], - "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.8", "", { "os": "none", "cpu": "arm64" }, "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw=="], + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.9", "", { "os": "none", "cpu": "arm64" }, "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q=="], - "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.8", "", { "os": "none", "cpu": "x64" }, "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg=="], + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.9", "", { "os": "none", "cpu": "x64" }, "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g=="], - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.8", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ=="], + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.9", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ=="], - "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.8", "", { "os": "openbsd", "cpu": "x64" }, "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ=="], + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.9", "", { "os": "openbsd", "cpu": "x64" }, "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA=="], - "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.8", "", { "os": "none", "cpu": "arm64" }, "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg=="], + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.9", "", { "os": "none", "cpu": "arm64" }, "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg=="], - "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.8", "", { "os": "sunos", "cpu": "x64" }, "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w=="], + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.9", "", { "os": "sunos", "cpu": "x64" }, "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw=="], - "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.8", "", { "os": "win32", "cpu": "arm64" }, "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ=="], + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.9", "", { "os": "win32", "cpu": "arm64" }, "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ=="], - "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.8", "", { "os": "win32", "cpu": "ia32" }, "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg=="], + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.9", "", { "os": "win32", "cpu": "ia32" }, "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww=="], - "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.8", "", { "os": "win32", "cpu": "x64" }, "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw=="], + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.9", "", { "os": "win32", "cpu": "x64" }, "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ=="], "@expressive-code/core": ["@expressive-code/core@0.41.3", "", { "dependencies": { "@ctrl/tinycolor": "^4.0.4", "hast-util-select": "^6.0.2", "hast-util-to-html": "^9.0.1", "hast-util-to-text": "^4.0.1", "hastscript": "^9.0.0", "postcss": "^8.4.38", "postcss-nested": "^6.0.1", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1" } }, "sha512-9qzohqU7O0+JwMEEgQhnBPOw5DtsQRBXhW++5fvEywsuX44vCGGof1SL5OvPElvNgaWZ4pFZAFSlkNOkGyLwSQ=="], @@ -478,11 +479,11 @@ "@expressive-code/plugin-text-markers": ["@expressive-code/plugin-text-markers@0.41.3", "", { "dependencies": { "@expressive-code/core": "^0.41.3" } }, "sha512-SN8tkIzDpA0HLAscEYD2IVrfLiid6qEdE9QLlGVSxO1KEw7qYvjpbNBQjUjMr5/jvTJ7ys6zysU2vLPHE0sb2g=="], - "@fastify/busboy": ["@fastify/busboy@3.1.1", "", {}, "sha512-5DGmA8FTdB2XbDeEwc/5ZXBl6UbBAyBOOLlPuBnZ/N1SwdH9Ii+cOX3tBROlDgcTXxjOYnLMVoKk9+FXAw0CJw=="], + "@fastify/busboy": ["@fastify/busboy@3.2.0", "", {}, "sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA=="], "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], - "@floating-ui/dom": ["@floating-ui/dom@1.7.3", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-uZA413QEpNuhtb3/iIKoYMSK07keHPYeXF02Zhd6e213j+d1NamLix/mCLxBUDW/Gx52sPH2m+chlUsyaBs/Ag=="], + "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], @@ -500,7 +501,7 @@ "@ibm/plex": ["@ibm/plex@6.4.1", "", { "dependencies": { "@ibm/telemetry-js": "^1.5.1" } }, "sha512-fnsipQywHt3zWvsnlyYKMikcVI7E2fEwpiPnIHFqlbByXVfQfANAAeJk1IV4mNnxhppUIDlhU0TzwYwL++Rn2g=="], - "@ibm/telemetry-js": ["@ibm/telemetry-js@1.9.1", "", { "bin": { "ibmtelemetry": "dist/collect.js" } }, "sha512-qq8RPafUJHUQieXVCte1kbJEx6JctWzbA/YkXzopbfzIDRT2+hbR9QmgH+KH7bDDNRcDbdHWvHfwJKzThlMtPg=="], + "@ibm/telemetry-js": ["@ibm/telemetry-js@1.10.1", "", { "bin": { "ibmtelemetry": "dist/collect.js" } }, "sha512-aQcDq03BKbgNnkHujHbA950wJVHtJnY0PsMHKyxgRvr3XPgInWjDfgxJQmKIp9I8Vy2wpfe0cGmduJfIX0HewQ=="], "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="], @@ -540,11 +541,11 @@ "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], - "@internationalized/date": ["@internationalized/date@3.8.2", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-/wENk7CbvLbkUvX1tu0mwq49CVkkWpkXubGel6birjRPyo6uQ4nQpnq5xZu823zRCwwn82zgHrvgF1vZyvmVgA=="], + "@internationalized/date": ["@internationalized/date@3.9.0", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-yaN3brAnHRD+4KyyOsJyk49XUvj2wtbNACSqg0bz3u8t2VuzhC8Q5dfRnrSxjnnbDb+ienBnkn1TzQfE154vyg=="], - "@internationalized/number": ["@internationalized/number@3.6.4", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-P+/h+RDaiX8EGt3shB9AYM1+QgkvHmJ5rKi4/59k4sg9g58k9rqsRW0WxRO7jCoHyvVbFRRFKmVTdFYdehrxHg=="], + "@internationalized/number": ["@internationalized/number@3.6.5", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g=="], - "@ioredis/commands": ["@ioredis/commands@1.3.0", "", {}, "sha512-M/T6Zewn7sDaBQEqIZ8Rb+i9y8qfGmq+5SDFSf9sA2lUZTmdDLVdOiQaeDp+Q4wElZ9HG1GAX5KhDaidp6LQsQ=="], + "@ioredis/commands": ["@ioredis/commands@1.3.1", "", {}, "sha512-bYtU8avhGIcje3IhvF9aSjsa5URMZBHnwKtOvXsT4sfYy9gppW11gLPT/9oNqlJZD47yPKveQFTAFWpHjKvUoQ=="], "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], @@ -556,15 +557,17 @@ "@isaacs/string-locale-compare": ["@isaacs/string-locale-compare@1.1.0", "", {}, "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ=="], - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.12", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg=="], + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], + + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], "@jridgewell/source-map": ["@jridgewell/source-map@0.3.11", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25" } }, "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA=="], - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.4", "", {}, "sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw=="], + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.29", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ=="], + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.30", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q=="], "@js-sdsl/ordered-map": ["@js-sdsl/ordered-map@4.4.2", "", {}, "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw=="], @@ -800,7 +803,7 @@ "@protobufjs/utf8": ["@protobufjs/utf8@1.1.0", "", {}, "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw=="], - "@pulumi/pulumi": ["@pulumi/pulumi@3.188.0", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^7.3.1", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.1.1", "google-protobuf": "^3.5.0", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.0", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "picomatch": "^3.0.1", "pkg-dir": "^7.0.0", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-c2L2QMq1bNo+1TxuoMQKQM7fiIZOMAAjDaIr2JKyg/ADGi7dhpKckEDbg43EMlzFUtI7t0mkiUYTaVPVcZ1kqg=="], + "@pulumi/pulumi": ["@pulumi/pulumi@3.192.0", "", { "dependencies": { "@grpc/grpc-js": "^1.10.1", "@logdna/tail-file": "^2.0.6", "@npmcli/arborist": "^7.3.1", "@opentelemetry/api": "^1.9", "@opentelemetry/exporter-zipkin": "^1.28", "@opentelemetry/instrumentation": "^0.55", "@opentelemetry/instrumentation-grpc": "^0.55", "@opentelemetry/resources": "^1.28", "@opentelemetry/sdk-trace-base": "^1.28", "@opentelemetry/sdk-trace-node": "^1.28", "@types/google-protobuf": "^3.15.5", "@types/semver": "^7.5.6", "@types/tmp": "^0.2.6", "execa": "^5.1.0", "fdir": "^6.1.1", "google-protobuf": "^3.21.4", "got": "^11.8.6", "ini": "^2.0.0", "js-yaml": "^3.14.0", "minimist": "^1.2.6", "normalize-package-data": "^6.0.0", "picomatch": "^3.0.1", "pkg-dir": "^7.0.0", "require-from-string": "^2.0.1", "semver": "^7.5.2", "source-map-support": "^0.5.6", "tmp": "^0.2.4", "upath": "^1.1.0" }, "peerDependencies": { "ts-node": ">= 7.0.1 < 12", "typescript": ">= 3.8.3 < 6" }, "optionalPeers": ["ts-node", "typescript"] }, "sha512-D6UdSBTP4SeNRdgoAMnpyCOECkM0e6KG9Sw3E7oBWmyK3swgNrFQ6Nygym/mNI8MbsAh+KOw6QtjC298lbwk8Q=="], "@rollup/plugin-alias": ["@rollup/plugin-alias@5.1.1", "", { "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-PR9zDb+rOzkRb2VD+EuKB7UC41vU5DIwZ5qqCpk0KJudcWAyi8rvYOhS7+L5aZCspw1stTViLgN5v6FF1p5cgQ=="], @@ -818,45 +821,45 @@ "@rollup/pluginutils": ["@rollup/pluginutils@5.2.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.46.2", "", { "os": "android", "cpu": "arm" }, "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.49.0", "", { "os": "android", "cpu": "arm" }, "sha512-rlKIeL854Ed0e09QGYFlmDNbka6I3EQFw7iZuugQjMb11KMpJCLPFL4ZPbMfaEhLADEL1yx0oujGkBQ7+qW3eA=="], - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.46.2", "", { "os": "android", "cpu": "arm64" }, "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ=="], + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.49.0", "", { "os": "android", "cpu": "arm64" }, "sha512-cqPpZdKUSQYRtLLr6R4X3sD4jCBO1zUmeo3qrWBCqYIeH8Q3KRL4F3V7XJ2Rm8/RJOQBZuqzQGWPjjvFUcYa/w=="], - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.46.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ=="], + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.49.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-99kMMSMQT7got6iYX3yyIiJfFndpojBmkHfTc1rIje8VbjhmqBXE+nb7ZZP3A5skLyujvT0eIUCUsxAe6NjWbw=="], - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.46.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA=="], + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.49.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-y8cXoD3wdWUDpjOLMKLx6l+NFz3NlkWKcBCBfttUn+VGSfgsQ5o/yDUGtzE9HvsodkP0+16N0P4Ty1VuhtRUGg=="], - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.46.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg=="], + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.49.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-3mY5Pr7qv4GS4ZvWoSP8zha8YoiqrU+e0ViPvB549jvliBbdNLrg2ywPGkgLC3cmvN8ya3za+Q2xVyT6z+vZqA=="], - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.46.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw=="], + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.49.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-C9KzzOAQU5gU4kG8DTk+tjdKjpWhVWd5uVkinCwwFub2m7cDYLOdtXoMrExfeBmeRy9kBQMkiyJ+HULyF1yj9w=="], - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.46.2", "", { "os": "linux", "cpu": "arm" }, "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA=="], + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.49.0", "", { "os": "linux", "cpu": "arm" }, "sha512-OVSQgEZDVLnTbMq5NBs6xkmz3AADByCWI4RdKSFNlDsYXdFtlxS59J+w+LippJe8KcmeSSM3ba+GlsM9+WwC1w=="], - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.46.2", "", { "os": "linux", "cpu": "arm" }, "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ=="], + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.49.0", "", { "os": "linux", "cpu": "arm" }, "sha512-ZnfSFA7fDUHNa4P3VwAcfaBLakCbYaxCk0jUnS3dTou9P95kwoOLAMlT3WmEJDBCSrOEFFV0Y1HXiwfLYJuLlA=="], - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.46.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng=="], + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.49.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-Z81u+gfrobVK2iV7GqZCBfEB1y6+I61AH466lNK+xy1jfqFLiQ9Qv716WUM5fxFrYxwC7ziVdZRU9qvGHkYIJg=="], - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.46.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg=="], + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.49.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-zoAwS0KCXSnTp9NH/h9aamBAIve0DXeYpll85shf9NJ0URjSTzzS+Z9evmolN+ICfD3v8skKUPyk2PO0uGdFqg=="], - "@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.46.2", "", { "os": "linux", "cpu": "none" }, "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA=="], + "@rollup/rollup-linux-loongarch64-gnu": ["@rollup/rollup-linux-loongarch64-gnu@4.49.0", "", { "os": "linux", "cpu": "none" }, "sha512-2QyUyQQ1ZtwZGiq0nvODL+vLJBtciItC3/5cYN8ncDQcv5avrt2MbKt1XU/vFAJlLta5KujqyHdYtdag4YEjYQ=="], - "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.46.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw=="], + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.49.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-k9aEmOWt+mrMuD3skjVJSSxHckJp+SiFzFG+v8JLXbc/xi9hv2icSkR3U7uQzqy+/QbbYY7iNB9eDTwrELo14g=="], - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.46.2", "", { "os": "linux", "cpu": "none" }, "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ=="], + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.49.0", "", { "os": "linux", "cpu": "none" }, "sha512-rDKRFFIWJ/zJn6uk2IdYLc09Z7zkE5IFIOWqpuU0o6ZpHcdniAyWkwSUWE/Z25N/wNDmFHHMzin84qW7Wzkjsw=="], - "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.46.2", "", { "os": "linux", "cpu": "none" }, "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw=="], + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.49.0", "", { "os": "linux", "cpu": "none" }, "sha512-FkkhIY/hYFVnOzz1WeV3S9Bd1h0hda/gRqvZCMpHWDHdiIHn6pqsY3b5eSbvGccWHMQ1uUzgZTKS4oGpykf8Tw=="], - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.46.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA=="], + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.49.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-gRf5c+A7QiOG3UwLyOOtyJMD31JJhMjBvpfhAitPAoqZFcOeK3Kc1Veg1z/trmt+2P6F/biT02fU19GGTS529A=="], - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.46.2", "", { "os": "linux", "cpu": "x64" }, "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA=="], + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.49.0", "", { "os": "linux", "cpu": "x64" }, "sha512-BR7+blScdLW1h/2hB/2oXM+dhTmpW3rQt1DeSiCP9mc2NMMkqVgjIN3DDsNpKmezffGC9R8XKVOLmBkRUcK/sA=="], - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.46.2", "", { "os": "linux", "cpu": "x64" }, "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA=="], + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.49.0", "", { "os": "linux", "cpu": "x64" }, "sha512-hDMOAe+6nX3V5ei1I7Au3wcr9h3ktKzDvF2ne5ovX8RZiAHEtX1A5SNNk4zt1Qt77CmnbqT+upb/umzoPMWiPg=="], - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.46.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g=="], + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.49.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-wkNRzfiIGaElC9kXUT+HLx17z7D0jl+9tGYRKwd8r7cUqTL7GYAvgUY++U2hK6Ar7z5Z6IRRoWC8kQxpmM7TDA=="], - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.46.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ=="], + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.49.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-gq5aW/SyNpjp71AAzroH37DtINDcX1Qw2iv9Chyz49ZgdOP3NV8QCyKZUrGsYX9Yyggj5soFiRCgsL3HwD8TdA=="], - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.46.2", "", { "os": "win32", "cpu": "x64" }, "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg=="], + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.49.0", "", { "os": "win32", "cpu": "x64" }, "sha512-gEtqFbzmZLFk2xKh7g0Rlo8xzho8KrEFEkzvHbfUGkrgXOpZ4XagQ6n+wIZFNh1nTb8UD16J4nFSFKXYgnbdBg=="], "@shikijs/core": ["@shikijs/core@3.4.2", "", { "dependencies": { "@shikijs/types": "3.4.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-AG8vnSi1W2pbgR2B911EfGqtLE9c4hQBYkv/x7Z+Kt0VxhgQKcW7UNDVYsu9YxwV6u+OJrvdJrMq6DNWoBjihQ=="], @@ -894,11 +897,11 @@ "@smithy/config-resolver": ["@smithy/config-resolver@4.1.5", "", { "dependencies": { "@smithy/node-config-provider": "^4.1.4", "@smithy/types": "^4.3.2", "@smithy/util-config-provider": "^4.0.0", "@smithy/util-middleware": "^4.0.5", "tslib": "^2.6.2" } }, "sha512-viuHMxBAqydkB0AfWwHIdwf/PRH2z5KHGUzqyRtS/Wv+n3IHI993Sk76VCA7dD/+GzgGOmlJDITfPcJC1nIVIw=="], - "@smithy/core": ["@smithy/core@3.8.0", "", { "dependencies": { "@smithy/middleware-serde": "^4.0.9", "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.5", "@smithy/util-stream": "^4.2.4", "@smithy/util-utf8": "^4.0.0", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "sha512-EYqsIYJmkR1VhVE9pccnk353xhs+lB6btdutJEtsp7R055haMJp2yE16eSxw8fv+G0WUY6vqxyYOP8kOqawxYQ=="], + "@smithy/core": ["@smithy/core@3.9.0", "", { "dependencies": { "@smithy/middleware-serde": "^4.0.9", "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-middleware": "^4.0.5", "@smithy/util-stream": "^4.2.4", "@smithy/util-utf8": "^4.0.0", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "sha512-B/GknvCfS3llXd/b++hcrwIuqnEozQDnRL4sBmOac5/z/dr0/yG1PURNPOyU4Lsiy1IyTj8scPxVqRs5dYWf6A=="], "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.0.7", "", { "dependencies": { "@smithy/node-config-provider": "^4.1.4", "@smithy/property-provider": "^4.0.5", "@smithy/types": "^4.3.2", "@smithy/url-parser": "^4.0.5", "tslib": "^2.6.2" } }, "sha512-dDzrMXA8d8riFNiPvytxn0mNwR4B3h8lgrQ5UjAGu6T9z/kRg/Xncf4tEQHE/+t25sY8IH3CowcmWi+1U5B1Gw=="], - "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.0.4", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.3.1", "@smithy/util-hex-encoding": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-7XoWfZqWb/QoR/rAU4VSi0mWnO2vu9/ltS6JZ5ZSZv0eovLVfDfu0/AX4ub33RsJTOth3TiFWSHS5YdztvFnig=="], + "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.0.5", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.3.2", "@smithy/util-hex-encoding": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-miEUN+nz2UTNoRYRhRqVTJCx7jMeILdAurStT2XoS+mhokkmz1xAPp95DFW9Gxt4iF2VBqpeF9HbTQ3kY1viOA=="], "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.1.1", "", { "dependencies": { "@smithy/protocol-http": "^5.1.3", "@smithy/querystring-builder": "^4.0.5", "@smithy/types": "^4.3.2", "@smithy/util-base64": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-61WjM0PWmZJR+SnmzaKI7t7G0UkkNFboDpzIdzSoy7TByUzlxo18Qlh9s71qug4AY4hlH/CwXdubMtkcNEb/sQ=="], @@ -910,9 +913,9 @@ "@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.0.5", "", { "dependencies": { "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-l1jlNZoYzoCC7p0zCtBDE5OBXZ95yMKlRlftooE5jPWQn4YBPLgsp+oeHp7iMHaTGoUdFqmHOPa8c9G3gBsRpQ=="], - "@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.1.18", "", { "dependencies": { "@smithy/core": "^3.8.0", "@smithy/middleware-serde": "^4.0.9", "@smithy/node-config-provider": "^4.1.4", "@smithy/shared-ini-file-loader": "^4.0.5", "@smithy/types": "^4.3.2", "@smithy/url-parser": "^4.0.5", "@smithy/util-middleware": "^4.0.5", "tslib": "^2.6.2" } }, "sha512-ZhvqcVRPZxnZlokcPaTwb+r+h4yOIOCJmx0v2d1bpVlmP465g3qpVSf7wxcq5zZdu4jb0H4yIMxuPwDJSQc3MQ=="], + "@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.1.19", "", { "dependencies": { "@smithy/core": "^3.9.0", "@smithy/middleware-serde": "^4.0.9", "@smithy/node-config-provider": "^4.1.4", "@smithy/shared-ini-file-loader": "^4.0.5", "@smithy/types": "^4.3.2", "@smithy/url-parser": "^4.0.5", "@smithy/util-middleware": "^4.0.5", "tslib": "^2.6.2" } }, "sha512-EAlEPncqo03siNZJ9Tm6adKCQ+sw5fNU8ncxWwaH0zTCwMPsgmERTi6CEKaermZdgJb+4Yvh0NFm36HeO4PGgQ=="], - "@smithy/middleware-retry": ["@smithy/middleware-retry@4.1.19", "", { "dependencies": { "@smithy/node-config-provider": "^4.1.4", "@smithy/protocol-http": "^5.1.3", "@smithy/service-error-classification": "^4.0.7", "@smithy/smithy-client": "^4.4.10", "@smithy/types": "^4.3.2", "@smithy/util-middleware": "^4.0.5", "@smithy/util-retry": "^4.0.7", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "sha512-X58zx/NVECjeuUB6A8HBu4bhx72EoUz+T5jTMIyeNKx2lf+Gs9TmWPNNkH+5QF0COjpInP/xSpJGJ7xEnAklQQ=="], + "@smithy/middleware-retry": ["@smithy/middleware-retry@4.1.20", "", { "dependencies": { "@smithy/node-config-provider": "^4.1.4", "@smithy/protocol-http": "^5.1.3", "@smithy/service-error-classification": "^4.0.7", "@smithy/smithy-client": "^4.5.0", "@smithy/types": "^4.3.2", "@smithy/util-middleware": "^4.0.5", "@smithy/util-retry": "^4.0.7", "@types/uuid": "^9.0.1", "tslib": "^2.6.2", "uuid": "^9.0.1" } }, "sha512-T3maNEm3Masae99eFdx1Q7PIqBBEVOvRd5hralqKZNeIivnoGNx5OFtI3DiZ5gCjUkl0mNondlzSXeVxkinh7Q=="], "@smithy/middleware-serde": ["@smithy/middleware-serde@4.0.9", "", { "dependencies": { "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-uAFFR4dpeoJPGz8x9mhxp+RPjo5wW0QEEIPPPbLXiRRWeCATf/Km3gKIVR5vaP8bN1kgsPhcEeh+IZvUlBv6Xg=="], @@ -936,9 +939,9 @@ "@smithy/signature-v4": ["@smithy/signature-v4@5.1.3", "", { "dependencies": { "@smithy/is-array-buffer": "^4.0.0", "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "@smithy/util-hex-encoding": "^4.0.0", "@smithy/util-middleware": "^4.0.5", "@smithy/util-uri-escape": "^4.0.0", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-mARDSXSEgllNzMw6N+mC+r1AQlEBO3meEAkR/UlfAgnMzJUB3goRBWgip1EAMG99wh36MDqzo86SfIX5Y+VEaw=="], - "@smithy/smithy-client": ["@smithy/smithy-client@4.4.10", "", { "dependencies": { "@smithy/core": "^3.8.0", "@smithy/middleware-endpoint": "^4.1.18", "@smithy/middleware-stack": "^4.0.5", "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "@smithy/util-stream": "^4.2.4", "tslib": "^2.6.2" } }, "sha512-iW6HjXqN0oPtRS0NK/zzZ4zZeGESIFcxj2FkWed3mcK8jdSdHzvnCKXSjvewESKAgGKAbJRA+OsaqKhkdYRbQQ=="], + "@smithy/smithy-client": ["@smithy/smithy-client@4.5.0", "", { "dependencies": { "@smithy/core": "^3.9.0", "@smithy/middleware-endpoint": "^4.1.19", "@smithy/middleware-stack": "^4.0.5", "@smithy/protocol-http": "^5.1.3", "@smithy/types": "^4.3.2", "@smithy/util-stream": "^4.2.4", "tslib": "^2.6.2" } }, "sha512-ZSdE3vl0MuVbEwJBxSftm0J5nL/gw76xp5WF13zW9cN18MFuFXD5/LV0QD8P+sCU5bSWGyy6CTgUupE1HhOo1A=="], - "@smithy/types": ["@smithy/types@4.3.1", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-UqKOQBL2x6+HWl3P+3QqFD4ncKq0I8Nuz9QItGv5WuKuMHuuwlhvqcZCoXGfc+P1QmfJE7VieykoYYmrOoFJxA=="], + "@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], "@smithy/url-parser": ["@smithy/url-parser@4.0.5", "", { "dependencies": { "@smithy/querystring-parser": "^4.0.5", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-j+733Um7f1/DXjYhCbvNXABV53NyCRRA54C7bNEIxNPs0YjfRxeMKjjgm2jvTYrciZyCjsicHwQ6Q0ylo+NAUw=="], @@ -952,9 +955,9 @@ "@smithy/util-config-provider": ["@smithy/util-config-provider@4.0.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-L1RBVzLyfE8OXH+1hsJ8p+acNUSirQnWQ6/EgpchV88G6zGBTDPdXiiExei6Z1wR2RxYvxY/XLw6AMNCCt8H3w=="], - "@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.0.26", "", { "dependencies": { "@smithy/property-provider": "^4.0.5", "@smithy/smithy-client": "^4.4.10", "@smithy/types": "^4.3.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-xgl75aHIS/3rrGp7iTxQAOELYeyiwBu+eEgAk4xfKwJJ0L8VUjhO2shsDpeil54BOFsqmk5xfdesiewbUY5tKQ=="], + "@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.0.27", "", { "dependencies": { "@smithy/property-provider": "^4.0.5", "@smithy/smithy-client": "^4.5.0", "@smithy/types": "^4.3.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-i/Fu6AFT5014VJNgWxKomBJP/GB5uuOsM4iHdcmplLm8B1eAqnRItw4lT2qpdO+mf+6TFmf6dGcggGLAVMZJsQ=="], - "@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.0.26", "", { "dependencies": { "@smithy/config-resolver": "^4.1.5", "@smithy/credential-provider-imds": "^4.0.7", "@smithy/node-config-provider": "^4.1.4", "@smithy/property-provider": "^4.0.5", "@smithy/smithy-client": "^4.4.10", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-z81yyIkGiLLYVDetKTUeCZQ8x20EEzvQjrqJtb/mXnevLq2+w3XCEWTJ2pMp401b6BkEkHVfXb/cROBpVauLMQ=="], + "@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.0.27", "", { "dependencies": { "@smithy/config-resolver": "^4.1.5", "@smithy/credential-provider-imds": "^4.0.7", "@smithy/node-config-provider": "^4.1.4", "@smithy/property-provider": "^4.0.5", "@smithy/smithy-client": "^4.5.0", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-3W0qClMyxl/ELqTA39aNw1N+pN0IjpXT7lPFvZ8zTxqVFP7XCpACB9QufmN4FQtd39xbgS7/Lekn7LmDa63I5w=="], "@smithy/util-endpoints": ["@smithy/util-endpoints@3.0.7", "", { "dependencies": { "@smithy/node-config-provider": "^4.1.4", "@smithy/types": "^4.3.2", "tslib": "^2.6.2" } }, "sha512-klGBP+RpBp6V5JbrY2C/VKnHXn3d5V2YrifZbmMY8os7M6m8wdYFoO6w/fe5VkP+YVwrEktW3IWYaSQVNZJ8oQ=="], @@ -1028,7 +1031,7 @@ "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], - "@types/babel__traverse": ["@types/babel__traverse@7.20.7", "", { "dependencies": { "@babel/types": "^7.20.7" } }, "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng=="], + "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], "@types/braces": ["@types/braces@3.0.5", "", {}, "sha512-SQFof9H+LXeWNz8wDe7oN5zu7ket0qwMu5vZubW4GCJ8Kkeh6nBWUz87+KTz/G3Kqsrp0j/W253XJb3KMEeg3w=="], @@ -1072,9 +1075,7 @@ "@types/normalize-package-data": ["@types/normalize-package-data@2.4.4", "", {}, "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA=="], - "@types/pg": ["@types/pg@8.15.4", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-I6UNVBAoYbvuWkkU3oosC8yxqH21f4/Jc4DK71JLG3dT2mdlGe1z+ep/LQGXaKaOgcvUrsQoPRqfgtMcvZiJhg=="], - - "@types/react": ["@types/react@19.1.9", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA=="], + "@types/react": ["@types/react@19.1.12", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-cMoR+FoAf/Jyq6+Df2/Z41jISvGZZ2eTlnsaJRptmZ76Caldwy1odD4xTr/gNV9VLj0AWgg/nmkevIyUfIIq5w=="], "@types/resolve": ["@types/resolve@1.20.2", "", {}, "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q=="], @@ -1102,15 +1103,15 @@ "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], - "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.39.1", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.39.1", "@typescript-eslint/types": "^8.39.1", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-8fZxek3ONTwBu9ptw5nCKqZOSkXshZB7uAxuFF0J/wTMkKydjXCzqqga7MlFMpHi9DoG4BadhmTkITBcg8Aybw=="], + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.41.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.41.0", "@typescript-eslint/types": "^8.41.0", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ=="], - "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.39.1", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ePUPGVtTMR8XMU2Hee8kD0Pu4NDE1CN9Q1sxGSGd/mbOtGZDM7pnhXNJnzW63zk/q+Z54zVzj44HtwXln5CvHA=="], + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.41.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw=="], - "@typescript-eslint/types": ["@typescript-eslint/types@8.39.1", "", {}, "sha512-7sPDKQQp+S11laqTrhHqeAbsCfMkwJMrV7oTDvtDds4mEofJYir414bYKUEb8YPUm9QL3U+8f6L6YExSoAGdQw=="], + "@typescript-eslint/types": ["@typescript-eslint/types@8.41.0", "", {}, "sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag=="], - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.39.1", "", { "dependencies": { "@typescript-eslint/project-service": "8.39.1", "@typescript-eslint/tsconfig-utils": "8.39.1", "@typescript-eslint/types": "8.39.1", "@typescript-eslint/visitor-keys": "8.39.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-EKkpcPuIux48dddVDXyQBlKdeTPMmALqBUbEk38McWv0qVEZwOpVJBi7ugK5qVNgeuYjGNQxrrnoM/5+TI/BPw=="], + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.41.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.41.0", "@typescript-eslint/tsconfig-utils": "8.41.0", "@typescript-eslint/types": "8.41.0", "@typescript-eslint/visitor-keys": "8.41.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ=="], - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.39.1", "", { "dependencies": { "@typescript-eslint/types": "8.39.1", "eslint-visitor-keys": "^4.2.1" } }, "sha512-W8FQi6kEh2e8zVhQ0eeRnxdvIoOkAp/CPAahcNio6nO9dsIwb9b34z90KOlheoyuVf6LSOEdjlkxSkapNEc+4A=="], + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.41.0", "", { "dependencies": { "@typescript-eslint/types": "8.41.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg=="], "@ungap/structured-clone": ["@ungap/structured-clone@1.3.0", "", {}, "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g=="], @@ -1122,15 +1123,15 @@ "@vinxi/server-components": ["@vinxi/server-components@0.5.1", "", { "dependencies": { "@vinxi/plugin-directives": "0.5.1", "acorn": "^8.10.0", "acorn-loose": "^8.3.0", "acorn-typescript": "^1.4.3", "astring": "^1.8.6", "magicast": "^0.2.10", "recast": "^0.23.4" }, "peerDependencies": { "vinxi": "^0.5.5" } }, "sha512-0BsG95qac3dkhfdRZxqzqYWJE4NvPL7ILlV43B6K6ho1etXWB2e5b0IxsUAUbyqpqiXM7mSRivojuXjb2G4OsQ=="], - "@vue/compiler-core": ["@vue/compiler-core@3.5.18", "", { "dependencies": { "@babel/parser": "^7.28.0", "@vue/shared": "3.5.18", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw=="], + "@vue/compiler-core": ["@vue/compiler-core@3.5.20", "", { "dependencies": { "@babel/parser": "^7.28.3", "@vue/shared": "3.5.20", "entities": "^4.5.0", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" } }, "sha512-8TWXUyiqFd3GmP4JTX9hbiTFRwYHgVL/vr3cqhr4YQ258+9FADwvj7golk2sWNGHR67QgmCZ8gz80nQcMokhwg=="], - "@vue/compiler-dom": ["@vue/compiler-dom@3.5.18", "", { "dependencies": { "@vue/compiler-core": "3.5.18", "@vue/shared": "3.5.18" } }, "sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A=="], + "@vue/compiler-dom": ["@vue/compiler-dom@3.5.20", "", { "dependencies": { "@vue/compiler-core": "3.5.20", "@vue/shared": "3.5.20" } }, "sha512-whB44M59XKjqUEYOMPYU0ijUV0G+4fdrHVKDe32abNdX/kJe1NUEMqsi4cwzXa9kyM9w5S8WqFsrfo1ogtBZGQ=="], - "@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.18", "", { "dependencies": { "@babel/parser": "^7.28.0", "@vue/compiler-core": "3.5.18", "@vue/compiler-dom": "3.5.18", "@vue/compiler-ssr": "3.5.18", "@vue/shared": "3.5.18", "estree-walker": "^2.0.2", "magic-string": "^0.30.17", "postcss": "^8.5.6", "source-map-js": "^1.2.1" } }, "sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA=="], + "@vue/compiler-sfc": ["@vue/compiler-sfc@3.5.20", "", { "dependencies": { "@babel/parser": "^7.28.3", "@vue/compiler-core": "3.5.20", "@vue/compiler-dom": "3.5.20", "@vue/compiler-ssr": "3.5.20", "@vue/shared": "3.5.20", "estree-walker": "^2.0.2", "magic-string": "^0.30.17", "postcss": "^8.5.6", "source-map-js": "^1.2.1" } }, "sha512-SFcxapQc0/feWiSBfkGsa1v4DOrnMAQSYuvDMpEaxbpH5dKbnEM5KobSNSgU+1MbHCl+9ftm7oQWxvwDB6iBfw=="], - "@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.18", "", { "dependencies": { "@vue/compiler-dom": "3.5.18", "@vue/shared": "3.5.18" } }, "sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g=="], + "@vue/compiler-ssr": ["@vue/compiler-ssr@3.5.20", "", { "dependencies": { "@vue/compiler-dom": "3.5.20", "@vue/shared": "3.5.20" } }, "sha512-RSl5XAMc5YFUXpDQi+UQDdVjH9FnEpLDHIALg5J0ITHxkEzJ8uQLlo7CIbjPYqmZtt6w0TsIPbo1izYXwDG7JA=="], - "@vue/shared": ["@vue/shared@3.5.18", "", {}, "sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA=="], + "@vue/shared": ["@vue/shared@3.5.20", "", {}, "sha512-SoRGP596KU/ig6TfgkCMbXkr4YJ91n/QSdMuqeP5r3hVIYA3CPHUBCc7Skak0EAKV+5lL4KyIh61VA/pK1CIAA=="], "@whatwg-node/disposablestack": ["@whatwg-node/disposablestack@0.0.6", "", { "dependencies": { "@whatwg-node/promise-helpers": "^1.0.0", "tslib": "^2.6.3" } }, "sha512-LOtTn+JgJvX8WfBVJtF08TGrdjuFzGJc4mkP8EdDI8ADbvO7kiexYep1o8dwnt0okb0jYclCDXF13xU7Ge4zSw=="], @@ -1174,7 +1175,7 @@ "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], - "ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], + "ansi-regex": ["ansi-regex@6.2.0", "", {}, "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg=="], "ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], @@ -1222,23 +1223,23 @@ "babel-dead-code-elimination": ["babel-dead-code-elimination@1.0.10", "", { "dependencies": { "@babel/core": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" } }, "sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA=="], - "babel-plugin-jsx-dom-expressions": ["babel-plugin-jsx-dom-expressions@0.39.8", "", { "dependencies": { "@babel/helper-module-imports": "7.18.6", "@babel/plugin-syntax-jsx": "^7.18.6", "@babel/types": "^7.20.7", "html-entities": "2.3.3", "parse5": "^7.1.2", "validate-html-nesting": "^1.2.1" }, "peerDependencies": { "@babel/core": "^7.20.12" } }, "sha512-/MVOIIjonylDXnrWmG23ZX82m9mtKATsVHB7zYlPfDR9Vdd/NBE48if+wv27bSkBtyO7EPMUlcUc4J63QwuACQ=="], + "babel-plugin-jsx-dom-expressions": ["babel-plugin-jsx-dom-expressions@0.40.1", "", { "dependencies": { "@babel/helper-module-imports": "7.18.6", "@babel/plugin-syntax-jsx": "^7.18.6", "@babel/types": "^7.20.7", "html-entities": "2.3.3", "parse5": "^7.1.2", "validate-html-nesting": "^1.2.1" }, "peerDependencies": { "@babel/core": "^7.20.12" } }, "sha512-b4iHuirqK7RgaMzB2Lsl7MqrlDgQtVRSSazyrmx7wB3T759ggGjod5Rkok5MfHjQXhR7tRPmdwoeGPqBnW2KfA=="], - "babel-preset-solid": ["babel-preset-solid@1.9.6", "", { "dependencies": { "babel-plugin-jsx-dom-expressions": "^0.39.8" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-HXTK9f93QxoH8dYn1M2mJdOlWgMsR88Lg/ul6QCZGkNTktjTE5HAf93YxQumHoCudLEtZrU1cFCMFOVho6GqFg=="], + "babel-preset-solid": ["babel-preset-solid@1.9.9", "", { "dependencies": { "babel-plugin-jsx-dom-expressions": "^0.40.1" }, "peerDependencies": { "@babel/core": "^7.0.0", "solid-js": "^1.9.8" }, "optionalPeers": ["solid-js"] }, "sha512-pCnxWrciluXCeli/dj5PIEHgbNzim3evtTn12snjqqg8QZWJNMjH1AWIp4iG/tbVjqQ72aBEymMSagvmgxubXw=="], "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "bare-events": ["bare-events@2.6.0", "", {}, "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg=="], + "bare-events": ["bare-events@2.6.1", "", {}, "sha512-AuTJkq9XmE6Vk0FJVNq5QxETrSA/vKHarWVBG5l/JbdCL1prJemiyJqUS0jrlXO0MftuPq4m3YVYhoNc5+aE/g=="], - "bare-fs": ["bare-fs@4.1.6", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ=="], + "bare-fs": ["bare-fs@4.2.1", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-mELROzV0IhqilFgsl1gyp48pnZsaV9xhQapHLDsvn4d4ZTfbFhcghQezl7FTEDNBcGqLUnNI3lUlm6ecrLWdFA=="], - "bare-os": ["bare-os@3.6.1", "", {}, "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g=="], + "bare-os": ["bare-os@3.6.2", "", {}, "sha512-T+V1+1srU2qYNBmJCXZkUY5vQ0B4FSlL3QDROnKQYOqeiQR8UbjNHlPa+TIbM4cuidiN9GaTaOZgSEgsvPbh5A=="], "bare-path": ["bare-path@3.0.0", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="], - "bare-stream": ["bare-stream@2.6.5", "", { "dependencies": { "streamx": "^2.21.0" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA=="], + "bare-stream": ["bare-stream@2.7.0", "", { "dependencies": { "streamx": "^2.21.0" }, "peerDependencies": { "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-buffer", "bare-events"] }, "sha512-oyXQNicV1y8nc2aKffH+BUHFRXmx6VrPzlnaEvMhram0nPBrKcEdcyBg5r08D0i8VxngHFAiVyn1QKXpSG0B8A=="], "base-64": ["base-64@1.0.0", "", {}, "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="], @@ -1264,7 +1265,7 @@ "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], - "bowser": ["bowser@2.11.0", "", {}, "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="], + "bowser": ["bowser@2.12.1", "", {}, "sha512-z4rE2Gxh7tvshQ4hluIT7XcFrgLIQaw9X3A+kTTRdovCz5PMukm/0QC/BKSYPj3omF5Qfypn9O/c5kgpmvYUCw=="], "boxen": ["boxen@8.0.1", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^8.0.0", "chalk": "^5.3.0", "cli-boxes": "^3.0.0", "string-width": "^7.2.0", "type-fest": "^4.21.0", "widest-line": "^5.0.0", "wrap-ansi": "^9.0.0" } }, "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw=="], @@ -1274,7 +1275,7 @@ "brotli": ["brotli@1.3.3", "", { "dependencies": { "base64-js": "^1.1.2" } }, "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg=="], - "browserslist": ["browserslist@4.25.1", "", { "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw=="], + "browserslist": ["browserslist@4.25.4", "", { "dependencies": { "caniuse-lite": "^1.0.30001737", "electron-to-chromium": "^1.5.211", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg=="], "buffer": ["buffer@4.9.2", "", { "dependencies": { "base64-js": "^1.0.2", "ieee754": "^1.1.4", "isarray": "^1.0.0" } }, "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg=="], @@ -1284,7 +1285,7 @@ "builtin-modules": ["builtin-modules@3.3.0", "", {}, "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw=="], - "bun-types": ["bun-types@1.2.19", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-uAOTaZSPuYsWIXRpj7o56Let0g/wjihKCkeRqUBhlLVM/Bt+Fj9xTo+LhC1OV1XDaGkz4hNC80et5xgy+9KTHQ=="], + "bun-types": ["bun-types@1.2.21", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-sa2Tj77Ijc/NTLS0/Odjq/qngmEPZfbfnOERi0KRUYhT9R8M4VBioWVmMWE5GrYbKMc+5lVybXygLdibHaqVqw=="], "bundle-name": ["bundle-name@4.1.0", "", { "dependencies": { "run-applescript": "^7.0.0" } }, "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q=="], @@ -1308,11 +1309,11 @@ "camelcase": ["camelcase@8.0.0", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="], - "caniuse-lite": ["caniuse-lite@1.0.30001731", "", {}, "sha512-lDdp2/wrOmTRWuoB5DpfNkC0rJDU8DqRa6nYL6HK6sytw70QMopt/NIc/9SM7ylItlBWfACXk0tEn37UWM/+mg=="], + "caniuse-lite": ["caniuse-lite@1.0.30001737", "", {}, "sha512-BiloLiXtQNrY5UyF0+1nSJLXUENuhka2pzy2Fx5pGxqavdrxSCW4U6Pn/PoG3Efspi2frRbHpBV2XsrPE6EDlw=="], "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], - "chalk": ["chalk@5.4.1", "", {}, "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w=="], + "chalk": ["chalk@5.6.0", "", {}, "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ=="], "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], @@ -1486,7 +1487,7 @@ "deterministic-object-hash": ["deterministic-object-hash@2.0.2", "", { "dependencies": { "base-64": "^1.0.0" } }, "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ=="], - "devalue": ["devalue@5.1.1", "", {}, "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw=="], + "devalue": ["devalue@5.3.2", "", {}, "sha512-UDsjUbpQn9kvm68slnrs+mfxwFkIflOhkanmyabZ8zOYk8SMEIbJ3TK+88g70hSIeytu4y18f0z/hYHMTrXIWw=="], "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], @@ -1516,9 +1517,9 @@ "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], - "electron-to-chromium": ["electron-to-chromium@1.5.193", "", {}, "sha512-eePuBZXM9OVCwfYUhd2OzESeNGnWmLyeu0XAEjf7xjijNjHFdeJSzuRUGN4ueT2tEYo5YqjHramKEFxz67p3XA=="], + "electron-to-chromium": ["electron-to-chromium@1.5.211", "", {}, "sha512-IGBvimJkotaLzFnwIVgW9/UD/AOJ2tByUmeOrtqBfACSbAw5b1G0XpvdaieKyc7ULmbwXVx+4e4Be8pOPBrYkw=="], - "emoji-regex": ["emoji-regex@10.4.0", "", {}, "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw=="], + "emoji-regex": ["emoji-regex@10.5.0", "", {}, "sha512-lb49vf1Xzfx080OKA0o6l8DQQpV+6Vg95zyCJX9VB/BqKYlhG7N4wgROUUHRA+ZPUefLnteQOad7z1kT2bV7bg=="], "emoji-regex-xs": ["emoji-regex-xs@1.0.0", "", {}, "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg=="], @@ -1530,7 +1531,7 @@ "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], - "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], "env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], @@ -1552,7 +1553,7 @@ "esast-util-from-js": ["esast-util-from-js@2.0.1", "", { "dependencies": { "@types/estree-jsx": "^1.0.0", "acorn": "^8.0.0", "esast-util-from-estree": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw=="], - "esbuild": ["esbuild@0.25.8", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.8", "@esbuild/android-arm": "0.25.8", "@esbuild/android-arm64": "0.25.8", "@esbuild/android-x64": "0.25.8", "@esbuild/darwin-arm64": "0.25.8", "@esbuild/darwin-x64": "0.25.8", "@esbuild/freebsd-arm64": "0.25.8", "@esbuild/freebsd-x64": "0.25.8", "@esbuild/linux-arm": "0.25.8", "@esbuild/linux-arm64": "0.25.8", "@esbuild/linux-ia32": "0.25.8", "@esbuild/linux-loong64": "0.25.8", "@esbuild/linux-mips64el": "0.25.8", "@esbuild/linux-ppc64": "0.25.8", "@esbuild/linux-riscv64": "0.25.8", "@esbuild/linux-s390x": "0.25.8", "@esbuild/linux-x64": "0.25.8", "@esbuild/netbsd-arm64": "0.25.8", "@esbuild/netbsd-x64": "0.25.8", "@esbuild/openbsd-arm64": "0.25.8", "@esbuild/openbsd-x64": "0.25.8", "@esbuild/openharmony-arm64": "0.25.8", "@esbuild/sunos-x64": "0.25.8", "@esbuild/win32-arm64": "0.25.8", "@esbuild/win32-ia32": "0.25.8", "@esbuild/win32-x64": "0.25.8" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q=="], + "esbuild": ["esbuild@0.25.9", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.9", "@esbuild/android-arm": "0.25.9", "@esbuild/android-arm64": "0.25.9", "@esbuild/android-x64": "0.25.9", "@esbuild/darwin-arm64": "0.25.9", "@esbuild/darwin-x64": "0.25.9", "@esbuild/freebsd-arm64": "0.25.9", "@esbuild/freebsd-x64": "0.25.9", "@esbuild/linux-arm": "0.25.9", "@esbuild/linux-arm64": "0.25.9", "@esbuild/linux-ia32": "0.25.9", "@esbuild/linux-loong64": "0.25.9", "@esbuild/linux-mips64el": "0.25.9", "@esbuild/linux-ppc64": "0.25.9", "@esbuild/linux-riscv64": "0.25.9", "@esbuild/linux-s390x": "0.25.9", "@esbuild/linux-x64": "0.25.9", "@esbuild/netbsd-arm64": "0.25.9", "@esbuild/netbsd-x64": "0.25.9", "@esbuild/openbsd-arm64": "0.25.9", "@esbuild/openbsd-x64": "0.25.9", "@esbuild/openharmony-arm64": "0.25.9", "@esbuild/sunos-x64": "0.25.9", "@esbuild/win32-arm64": "0.25.9", "@esbuild/win32-ia32": "0.25.9", "@esbuild/win32-x64": "0.25.9" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g=="], "esbuild-register": ["esbuild-register@3.6.0", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "esbuild": ">=0.12 <1" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="], @@ -1598,7 +1599,7 @@ "eventsource": ["eventsource@3.0.7", "", { "dependencies": { "eventsource-parser": "^3.0.1" } }, "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA=="], - "eventsource-parser": ["eventsource-parser@3.0.3", "", {}, "sha512-nVpZkTMM9rF6AQ9gPJpFsNAMt48wIzB5TQgiTLdHiuO8XEDhUgZEhqKlZWXbIzo9VmJ/HvysHqEaVeD5v9TPvA=="], + "eventsource-parser": ["eventsource-parser@3.0.5", "", {}, "sha512-bSRG85ZrMdmWtm7qkF9He9TNRzc/Bm99gEJMaQoHJ9E6Kv9QBbsldh2oMj7iXmYNEAVvNgvv5vPorG6W+XtBhQ=="], "execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="], @@ -1640,7 +1641,7 @@ "fd-slicer": ["fd-slicer@1.1.0", "", { "dependencies": { "pend": "~1.2.0" } }, "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g=="], - "fdir": ["fdir@6.4.6", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w=="], + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], "fecha": ["fecha@4.2.3", "", {}, "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw=="], @@ -1852,7 +1853,7 @@ "ioredis": ["ioredis@5.7.0", "", { "dependencies": { "@ioredis/commands": "^1.3.0", "cluster-key-slot": "^1.1.0", "debug": "^4.3.4", "denque": "^2.1.0", "lodash.defaults": "^4.2.0", "lodash.isarguments": "^3.1.0", "redis-errors": "^1.2.0", "redis-parser": "^3.0.0", "standard-as-callback": "^2.1.0" } }, "sha512-NUcA93i1lukyXU+riqEyPtSEkyFq8tX90uL659J+qpCZ3rEdViB/APC58oAhIh3+bJln2hzdlZbBZsGNrlsR8g=="], - "ip-address": ["ip-address@9.0.5", "", { "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" } }, "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g=="], + "ip-address": ["ip-address@10.0.1", "", {}, "sha512-NWv9YLW4PoW2B7xtzaS3NCot75m6nK7Icdv0o3lfMceJVRfSoQwqD4wEH5rLwoKJwUiZ/rfpiVBhnaF0FK4HoA=="], "ipaddr.js": ["ipaddr.js@1.9.1", "", {}, "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="], @@ -1938,8 +1939,6 @@ "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], - "jsbn": ["jsbn@1.1.0", "", {}, "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A=="], - "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], @@ -1990,7 +1989,7 @@ "listhen": ["listhen@1.9.0", "", { "dependencies": { "@parcel/watcher": "^2.4.1", "@parcel/watcher-wasm": "^2.4.1", "citty": "^0.1.6", "clipboardy": "^4.0.0", "consola": "^3.2.3", "crossws": ">=0.2.0 <0.4.0", "defu": "^6.1.4", "get-port-please": "^3.1.2", "h3": "^1.12.0", "http-shutdown": "^1.2.2", "jiti": "^2.1.2", "mlly": "^1.7.1", "node-forge": "^1.3.1", "pathe": "^1.1.2", "std-env": "^3.7.0", "ufo": "^1.5.4", "untun": "^0.1.3", "uqr": "^0.1.2" }, "bin": { "listen": "bin/listhen.mjs", "listhen": "bin/listhen.mjs" } }, "sha512-I8oW2+QL5KJo8zXNWX046M134WchxsXC7SawLPvRQpogCbkyQIaFxPE89A2HiwR7vAK2Dm2ERBAmyjTYGYEpBg=="], - "local-pkg": ["local-pkg@1.1.1", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.0.1", "quansync": "^0.2.8" } }, "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg=="], + "local-pkg": ["local-pkg@1.1.2", "", { "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.3.0", "quansync": "^0.2.11" } }, "sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A=="], "locate-path": ["locate-path@7.2.0", "", { "dependencies": { "p-locate": "^6.0.0" } }, "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA=="], @@ -2018,7 +2017,7 @@ "luxon": ["luxon@3.6.1", "", {}, "sha512-tJLxrKJhO2ukZ5z0gyjY1zPh3Rh88Ej9P7jNrZiHMUXHae1yvI2imgOZtL1TO8TW6biMMKfTtAOoEJANgtWBMQ=="], - "magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + "magic-string": ["magic-string@0.30.18", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ=="], "magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="], @@ -2170,7 +2169,7 @@ "mimic-response": ["mimic-response@3.1.0", "", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="], - "miniflare": ["miniflare@4.20250730.0", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "sharp": "^0.33.5", "stoppable": "1.1.0", "undici": "^7.10.0", "workerd": "1.20250730.0", "ws": "8.18.0", "youch": "4.1.0-beta.10", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-avGXBStHQSqcJr8ra1mJ3/OQvnLZ49B1uAILQapAha1DHNZZvXWLIgUVre/WGY6ZOlNGFPh5CJ+dXLm4yuV3Jw=="], + "miniflare": ["miniflare@4.20250823.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "acorn": "8.14.0", "acorn-walk": "8.3.2", "exit-hook": "2.2.1", "glob-to-regexp": "0.4.1", "sharp": "^0.33.5", "stoppable": "1.1.0", "undici": "^7.10.0", "workerd": "1.20250823.0", "ws": "8.18.0", "youch": "4.1.0-beta.10", "zod": "3.22.3" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-qjbF69XXyHXk4R//q0a9MLraKE9MLKZ/94k6jKcfouJ0g+se7VyMzCBryeWA534+ZAlNM4Ay5gqYr1v3Wk6ctQ=="], "minimatch": ["minimatch@10.0.3", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw=="], @@ -2194,7 +2193,7 @@ "mkdirp-classic": ["mkdirp-classic@0.5.3", "", {}, "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="], - "mlly": ["mlly@1.7.4", "", { "dependencies": { "acorn": "^8.14.0", "pathe": "^2.0.1", "pkg-types": "^1.3.0", "ufo": "^1.5.4" } }, "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw=="], + "mlly": ["mlly@1.8.0", "", { "dependencies": { "acorn": "^8.15.0", "pathe": "^2.0.3", "pkg-types": "^1.3.1", "ufo": "^1.6.1" } }, "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g=="], "module-definition": ["module-definition@6.0.1", "", { "dependencies": { "ast-module-types": "^6.0.1", "node-source-walk": "^7.0.1" }, "bin": { "module-definition": "bin/cli.js" } }, "sha512-FeVc50FTfVVQnolk/WQT8MX+2WVcDnTGiq6Wo+/+lJ2ET1bRVi3HG3YlJUfqagNMc/kUlFSoR96AJkxGpKz13g=="], @@ -2228,7 +2227,7 @@ "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], - "node-fetch-native": ["node-fetch-native@1.6.6", "", {}, "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ=="], + "node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="], "node-forge": ["node-forge@1.3.1", "", {}, "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA=="], @@ -2280,7 +2279,7 @@ "ohash": ["ohash@1.1.6", "", {}, "sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg=="], - "oidc-token-hash": ["oidc-token-hash@5.1.0", "", {}, "sha512-y0W+X7Ppo7oZX6eovsRkuzcSM40Bicg2JEJkDJ4irIt1wsYAP5MLSNv+QAogO8xivMffw/9OvV3um1pxXgt1uA=="], + "oidc-token-hash": ["oidc-token-hash@5.1.1", "", {}, "sha512-D7EmwxJV6DsEB6vOFLrBM2OzsVgQzgPWyHlV2OOAVj772n+WTXpudC9e9u5BVKQnYwaD30Ivhi9b+4UeBcGu9g=="], "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], @@ -2366,12 +2365,6 @@ "perfect-debounce": ["perfect-debounce@1.0.0", "", {}, "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="], - "pg-int8": ["pg-int8@1.0.1", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="], - - "pg-protocol": ["pg-protocol@1.10.3", "", {}, "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ=="], - - "pg-types": ["pg-types@2.2.0", "", { "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", "postgres-bytea": "~1.0.0", "postgres-date": "~1.0.4", "postgres-interval": "^1.1.0" } }, "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="], - "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], @@ -2394,14 +2387,6 @@ "postgres": ["postgres@3.4.7", "", {}, "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw=="], - "postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="], - - "postgres-bytea": ["postgres-bytea@1.0.0", "", {}, "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w=="], - - "postgres-date": ["postgres-date@1.0.7", "", {}, "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="], - - "postgres-interval": ["postgres-interval@1.2.0", "", { "dependencies": { "xtend": "^4.0.0" } }, "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="], - "prebuild-install": ["prebuild-install@7.1.3", "", { "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^4.0.0", "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" }, "bin": { "prebuild-install": "bin.js" } }, "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug=="], "precinct": ["precinct@12.2.0", "", { "dependencies": { "@dependents/detective-less": "^5.0.1", "commander": "^12.1.0", "detective-amd": "^6.0.1", "detective-cjs": "^6.0.1", "detective-es6": "^5.0.1", "detective-postcss": "^7.0.1", "detective-sass": "^6.0.1", "detective-scss": "^5.0.1", "detective-stylus": "^5.0.1", "detective-typescript": "^14.0.0", "detective-vue2": "^2.2.0", "module-definition": "^6.0.1", "node-source-walk": "^7.0.1", "postcss": "^8.5.1", "typescript": "^5.7.3" }, "bin": { "precinct": "bin/cli.js" } }, "sha512-NFBMuwIfaJ4SocE9YXPU/n4AcNSoFMVFjP72nvl3cx69j/ke61/hPOWFREVxLkFhhEGnA8ZuVfTqJBa+PK3b5w=="], @@ -2432,7 +2417,7 @@ "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], - "protobufjs": ["protobufjs@7.5.3", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw=="], + "protobufjs": ["protobufjs@7.5.4", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.4", "@protobufjs/eventemitter": "^1.1.0", "@protobufjs/fetch": "^1.1.0", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.0", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.0", "@types/node": ">=13.7.0", "long": "^5.0.0" } }, "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg=="], "proxy-addr": ["proxy-addr@2.0.7", "", { "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg=="], @@ -2444,7 +2429,7 @@ "qs": ["qs@6.14.0", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w=="], - "quansync": ["quansync@0.2.10", "", {}, "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A=="], + "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], "querystring": ["querystring@0.2.0", "", {}, "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g=="], @@ -2568,7 +2553,7 @@ "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], - "rollup": ["rollup@4.46.2", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.46.2", "@rollup/rollup-android-arm64": "4.46.2", "@rollup/rollup-darwin-arm64": "4.46.2", "@rollup/rollup-darwin-x64": "4.46.2", "@rollup/rollup-freebsd-arm64": "4.46.2", "@rollup/rollup-freebsd-x64": "4.46.2", "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", "@rollup/rollup-linux-arm-musleabihf": "4.46.2", "@rollup/rollup-linux-arm64-gnu": "4.46.2", "@rollup/rollup-linux-arm64-musl": "4.46.2", "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", "@rollup/rollup-linux-ppc64-gnu": "4.46.2", "@rollup/rollup-linux-riscv64-gnu": "4.46.2", "@rollup/rollup-linux-riscv64-musl": "4.46.2", "@rollup/rollup-linux-s390x-gnu": "4.46.2", "@rollup/rollup-linux-x64-gnu": "4.46.2", "@rollup/rollup-linux-x64-musl": "4.46.2", "@rollup/rollup-win32-arm64-msvc": "4.46.2", "@rollup/rollup-win32-ia32-msvc": "4.46.2", "@rollup/rollup-win32-x64-msvc": "4.46.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg=="], + "rollup": ["rollup@4.49.0", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.49.0", "@rollup/rollup-android-arm64": "4.49.0", "@rollup/rollup-darwin-arm64": "4.49.0", "@rollup/rollup-darwin-x64": "4.49.0", "@rollup/rollup-freebsd-arm64": "4.49.0", "@rollup/rollup-freebsd-x64": "4.49.0", "@rollup/rollup-linux-arm-gnueabihf": "4.49.0", "@rollup/rollup-linux-arm-musleabihf": "4.49.0", "@rollup/rollup-linux-arm64-gnu": "4.49.0", "@rollup/rollup-linux-arm64-musl": "4.49.0", "@rollup/rollup-linux-loongarch64-gnu": "4.49.0", "@rollup/rollup-linux-ppc64-gnu": "4.49.0", "@rollup/rollup-linux-riscv64-gnu": "4.49.0", "@rollup/rollup-linux-riscv64-musl": "4.49.0", "@rollup/rollup-linux-s390x-gnu": "4.49.0", "@rollup/rollup-linux-x64-gnu": "4.49.0", "@rollup/rollup-linux-x64-musl": "4.49.0", "@rollup/rollup-win32-arm64-msvc": "4.49.0", "@rollup/rollup-win32-ia32-msvc": "4.49.0", "@rollup/rollup-win32-x64-msvc": "4.49.0", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-3IVq0cGJ6H7fKXXEdVt+RcYvRCt8beYY9K1760wGQwSAHZcS9eot1zDG5axUbcp/kWRi5zKIIDX8MoKv/TzvZA=="], "rollup-plugin-visualizer": ["rollup-plugin-visualizer@6.0.3", "", { "dependencies": { "open": "^8.0.0", "picomatch": "^4.0.2", "source-map": "^0.7.4", "yargs": "^17.5.1" }, "peerDependencies": { "rolldown": "1.x || ^1.0.0-beta", "rollup": "2.x || 3.x || 4.x" }, "optionalPeers": ["rolldown", "rollup"], "bin": { "rollup-plugin-visualizer": "dist/bin/cli.js" } }, "sha512-ZU41GwrkDcCpVoffviuM9Clwjy5fcUxlz0oMoTXTYsK+tcIFzbdacnrr2n8TXcHxbGKKXtOdjxM2HUS4HjkwIw=="], @@ -2652,13 +2637,13 @@ "smob": ["smob@1.5.0", "", {}, "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig=="], - "smol-toml": ["smol-toml@1.4.1", "", {}, "sha512-CxdwHXyYTONGHThDbq5XdwbFsuY4wlClRGejfE2NtwUtiHYsP1QtNsHb/hnj31jKYSchztJsaA8pSQoVzkfCFg=="], + "smol-toml": ["smol-toml@1.4.2", "", {}, "sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g=="], - "socks": ["socks@2.8.6", "", { "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" } }, "sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA=="], + "socks": ["socks@2.8.7", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="], "socks-proxy-agent": ["socks-proxy-agent@8.0.5", "", { "dependencies": { "agent-base": "^7.1.2", "debug": "^4.3.4", "socks": "^2.8.3" } }, "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw=="], - "solid-js": ["solid-js@1.9.7", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "~1.3.0", "seroval-plugins": "~1.3.0" } }, "sha512-/saTKi8iWEM233n5OSi1YHCCuh66ZIQ7aK2hsToPe4tqGm7qAejU1SwNuTPivbWAYq7SjuHVVYxxuZQNRbICiw=="], + "solid-js": ["solid-js@1.9.9", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "~1.3.0", "seroval-plugins": "~1.3.0" } }, "sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA=="], "solid-list": ["solid-list@0.3.0", "", { "dependencies": { "@corvu/utils": "~0.4.0" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-t4hx/F/l8Vmq+ib9HtZYl7Z9F1eKxq3eKJTXlvcm7P7yI4Z8O7QSOOEVHb/K6DD7M0RxzVRobK/BS5aSfLRwKg=="], @@ -2752,7 +2737,7 @@ "style-to-object": ["style-to-object@1.0.9", "", { "dependencies": { "inline-style-parser": "0.2.4" } }, "sha512-G4qppLgKu/k6FwRpHiGiKPaPTFcG3g4wNVX/Qsfu+RqQM30E7Tyu/TEgxcL9PNLF5pdRLwQdE3YKKf+KF2Dzlw=="], - "supports-color": ["supports-color@10.0.0", "", {}, "sha512-HRVVSbCCMbj7/kdWF9Q+bbckjBHLtHMEoJWlkmYzzdwhYMkjkOwubLM6t7NbWKjgKamGDrWL1++KrjUO1t9oAQ=="], + "supports-color": ["supports-color@10.2.0", "", {}, "sha512-5eG9FQjEjDbAlI5+kdpdyPIBMRH4GfTVDGREVupaZHmVoppknhM29b/S9BkQz7cathp85BVgRi/As3Siln7e0Q=="], "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], @@ -2780,7 +2765,7 @@ "tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="], - "tmp": ["tmp@0.2.4", "", {}, "sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ=="], + "tmp": ["tmp@0.2.5", "", {}, "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow=="], "tmp-promise": ["tmp-promise@3.0.3", "", { "dependencies": { "tmp": "^0.2.0" } }, "sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ=="], @@ -2838,7 +2823,7 @@ "unctx": ["unctx@2.4.1", "", { "dependencies": { "acorn": "^8.14.0", "estree-walker": "^3.0.3", "magic-string": "^0.30.17", "unplugin": "^2.1.0" } }, "sha512-AbaYw0Nm4mK4qjhns67C+kgxR2YWiwlDBPzxrN8h8C6VtAdCgditAY5Dezu3IJy4XVqAnbrXt9oQJvsn3fyozg=="], - "undici": ["undici@7.13.0", "", {}, "sha512-l+zSMssRqrzDcb3fjMkjjLGmuiiK2pMIcV++mJaAc9vhjSGpvM7h43QgP+OAMb1GImHmbPyG2tBXeuyG5iY4gA=="], + "undici": ["undici@7.15.0", "", {}, "sha512-7oZJCPvvMvTd0OlqWsIxTuItTpJBpU1tcbVl24FMn3xt3+VSunwUasmfPJRE57oNO1KsZ4PgA1xTdAX4hq8NyQ=="], "undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], @@ -2888,17 +2873,17 @@ "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], - "unplugin": ["unplugin@2.3.5", "", { "dependencies": { "acorn": "^8.14.1", "picomatch": "^4.0.2", "webpack-virtual-modules": "^0.6.2" } }, "sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw=="], + "unplugin": ["unplugin@2.3.9", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-2dcbZq6aprwXTkzptq3k5qm5B8cvpjG9ynPd5fyM2wDJuuF7PeUK64Sxf0d+X1ZyDOeGydbNzMqBSIVlH8GIfA=="], "unplugin-utils": ["unplugin-utils@0.2.5", "", { "dependencies": { "pathe": "^2.0.3", "picomatch": "^4.0.3" } }, "sha512-gwXJnPRewT4rT7sBi/IvxKTjsms7jX7QIDLOClApuZwR49SXbrB1z2NLUZ+vDHyqCj/n58OzRRqaW+B8OZi8vg=="], - "unstorage": ["unstorage@1.16.1", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", "h3": "^1.15.3", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.6", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6.0.3 || ^7.0.0", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ=="], + "unstorage": ["unstorage@1.17.0", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", "h3": "^1.15.4", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.7", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6.0.3 || ^7.0.0", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-l9Z7lBiwtNp8ZmcoZ/dmPkFXFdtEdZtTZafCSnEIj3YvtkXeGAtL2rN8MQFy/0cs4eOLpuRJMp9ivdug7TCvww=="], "untun": ["untun@0.1.3", "", { "dependencies": { "citty": "^0.1.5", "consola": "^3.2.3", "pathe": "^1.1.1" }, "bin": { "untun": "bin/untun.mjs" } }, "sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ=="], "untyped": ["untyped@2.0.0", "", { "dependencies": { "citty": "^0.1.6", "defu": "^6.1.4", "jiti": "^2.4.2", "knitwork": "^1.2.0", "scule": "^1.3.0" }, "bin": { "untyped": "dist/cli.mjs" } }, "sha512-nwNCjxJTjNuLCgFr42fEak5OcLuB3ecca+9ksPFNvtfYSLpjf+iJqSIaSnIile6ZPbKYxI5k2AfXqeopGudK/g=="], - "unwasm": ["unwasm@0.3.9", "", { "dependencies": { "knitwork": "^1.0.0", "magic-string": "^0.30.8", "mlly": "^1.6.1", "pathe": "^1.1.2", "pkg-types": "^1.0.3", "unplugin": "^1.10.0" } }, "sha512-LDxTx/2DkFURUd+BU1vUsF/moj0JsoTvl+2tcg2AUOiEzVturhGGx17/IMgGvKUYdZwr33EJHtChCJuhu9Ouvg=="], + "unwasm": ["unwasm@0.3.11", "", { "dependencies": { "knitwork": "^1.2.0", "magic-string": "^0.30.17", "mlly": "^1.7.4", "pathe": "^2.0.3", "pkg-types": "^2.2.0", "unplugin": "^2.3.6" } }, "sha512-Vhp5gb1tusSQw5of/g3Q697srYgMXvwMgXMjcG4ZNga02fDX9coxJ9fAb0Ci38hM2Hv/U1FXRPGgjP2BYqhNoQ=="], "upath": ["upath@1.2.0", "", {}, "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg=="], @@ -2974,9 +2959,9 @@ "wordwrap": ["wordwrap@1.0.0", "", {}, "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q=="], - "workerd": ["workerd@1.20250730.0", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20250730.0", "@cloudflare/workerd-darwin-arm64": "1.20250730.0", "@cloudflare/workerd-linux-64": "1.20250730.0", "@cloudflare/workerd-linux-arm64": "1.20250730.0", "@cloudflare/workerd-windows-64": "1.20250730.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-w6e0WM2YGfYQGmg0dewZeLUYIxAzMYK1R31vaS4HHHjgT32Xqj0eVQH+leegzY51RZPNCvw5pe8DFmW4MGf8Fg=="], + "workerd": ["workerd@1.20250823.0", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20250823.0", "@cloudflare/workerd-darwin-arm64": "1.20250823.0", "@cloudflare/workerd-linux-64": "1.20250823.0", "@cloudflare/workerd-linux-arm64": "1.20250823.0", "@cloudflare/workerd-windows-64": "1.20250823.0" }, "bin": { "workerd": "bin/workerd" } }, "sha512-95lToK9zeaC7bX5ZmlP/wz6zqoUPBk3hhec1JjEMGZrxsXY9cPRkjWNCcjDctQ17U97vjMcY/ymchgx7w8Cfmg=="], - "wrangler": ["wrangler@4.27.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.5.0", "blake3-wasm": "2.1.5", "esbuild": "0.25.4", "miniflare": "4.20250730.0", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.19", "workerd": "1.20250730.0" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20250730.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-YNHZyMNWebFt9jD6dc20tQrCmnSzJj3SoB0FFa90w11Cx4lbP3d+rUZYjb18Zt+OGSMay1wT2PzwT2vCTskkmg=="], + "wrangler": ["wrangler@4.33.1", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.4.0", "@cloudflare/unenv-preset": "2.7.0", "blake3-wasm": "2.1.5", "esbuild": "0.25.4", "miniflare": "4.20250823.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.19", "workerd": "1.20250823.0" }, "optionalDependencies": { "fsevents": "~2.3.2" }, "peerDependencies": { "@cloudflare/workers-types": "^4.20250823.0" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js" } }, "sha512-8x/3Tbt+/raBMm0+vRyAHSGu2kF1QjeiSrx47apgPk/AzSBcXI9YuUUdGrKnozMYZlEbOxdBQOMyuRRDTyNmOg=="], "wrap-ansi": ["wrap-ansi@9.0.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q=="], @@ -2994,8 +2979,6 @@ "xmlbuilder": ["xmlbuilder@11.0.1", "", {}, "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="], - "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], - "xxhash-wasm": ["xxhash-wasm@1.1.0", "", {}, "sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA=="], "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], @@ -3014,7 +2997,7 @@ "yocto-spinner": ["yocto-spinner@0.2.3", "", { "dependencies": { "yoctocolors": "^2.1.1" } }, "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ=="], - "yoctocolors": ["yoctocolors@2.1.1", "", {}, "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ=="], + "yoctocolors": ["yoctocolors@2.1.2", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="], "youch": ["youch@4.1.0-beta.8", "", { "dependencies": { "@poppinss/colors": "^4.1.4", "@poppinss/dumper": "^0.6.3", "@speed-highlight/core": "^1.2.7", "cookie": "^1.0.2", "youch-core": "^0.3.1" } }, "sha512-rY2A2lSF7zC+l7HH9Mq+83D1dLlsPnEvy8jTouzaptDZM6geqZ3aJe/b7ULCwRURPtWV3vbDjA2DDMdoBol0HQ=="], @@ -3044,66 +3027,16 @@ "@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], - "@astrojs/mdx/@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.3", "", { "dependencies": { "@astrojs/internal-helpers": "0.6.1", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "shiki": "^3.2.1", "smol-toml": "^1.3.4", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.3" } }, "sha512-DDRtD1sPvAuA7ms2btc9A7/7DApKqgLMNrE6kh5tmkfy8utD0Z738gqd3p5aViYYdUtHIyEJ1X4mCMxfCfu15w=="], + "@astrojs/mdx/@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.6", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.2", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "shiki": "^3.2.1", "smol-toml": "^1.3.4", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.3" } }, "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug=="], "@astrojs/mdx/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], "@astrojs/solid-js/vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], - "@astrojs/solid-js/vite-plugin-solid": ["vite-plugin-solid@2.11.8", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-hFrCxBfv3B1BmFqnJF4JOCYpjrmi/zwyeKjcomQ0khh8HFyQ8SbuBWQ7zGojfrz6HUOBFrJBNySDi/JgAHytWg=="], - - "@aws-crypto/crc32/@aws-sdk/types": ["@aws-sdk/types@3.840.0", "", { "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA=="], - - "@aws-crypto/sha256-browser/@aws-sdk/types": ["@aws-sdk/types@3.840.0", "", { "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA=="], - "@aws-crypto/sha256-browser/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - "@aws-crypto/sha256-js/@aws-sdk/types": ["@aws-sdk/types@3.840.0", "", { "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA=="], - - "@aws-crypto/util/@aws-sdk/types": ["@aws-sdk/types@3.840.0", "", { "dependencies": { "@smithy/types": "^4.3.1", "tslib": "^2.6.2" } }, "sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA=="], - "@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], - "@aws-sdk/client-sso/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/core/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/credential-provider-env/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/credential-provider-http/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/credential-provider-ini/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/credential-provider-node/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/credential-provider-process/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/credential-provider-sso/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/credential-provider-web-identity/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/middleware-host-header/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/middleware-logger/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/middleware-recursion-detection/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/middleware-user-agent/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/nested-clients/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/region-config-resolver/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/token-providers/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/types/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/util-endpoints/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/util-user-agent-browser/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@aws-sdk/util-user-agent-node/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - "@babel/core/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -3112,14 +3045,8 @@ "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@babel/helper-create-class-features-plugin/@babel/traverse": ["@babel/traverse@7.28.3", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", "@babel/types": "^7.28.2", "debug": "^4.3.1" } }, "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ=="], - "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], - "@babel/helper-member-expression-to-functions/@babel/traverse": ["@babel/traverse@7.28.3", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", "@babel/types": "^7.28.2", "debug": "^4.3.1" } }, "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ=="], - - "@babel/helper-replace-supers/@babel/traverse": ["@babel/traverse@7.28.3", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", "@babel/types": "^7.28.2", "debug": "^4.3.1" } }, "sha512-7w4kZYHneL3A6NP2nxzHvT3HCZ7puDZZjFMqDpBPECub79sTtSO5CGXDkKrTQq8ksAwfD/XI2MRFX23njdDaIQ=="], - "@babel/template/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], "@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], @@ -3154,7 +3081,7 @@ "@netlify/zip-it-and-ship-it/@babel/types": ["@babel/types@7.28.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg=="], - "@netlify/zip-it-and-ship-it/@netlify/serverless-functions-api": ["@netlify/serverless-functions-api@2.2.0", "", {}, "sha512-eQNnGUMyatgEeFJ8iKI2DT7wXDEjbWmZ+hJpCZtfg1bVsD4JdprIhLqdrUqmrDgPG2r45sQYigO9oq8BWXO37w=="], + "@netlify/zip-it-and-ship-it/@netlify/serverless-functions-api": ["@netlify/serverless-functions-api@2.3.0", "", {}, "sha512-eSC+glm4bX+9t+ajNzAs4Bca0Q/xGLgcYYh6M2Z9Dcya/MjVod1UrjPB88b0ANSBAy/aGFpDhVbwLwBokfnppQ=="], "@netlify/zip-it-and-ship-it/esbuild": ["esbuild@0.25.5", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.5", "@esbuild/android-arm": "0.25.5", "@esbuild/android-arm64": "0.25.5", "@esbuild/android-x64": "0.25.5", "@esbuild/darwin-arm64": "0.25.5", "@esbuild/darwin-x64": "0.25.5", "@esbuild/freebsd-arm64": "0.25.5", "@esbuild/freebsd-x64": "0.25.5", "@esbuild/linux-arm": "0.25.5", "@esbuild/linux-arm64": "0.25.5", "@esbuild/linux-ia32": "0.25.5", "@esbuild/linux-loong64": "0.25.5", "@esbuild/linux-mips64el": "0.25.5", "@esbuild/linux-ppc64": "0.25.5", "@esbuild/linux-riscv64": "0.25.5", "@esbuild/linux-s390x": "0.25.5", "@esbuild/linux-x64": "0.25.5", "@esbuild/netbsd-arm64": "0.25.5", "@esbuild/netbsd-x64": "0.25.5", "@esbuild/openbsd-arm64": "0.25.5", "@esbuild/openbsd-x64": "0.25.5", "@esbuild/sunos-x64": "0.25.5", "@esbuild/win32-arm64": "0.25.5", "@esbuild/win32-ia32": "0.25.5", "@esbuild/win32-x64": "0.25.5" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ=="], @@ -3192,8 +3119,6 @@ "@opencode-ai/sdk/@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="], - "@opencode/cloud-web/solid-js": ["solid-js@1.9.5", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "^1.1.0", "seroval-plugins": "^1.1.0" } }, "sha512-ogI3DaFcyn6UhYhrgcyRAMbu/buBJitYQASZz5WzfQVPP10RD2AbCoRZ517psnezrasyCbWzIxZ6kVqet768xw=="], - "@opentelemetry/instrumentation-grpc/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], "@oslojs/jwt/@oslojs/encoding": ["@oslojs/encoding@0.4.1", "", {}, "sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q=="], @@ -3216,76 +3141,14 @@ "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], - "@smithy/abort-controller/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/config-resolver/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/core/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - "@smithy/core/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], - "@smithy/credential-provider-imds/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/fetch-http-handler/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/hash-node/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/invalid-dependency/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/middleware-content-length/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/middleware-endpoint/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/middleware-retry/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - "@smithy/middleware-retry/uuid": ["uuid@9.0.1", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="], - "@smithy/middleware-serde/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/middleware-stack/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/node-config-provider/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/node-http-handler/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/property-provider/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/protocol-http/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/querystring-builder/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/querystring-parser/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/service-error-classification/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/shared-ini-file-loader/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/signature-v4/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/smithy-client/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/url-parser/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/util-defaults-mode-browser/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/util-defaults-mode-node/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/util-endpoints/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/util-middleware/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/util-retry/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - - "@smithy/util-stream/@smithy/types": ["@smithy/types@4.3.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-QO4zghLxiQ5W9UZmX2Lo0nta2PuE1sSrXUYDoaB6HMR762C0P7v/HEPHf6ZdglTVssJG1bsrSBxdc3quvDSihw=="], - "@solidjs/start/shiki": ["shiki@1.29.2", "", { "dependencies": { "@shikijs/core": "1.29.2", "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/langs": "1.29.2", "@shikijs/themes": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg=="], - "@solidjs/start/vite-plugin-solid": ["vite-plugin-solid@2.11.8", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-hFrCxBfv3B1BmFqnJF4JOCYpjrmi/zwyeKjcomQ0khh8HFyQ8SbuBWQ7zGojfrz6HUOBFrJBNySDi/JgAHytWg=="], - "@tufjs/models/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "@types/bun/bun-types": ["bun-types@1.2.21", "", { "dependencies": { "@types/node": "*" }, "peerDependencies": { "@types/react": "^19" } }, "sha512-sa2Tj77Ijc/NTLS0/Odjq/qngmEPZfbfnOERi0KRUYhT9R8M4VBioWVmMWE5GrYbKMc+5lVybXygLdibHaqVqw=="], - "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "@vercel/nft/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], @@ -3298,6 +3161,8 @@ "@vinxi/server-components/magicast": ["magicast@0.2.11", "", { "dependencies": { "@babel/parser": "^7.22.16", "@babel/types": "^7.22.17", "recast": "^0.23.4" } }, "sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g=="], + "@vue/compiler-core/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "@vue/compiler-core/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], @@ -3366,8 +3231,6 @@ "ignore-walk/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], - "ip-address/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], - "lambda-local/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], "lazystream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], @@ -3376,7 +3239,7 @@ "listhen/h3": ["h3@1.15.4", "", { "dependencies": { "cookie-es": "^1.2.2", "crossws": "^0.3.5", "defu": "^6.1.4", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.2", "radix3": "^1.1.2", "ufo": "^1.6.1", "uncrypto": "^0.1.3" } }, "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ=="], - "local-pkg/pkg-types": ["pkg-types@2.2.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ=="], + "local-pkg/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], "make-fetch-happen/negotiator": ["negotiator@0.6.4", "", {}, "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w=="], @@ -3414,7 +3277,7 @@ "nitropack/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "nitropack/pkg-types": ["pkg-types@2.2.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ=="], + "nitropack/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], "nitropack/serve-static": ["serve-static@2.2.0", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ=="], @@ -3446,8 +3309,6 @@ "parse-json/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], - "path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], "pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], @@ -3518,7 +3379,7 @@ "unimport/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], - "unimport/pkg-types": ["pkg-types@2.2.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ=="], + "unimport/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], "unixify/normalize-path": ["normalize-path@2.1.1", "", { "dependencies": { "remove-trailing-separator": "^1.0.1" } }, "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w=="], @@ -3528,7 +3389,9 @@ "unstorage/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "unwasm/unplugin": ["unplugin@1.16.1", "", { "dependencies": { "acorn": "^8.14.0", "webpack-virtual-modules": "^0.6.2" } }, "sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w=="], + "unwasm/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], + + "unwasm/pkg-types": ["pkg-types@2.3.0", "", { "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", "pathe": "^2.0.3" } }, "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig=="], "uri-js/punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], @@ -3550,13 +3413,11 @@ "write-file-atomic/signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], - "xml2js/sax": ["sax@1.4.1", "", {}, "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg=="], - "yargs/yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], "yauzl/buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], - "@astrojs/mdx/@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], + "@astrojs/mdx/@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.2", "", {}, "sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g=="], "@astrojs/mdx/@astrojs/markdown-remark/@astrojs/prism": ["@astrojs/prism@3.3.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ=="], @@ -3566,24 +3427,6 @@ "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - "@babel/helper-create-class-features-plugin/@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - - "@babel/helper-create-class-features-plugin/@babel/traverse/@babel/generator": ["@babel/generator@7.28.3", "", { "dependencies": { "@babel/parser": "^7.28.3", "@babel/types": "^7.28.2", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw=="], - - "@babel/helper-create-class-features-plugin/@babel/traverse/@babel/parser": ["@babel/parser@7.28.3", "", { "dependencies": { "@babel/types": "^7.28.2" }, "bin": "./bin/babel-parser.js" }, "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA=="], - - "@babel/helper-member-expression-to-functions/@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - - "@babel/helper-member-expression-to-functions/@babel/traverse/@babel/generator": ["@babel/generator@7.28.3", "", { "dependencies": { "@babel/parser": "^7.28.3", "@babel/types": "^7.28.2", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw=="], - - "@babel/helper-member-expression-to-functions/@babel/traverse/@babel/parser": ["@babel/parser@7.28.3", "", { "dependencies": { "@babel/types": "^7.28.2" }, "bin": "./bin/babel-parser.js" }, "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA=="], - - "@babel/helper-replace-supers/@babel/traverse/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - - "@babel/helper-replace-supers/@babel/traverse/@babel/generator": ["@babel/generator@7.28.3", "", { "dependencies": { "@babel/parser": "^7.28.3", "@babel/types": "^7.28.2", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw=="], - - "@babel/helper-replace-supers/@babel/traverse/@babel/parser": ["@babel/parser@7.28.3", "", { "dependencies": { "@babel/types": "^7.28.2" }, "bin": "./bin/babel-parser.js" }, "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA=="], - "@cloudflare/unenv-preset/unenv/ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], "@cloudflare/unenv-preset/unenv/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], @@ -3746,6 +3589,8 @@ "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "bl/buffer/ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], + "clipboardy/execa/get-stream": ["get-stream@8.0.1", "", {}, "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA=="], "clipboardy/execa/human-signals": ["human-signals@5.0.0", "", {}, "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ=="], @@ -3862,6 +3707,8 @@ "unimport/pkg-types/confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="], + "unwasm/pkg-types/confbox": ["confbox@0.2.2", "", {}, "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="], + "wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.4", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q=="], "wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.4", "", { "os": "android", "cpu": "arm" }, "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ=="], diff --git a/cloud/app/package.json b/cloud/app/package.json index 0eb3ec6c27..3a236e09b8 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -14,7 +14,7 @@ "@solidjs/meta": "^0.29.4", "@solidjs/router": "^0.15.0", "@solidjs/start": "^1.1.0", - "solid-js": "^1.9.5", + "solid-js": "catalog:", "vinxi": "^0.5.7", "@opencode/cloud-core": "workspace:*" }, diff --git a/cloud/app/src/context/auth.session.ts b/cloud/app/src/context/auth.session.ts new file mode 100644 index 0000000000..c4b3940aaa --- /dev/null +++ b/cloud/app/src/context/auth.session.ts @@ -0,0 +1,23 @@ +import { useSession } from "vinxi/http" + +export interface AuthSession { + account: Record< + string, + { + id: string + email: string + } + > + current?: string +} + +export function useAuthSession() { + return useSession({ + password: "0".repeat(32), + name: "auth", + cookie: { + secure: false, + httpOnly: true, + }, + }) +} diff --git a/cloud/app/src/context/auth.tsx b/cloud/app/src/context/auth.ts similarity index 77% rename from cloud/app/src/context/auth.tsx rename to cloud/app/src/context/auth.ts index 59fbff6e6b..9a5606a44e 100644 --- a/cloud/app/src/context/auth.tsx +++ b/cloud/app/src/context/auth.ts @@ -1,5 +1,3 @@ -import { useSession } from "vinxi/http" -import { createClient } from "@openauthjs/openauth/client" import { getRequestEvent } from "solid-js/web" import { and, Database, eq, inArray } from "@opencode/cloud-core/drizzle/index.js" import { WorkspaceTable } from "@opencode/cloud-core/schema/workspace.sql.js" @@ -8,18 +6,21 @@ import { query, redirect } from "@solidjs/router" import { AccountTable } from "@opencode/cloud-core/schema/account.sql.js" import { Actor } from "@opencode/cloud-core/actor.js" -export async function withActor(fn: () => T) { - const actor = await getActor() - return Actor.provide(actor.type, actor.properties, fn) -} +import { createClient } from "@openauthjs/openauth/client" +import { useAuthSession } from "./auth.session" + +export const AuthClient = createClient({ + clientID: "app", + issuer: import.meta.env.VITE_AUTH_URL, +}) export const getActor = query(async (): Promise => { "use server" const evt = getRequestEvent() const url = new URL(evt!.request.headers.get("referer") ?? evt!.request.url) const auth = await useAuthSession() - const [, workspaceHint] = url.pathname.split("/").filter((x) => x.length > 0) - if (!workspaceHint) { + const splits = url.pathname.split("/").filter(Boolean) + if (splits[0] !== "workspace") { if (auth.data.current) { const current = auth.data.account[auth.data.current] return { @@ -49,6 +50,7 @@ export const getActor = query(async (): Promise => { properties: {}, } } + const workspaceHint = splits[1] const accounts = Object.keys(auth.data.account) const result = await Database.transaction(async (tx) => { return await tx @@ -74,32 +76,3 @@ export const getActor = query(async (): Promise => { } throw redirect("/auth/authorize") }, "actor") - -export const AuthClient = createClient({ - clientID: "app", - issuer: import.meta.env.VITE_AUTH_URL, -}) - -export interface AuthSession { - account: Record< - string, - { - id: string - email: string - } - > - current?: string -} - -export function useAuthSession() { - return useSession({ - password: "0".repeat(32), - name: "auth", - cookie: { - secure: false, - httpOnly: true, - }, - }) -} - -export function AuthProvider() { } diff --git a/cloud/app/src/context/auth.withActor.ts b/cloud/app/src/context/auth.withActor.ts new file mode 100644 index 0000000000..a61b728ef2 --- /dev/null +++ b/cloud/app/src/context/auth.withActor.ts @@ -0,0 +1,7 @@ +import { Actor } from "@opencode/cloud-core/actor.js" +import { getActor } from "./auth" + +export async function withActor(fn: () => T) { + const actor = await getActor() + return Actor.provide(actor.type, actor.properties, fn) +} diff --git a/cloud/app/src/routes/workspace/[workspaceID].tsx b/cloud/app/src/routes/workspace/[workspaceID].tsx index 00e61a0c7a..f507b51529 100644 --- a/cloud/app/src/routes/workspace/[workspaceID].tsx +++ b/cloud/app/src/routes/workspace/[workspaceID].tsx @@ -2,7 +2,8 @@ import { Billing } from "@opencode/cloud-core/billing.js" import { Key } from "@opencode/cloud-core/key.js" import { action, createAsync, revalidate, query, useAction, useSubmission } from "@solidjs/router" import { createEffect, createSignal, For, onMount, Show } from "solid-js" -import { getActor, withActor } from "~/context/auth" +import { getActor } from "~/context/auth" +import { withActor } from "~/context/auth.withActor" ///////////////////////////////////// // Keys related queries and actions @@ -47,8 +48,11 @@ const createPortalUrl = action(async (returnUrl: string) => { return withActor(() => Billing.generatePortalUrl({ returnUrl })) }, "portalUrl") -export default function() { +export default function () { const actor = createAsync(() => getActor()) + onMount(() => { + console.log("MOUNTED", actor()) + }) ///////////////// // Keys section diff --git a/cloud/web/package.json b/cloud/web/package.json index 1d0184131d..95757e0917 100644 --- a/cloud/web/package.json +++ b/cloud/web/package.json @@ -26,7 +26,7 @@ "@solid-primitives/storage": "4.3.1", "@solidjs/meta": "0.29.4", "@solidjs/router": "0.15.3", - "solid-js": "1.9.5", + "solid-js": "catalog:", "solid-list": "0.3.0" } } diff --git a/package.json b/package.json index 4e99177c5d..162df1b953 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "hono": "4.7.10", "typescript": "5.8.2", "zod": "3.25.76", - "remeda": "2.26.0" + "remeda": "2.26.0", + "solid-js": "1.9.9" } }, "dependencies": { diff --git a/packages/web/package.json b/packages/web/package.json index a1b55ad4d3..3a36c74b97 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -30,7 +30,7 @@ "remeda": "2.26.0", "sharp": "0.32.5", "shiki": "3.4.2", - "solid-js": "1.9.7", + "solid-js": "catalog:", "toolbeam-docs-theme": "0.4.6" }, "devDependencies": { From 12eb1391b985c257f6dc5c58f9f79d78d2b36e7a Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Fri, 29 Aug 2025 11:11:26 -0500 Subject: [PATCH 087/112] fix: lsp debug cmd log (#2310) --- packages/opencode/src/cli/cmd/debug/lsp.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/opencode/src/cli/cmd/debug/lsp.ts b/packages/opencode/src/cli/cmd/debug/lsp.ts index ac1bac7c10..4d864db4a9 100644 --- a/packages/opencode/src/cli/cmd/debug/lsp.ts +++ b/packages/opencode/src/cli/cmd/debug/lsp.ts @@ -16,7 +16,7 @@ const DiagnosticsCommand = cmd({ async handler(args) { await bootstrap({ cwd: process.cwd() }, async () => { await LSP.touchFile(args.file, true) - console.log(await LSP.diagnostics()) + console.log(JSON.stringify(await LSP.diagnostics(), null, 2)) }) }, }) From fd355c15db305cca5b7386e79a7a9a2e08e9ef99 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 29 Aug 2025 12:24:58 -0400 Subject: [PATCH 088/112] Update sst --- bun.lock | 20 ++++++++++---------- package.json | 2 +- sst-env.d.ts | 1 + 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/bun.lock b/bun.lock index fe4d984a93..251e007107 100644 --- a/bun.lock +++ b/bun.lock @@ -8,7 +8,7 @@ }, "devDependencies": { "prettier": "3.5.3", - "sst": "3.17.8", + "sst": "3.17.11", }, }, "cloud/app": { @@ -2675,23 +2675,23 @@ "ssri": ["ssri@10.0.6", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ=="], - "sst": ["sst@3.17.8", "", { "dependencies": { "aws-sdk": "2.1692.0", "aws4fetch": "1.0.18", "jose": "5.2.3", "opencontrol": "0.0.6", "openid-client": "5.6.4" }, "optionalDependencies": { "sst-darwin-arm64": "3.17.8", "sst-darwin-x64": "3.17.8", "sst-linux-arm64": "3.17.8", "sst-linux-x64": "3.17.8", "sst-linux-x86": "3.17.8", "sst-win32-arm64": "3.17.8", "sst-win32-x64": "3.17.8", "sst-win32-x86": "3.17.8" }, "bin": { "sst": "bin/sst.mjs" } }, "sha512-P/a9/ZsjtQRrTBerBMO1ODaVa5HVTmNLrQNJiYvu2Bgd0ov+vefQeHv6oima8HLlPwpDIPS2gxJk8BZrTZMfCA=="], + "sst": ["sst@3.17.11", "", { "dependencies": { "aws-sdk": "2.1692.0", "aws4fetch": "1.0.18", "jose": "5.2.3", "opencontrol": "0.0.6", "openid-client": "5.6.4" }, "optionalDependencies": { "sst-darwin-arm64": "3.17.11", "sst-darwin-x64": "3.17.11", "sst-linux-arm64": "3.17.11", "sst-linux-x64": "3.17.11", "sst-linux-x86": "3.17.11", "sst-win32-arm64": "3.17.11", "sst-win32-x64": "3.17.11", "sst-win32-x86": "3.17.11" }, "bin": { "sst": "bin/sst.mjs" } }, "sha512-Hwl14L55ZmgAX2ZtBSBoe5BpClSlZ/LNPgB/yqQpX2eaWME5dmW+Qmrm1HHGLft8JD85pJd6P2i7wuFkMrS/qA=="], - "sst-darwin-arm64": ["sst-darwin-arm64@3.17.8", "", { "os": "darwin", "cpu": "arm64" }, "sha512-50P6YRMnZVItZUfB0+NzqMww2mmm4vB3zhTVtWUtGoXeiw78g1AEnVlmS28gYXPHM1P987jTvR7EON9u9ig/Dg=="], + "sst-darwin-arm64": ["sst-darwin-arm64@3.17.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c3A0MIJ+fb2T6gjUvDvt3Pakx9QSqJduO3gb48kVlE0NPApTau16CXzEyyoVKZNFxGFakuGUjFtTJfrfmTiwbA=="], - "sst-darwin-x64": ["sst-darwin-x64@3.17.8", "", { "os": "darwin", "cpu": "x64" }, "sha512-P0pnMHCmpkpcsxkWpilmeoD79LkbkoIcv6H0aeM9ArT/71/JBhvqH+HjMHSJCzni/9uR6er+nH5F+qol0UO6Bw=="], + "sst-darwin-x64": ["sst-darwin-x64@3.17.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-ctKPvmN4E52sN23EpTcuDQPXYkic8iY9Piy6b3ie9g1voPxs0h36XrRIckbYq5enSeby2Gk4BeI7OaZlj8B90A=="], - "sst-linux-arm64": ["sst-linux-arm64@3.17.8", "", { "os": "linux", "cpu": "arm64" }, "sha512-vun54YA/UzprCu9p8BC4rMwFU5Cj9xrHAHYLYUp/yq4H0pfmBIiQM62nsfIKizRThe/TkBFy60EEi9myf6raYA=="], + "sst-linux-arm64": ["sst-linux-arm64@3.17.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-LdXpUDT5A5g6W0YkON15ySwmTDMbhXkbVxCk6YqB4eus5iEL4pniV/qImPsHcl5od2bWbPosjeDFLnGogxwPLA=="], - "sst-linux-x64": ["sst-linux-x64@3.17.8", "", { "os": "linux", "cpu": "x64" }, "sha512-HqByCaLE2gEJbM20P1QRd+GqDMAiieuU53FaZA1F+AGxQi+kR82NWjrPqFcMj4dMYg8w/TWXuV+G5+PwoUmpDw=="], + "sst-linux-x64": ["sst-linux-x64@3.17.11", "", { "os": "linux", "cpu": "x64" }, "sha512-UU7ZK4qlb19Bc6G3Tj8BL0lYhKRBkdVul3gsCHc8D07gjHrDYP1JZcRPteq/Ij7zLlLBzNilwhpBNhDcRqJ2BA=="], - "sst-linux-x86": ["sst-linux-x86@3.17.8", "", { "os": "linux", "cpu": "none" }, "sha512-bCd6QM3MejfSmdvg8I/k+aUJQIZEQJg023qmN78fv00vwlAtfECvY7tjT9E2m3LDp33pXrcRYbFOQzPu+tWFfA=="], + "sst-linux-x86": ["sst-linux-x86@3.17.11", "", { "os": "linux", "cpu": "none" }, "sha512-q/Y+trzKVT9pc/kIYkgnISQqv69y/6T6IM1/fBgq3ZWbb9TBpLrW848vFS0PThH23QrcuV1U+2e6a9IgU67LHg=="], - "sst-win32-arm64": ["sst-win32-arm64@3.17.8", "", { "os": "win32", "cpu": "arm64" }, "sha512-pilx0n8gm4aHJae/vNiqIwZkWF3tdwWzD/ON7hkytw+CVSZ0FXtyFW/yO/+2u3Yw0Kj0lSWPnUqYgm/eHPLwQA=="], + "sst-win32-arm64": ["sst-win32-arm64@3.17.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-lTIepV7/0GqUTbpTIAYs3KZegRzvb+xYEwkJwEFL7eCKKUGnrGPo13858PHeKmYdGRWa4tbeOsviRYaoXrWCDw=="], - "sst-win32-x64": ["sst-win32-x64@3.17.8", "", { "os": "win32", "cpu": "x64" }, "sha512-Jb0FVRyiOtESudF1V8ucW65PuHrx/iOHUamIO0JnbujWNHZBTRPB2QHN1dbewgkueYDaCmyS8lvuIImLwYJnzQ=="], + "sst-win32-x64": ["sst-win32-x64@3.17.11", "", { "os": "win32", "cpu": "x64" }, "sha512-CLZTwqRDUGWShaR02Nd1VMGG9G/a50NY0rjh/WopaTFj2SoEot/vZil4LkVWqma4rOdNX+ABJ4//O92VQSHkQQ=="], - "sst-win32-x86": ["sst-win32-x86@3.17.8", "", { "os": "win32", "cpu": "none" }, "sha512-oVmFa/PoElQmfnGJlB0w6rPXiYuldiagO6AbrLMT/6oAnWerLQ8Uhv9tJWfMh3xtPLImQLTjxDo1v0AIzEv9QA=="], + "sst-win32-x86": ["sst-win32-x86@3.17.11", "", { "os": "win32", "cpu": "none" }, "sha512-KQKeU/6m7AUu9LFg71wMn6612aY+ZHwmUsTRdGPOt6zDr1oGJAFUy8lXtbqx6txpdKgDzixHDT6aLXvnf9DR0Q=="], "stack-trace": ["stack-trace@0.0.10", "", {}, "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg=="], diff --git a/package.json b/package.json index 162df1b953..2ba768078b 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ }, "devDependencies": { "prettier": "3.5.3", - "sst": "3.17.8" + "sst": "3.17.11" }, "repository": { "type": "git", diff --git a/sst-env.d.ts b/sst-env.d.ts index 358891fdf0..5715d2ea93 100644 --- a/sst-env.d.ts +++ b/sst-env.d.ts @@ -25,6 +25,7 @@ declare module "sst" { "type": "sst.cloudflare.Kv" } "Bucket": { + "name": string "type": "sst.cloudflare.Bucket" } "DATABASE_PASSWORD": { From 9c02c4cfe8880059fd83763bf758b4c91d074893 Mon Sep 17 00:00:00 2001 From: Jay V Date: Fri, 29 Aug 2025 12:48:01 -0400 Subject: [PATCH 089/112] ignore: cloud --- cloud/app/src/routes/workspace.tsx | 16 +- .../workspace/{[workspaceID].tsx => [id].tsx} | 3 +- cloud/app/src/routes/workspace/index.css | 251 +++++++++++++++ cloud/app/src/routes/workspace/workspace.css | 300 +----------------- cloud/app/src/style/token/color.css | 5 +- 5 files changed, 268 insertions(+), 307 deletions(-) rename cloud/app/src/routes/workspace/{[workspaceID].tsx => [id].tsx} (99%) create mode 100644 cloud/app/src/routes/workspace/index.css diff --git a/cloud/app/src/routes/workspace.tsx b/cloud/app/src/routes/workspace.tsx index d0678ef83d..0724dd7f4c 100644 --- a/cloud/app/src/routes/workspace.tsx +++ b/cloud/app/src/routes/workspace.tsx @@ -11,21 +11,9 @@ export default function WorkspaceLayout(props: RouteSectionProps) { -
- - - - - - - - - - + name@example.com + Logout
{props.children} diff --git a/cloud/app/src/routes/workspace/[workspaceID].tsx b/cloud/app/src/routes/workspace/[id].tsx similarity index 99% rename from cloud/app/src/routes/workspace/[workspaceID].tsx rename to cloud/app/src/routes/workspace/[id].tsx index f507b51529..abada1c893 100644 --- a/cloud/app/src/routes/workspace/[workspaceID].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -4,6 +4,7 @@ import { action, createAsync, revalidate, query, useAction, useSubmission } from import { createEffect, createSignal, For, onMount, Show } from "solid-js" import { getActor } from "~/context/auth" import { withActor } from "~/context/auth.withActor" +import "./index.css" ///////////////////////////////////// // Keys related queries and actions @@ -48,7 +49,7 @@ const createPortalUrl = action(async (returnUrl: string) => { return withActor(() => Billing.generatePortalUrl({ returnUrl })) }, "portalUrl") -export default function () { +export default function() { const actor = createAsync(() => getActor()) onMount(() => { console.log("MOUNTED", actor()) diff --git a/cloud/app/src/routes/workspace/index.css b/cloud/app/src/routes/workspace/index.css new file mode 100644 index 0000000000..8d1006fca2 --- /dev/null +++ b/cloud/app/src/routes/workspace/index.css @@ -0,0 +1,251 @@ +[data-page="workspace"] { + /* Main content container */ + & > div { + display: flex; + flex-direction: column; + gap: var(--space-6); + } + + /* Adjust header spacing */ + [data-component="workspace-header"] + div { + margin-top: var(--space-2); + } + + /* Section headers */ + h1 { + font-size: var(--font-size-3xl); + font-weight: 500; + line-height: 1.2; + letter-spacing: -0.05em; + margin: 0; + color: var(--color-text); + + @media (max-width: 30rem) { + font-size: var(--font-size-2xl); + line-height: 1.25; + } + } + + /* Section descriptions */ + p { + margin: 0; + color: var(--color-text-secondary); + font-size: var(--font-size-md); + line-height: 1.5; + } + + /* API Keys Section */ + [data-slot="create-form"] { + display: flex; + flex-direction: column; + gap: var(--space-3); + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + max-width: 32rem; + + input { + padding: var(--space-2) var(--space-3); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + background-color: var(--color-bg); + color: var(--color-text); + font-size: var(--font-size-sm); + font-family: var(--font-mono); + + &:focus { + outline: none; + border-color: var(--color-accent); + } + + &::placeholder { + color: var(--color-text-disabled); + } + } + + [data-slot="form-actions"] { + display: flex; + gap: var(--space-2); + justify-content: flex-end; + } + } + + [data-slot="key-list"] { + display: flex; + flex-direction: column; + gap: var(--space-2); + } + + [data-slot="key-item"] { + display: flex; + justify-content: space-between; + align-items: flex-start; + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + gap: var(--space-4); + + @media (max-width: 30rem) { + flex-direction: column; + gap: var(--space-3); + } + } + + [data-slot="key-info"] { + display: flex; + flex-direction: column; + gap: var(--space-1); + flex: 1; + } + + [data-slot="key-name"] { + font-size: var(--font-size-md); + font-weight: 500; + color: var(--color-text); + } + + [data-slot="key-value"] { + font-size: var(--font-size-xs); + font-family: var(--font-mono); + color: var(--color-text-secondary); + background-color: var(--color-bg); + padding: var(--space-1) var(--space-2); + border-radius: var(--space-1); + border: 1px solid var(--color-border-muted); + } + + [data-slot="key-meta"] { + font-size: var(--font-size-xs); + color: var(--color-text-disabled); + } + + [data-slot="key-actions"] { + display: flex; + gap: var(--space-2); + } + + [data-slot="empty-state"] { + padding: var(--space-8); + text-align: center; + color: var(--color-text-muted); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + + p { + margin: 0; + font-size: var(--font-size-sm); + } + } + + /* Balance Section */ + [data-slot="balance"] { + display: flex; + flex-direction: column; + gap: var(--space-3); + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + max-width: 32rem; + + p { + font-size: var(--font-size-2xl); + font-weight: 500; + color: var(--color-text); + margin: 0; + } + } + + /* Payment and Usage Items */ + [data-slot="payment-item"], + [data-slot="usage-item"] { + display: flex; + align-items: center; + gap: var(--space-4); + padding: var(--space-3); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + font-size: var(--font-size-sm); + font-family: var(--font-mono); + + @media (max-width: 30rem) { + flex-direction: column; + align-items: flex-start; + gap: var(--space-2); + } + } + + [data-slot="payment-id"], + [data-slot="payment-amount"], + [data-slot="payment-date"], + [data-slot="usage-model"], + [data-slot="usage-tokens"], + [data-slot="usage-cost"], + [data-slot="usage-date"] { + color: var(--color-text-muted); + } + + /* Buttons */ + button { + padding: var(--space-2) var(--space-4); + border: 1px solid var(--color-border); + border-radius: var(--space-2); + background-color: var(--color-bg); + color: var(--color-text); + font-size: var(--font-size-sm); + font-family: var(--font-sans); + cursor: pointer; + transition: all 0.15s ease; + + &:hover { + background-color: var(--color-surface-hover); + border-color: var(--color-accent); + } + + &:active { + transform: translateY(1px); + } + + &:disabled { + opacity: 0.5; + cursor: not-allowed; + + &:hover { + background-color: var(--color-bg); + border-color: var(--color-border); + transform: none; + } + } + + &[color="primary"] { + background-color: var(--color-primary); + border-color: var(--color-primary); + color: var(--color-primary-text); + + &:hover { + background-color: var(--color-primary-hover); + border-color: var(--color-primary-hover); + } + } + + &[color="ghost"] { + background-color: transparent; + border-color: transparent; + color: var(--color-text-muted); + + &:hover { + background-color: var(--color-surface-hover); + border-color: var(--color-border); + color: var(--color-text); + } + } + } + + @media (prefers-color-scheme: dark) { + /* Dark mode specific adjustments if needed */ + } +} diff --git a/cloud/app/src/routes/workspace/workspace.css b/cloud/app/src/routes/workspace/workspace.css index 66ae46ed43..7ea96aed29 100644 --- a/cloud/app/src/routes/workspace/workspace.css +++ b/cloud/app/src/routes/workspace/workspace.css @@ -18,8 +18,7 @@ display: flex; justify-content: space-between; align-items: center; - height: 3.5rem; - padding: 0 var(--space-6); + padding: var(--space-4) var(--space-3); margin: calc(-1 * var(--space-6)); margin-bottom: var(--space-6); border-bottom: 1px solid var(--color-border); @@ -34,6 +33,7 @@ [data-slot="header-brand"] { flex: 0 0 auto; + padding-top: 4px; svg { width: 138px; @@ -48,300 +48,22 @@ } } - [data-slot="header-nav"] { - display: flex; - gap: var(--space-4); - align-items: center; - - @media (max-width: 50rem) { - display: none; - } - - a { - color: var(--color-text-secondary); - text-decoration: none; - font-size: var(--font-size-sm); - font-weight: 400; - text-transform: uppercase; - letter-spacing: 0.05em; - transition: color 0.15s ease; - - &:hover { - color: var(--color-text); - } - } - } - [data-slot="header-actions"] { display: flex; gap: var(--space-4); align-items: center; + font-size: var(--font-size-sm); + + span { + color: var(--color-text-muted); + } a { - display: flex; - align-items: center; - justify-content: center; - color: var(--color-text-muted); - text-decoration: none; - transition: color 0.15s ease; - - &:hover { - color: var(--color-text); - } - - svg { - display: block; - } - } - } - - /* Main content container */ - & > div { - display: flex; - flex-direction: column; - gap: var(--space-6); - } - - /* Adjust header spacing */ - [data-component="workspace-header"] + div { - margin-top: var(--space-2); - } - - /* Section headers */ - h1 { - font-size: var(--font-size-3xl); - font-weight: 500; - line-height: 1.2; - letter-spacing: -0.05em; - margin: 0; - color: var(--color-text); - - @media (max-width: 30rem) { - font-size: var(--font-size-2xl); - line-height: 1.25; - } - } - - /* Section descriptions */ - p { - margin: 0; - color: var(--color-text-secondary); - font-size: var(--font-size-md); - line-height: 1.5; - } - - /* API Keys Section */ - [data-slot="create-form"] { - display: flex; - flex-direction: column; - gap: var(--space-3); - padding: var(--space-4); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - max-width: 32rem; - - input { - padding: var(--space-2) var(--space-3); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - background-color: var(--color-bg); color: var(--color-text); - font-size: var(--font-size-sm); - font-family: var(--font-mono); - - &:focus { - outline: none; - border-color: var(--color-accent); - } - - &::placeholder { - color: var(--color-text-disabled); - } + text-decoration: underline; + text-underline-offset: var(--space-0-75); + text-decoration-thickness: 1px; + text-transform: uppercase; } - - [data-slot="form-actions"] { - display: flex; - gap: var(--space-2); - justify-content: flex-end; - } - } - - [data-slot="key-list"] { - display: flex; - flex-direction: column; - gap: var(--space-2); - } - - [data-slot="key-item"] { - display: flex; - justify-content: space-between; - align-items: flex-start; - padding: var(--space-4); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - gap: var(--space-4); - - @media (max-width: 30rem) { - flex-direction: column; - gap: var(--space-3); - } - } - - [data-slot="key-info"] { - display: flex; - flex-direction: column; - gap: var(--space-1); - flex: 1; - } - - [data-slot="key-name"] { - font-size: var(--font-size-md); - font-weight: 500; - color: var(--color-text); - } - - [data-slot="key-value"] { - font-size: var(--font-size-xs); - font-family: var(--font-mono); - color: var(--color-text-secondary); - background-color: var(--color-bg); - padding: var(--space-1) var(--space-2); - border-radius: var(--space-1); - border: 1px solid var(--color-border-muted); - } - - [data-slot="key-meta"] { - font-size: var(--font-size-xs); - color: var(--color-text-disabled); - } - - [data-slot="key-actions"] { - display: flex; - gap: var(--space-2); - } - - [data-slot="empty-state"] { - padding: var(--space-8); - text-align: center; - color: var(--color-text-muted); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - - p { - margin: 0; - font-size: var(--font-size-sm); - } - } - - /* Balance Section */ - [data-slot="balance"] { - display: flex; - flex-direction: column; - gap: var(--space-3); - padding: var(--space-4); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - max-width: 32rem; - - p { - font-size: var(--font-size-2xl); - font-weight: 500; - color: var(--color-text); - margin: 0; - } - } - - /* Payment and Usage Items */ - [data-slot="payment-item"], - [data-slot="usage-item"] { - display: flex; - align-items: center; - gap: var(--space-4); - padding: var(--space-3); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - font-size: var(--font-size-sm); - font-family: var(--font-mono); - - @media (max-width: 30rem) { - flex-direction: column; - align-items: flex-start; - gap: var(--space-2); - } - } - - [data-slot="payment-id"], - [data-slot="payment-amount"], - [data-slot="payment-date"], - [data-slot="usage-model"], - [data-slot="usage-tokens"], - [data-slot="usage-cost"], - [data-slot="usage-date"] { - color: var(--color-text-muted); - } - - /* Buttons */ - button { - padding: var(--space-2) var(--space-4); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - background-color: var(--color-bg); - color: var(--color-text); - font-size: var(--font-size-sm); - font-family: var(--font-sans); - cursor: pointer; - transition: all 0.15s ease; - - &:hover { - background-color: var(--color-surface-hover); - border-color: var(--color-accent); - } - - &:active { - transform: translateY(1px); - } - - &:disabled { - opacity: 0.5; - cursor: not-allowed; - - &:hover { - background-color: var(--color-bg); - border-color: var(--color-border); - transform: none; - } - } - - &[color="primary"] { - background-color: var(--color-primary); - border-color: var(--color-primary); - color: var(--color-primary-text); - - &:hover { - background-color: var(--color-primary-hover); - border-color: var(--color-primary-hover); - } - } - - &[color="ghost"] { - background-color: transparent; - border-color: transparent; - color: var(--color-text-muted); - - &:hover { - background-color: var(--color-surface-hover); - border-color: var(--color-border); - color: var(--color-text); - } - } - } - - @media (prefers-color-scheme: dark) { - /* Dark mode specific adjustments if needed */ } } diff --git a/cloud/app/src/style/token/color.css b/cloud/app/src/style/token/color.css index 675ffdde26..f1a097d2f5 100644 --- a/cloud/app/src/style/token/color.css +++ b/cloud/app/src/style/token/color.css @@ -42,12 +42,11 @@ /* Surface colors */ --color-surface: var(--color-bg-surface); --color-surface-hover: var(--color-bg-elevated); - --color-border: var(--color-border); + --color-surface-border: var(--color-border); } @media (prefers-color-scheme: dark) { :root { - /* OpenCode dark theme colors */ --color-bg: #0c0c0e; --color-bg-surface: #161618; --color-bg-elevated: #1c1c1f; @@ -87,6 +86,6 @@ /* Surface colors */ --color-surface: var(--color-bg-surface); --color-surface-hover: var(--color-bg-elevated); - --color-border: var(--color-border); + --color-surface-border: var(--color-border); } } From 918dd58a151701f036069a5ef84a63dcc3481856 Mon Sep 17 00:00:00 2001 From: Parbez Date: Sat, 30 Aug 2025 00:59:18 +0530 Subject: [PATCH 090/112] Fix code block formatting in sdk.mdx (#2312) --- packages/web/src/content/docs/docs/sdk.mdx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/web/src/content/docs/docs/sdk.mdx b/packages/web/src/content/docs/docs/sdk.mdx index 7ce7d39032..3b4353d825 100644 --- a/packages/web/src/content/docs/docs/sdk.mdx +++ b/packages/web/src/content/docs/docs/sdk.mdx @@ -50,7 +50,7 @@ const client = createOpencodeClient({ You can also programmatically start an opencode server: -````javascript +```javascript import { createOpencodeServer } from "@opencode-ai/sdk" const server = await createOpencodeServer({ @@ -61,7 +61,7 @@ const server = await createOpencodeServer({ console.log(`Server running at ${server.url}`) server.close() -} +``` #### Options From a05e6774129eb45668ddebbfa7eb41ec4c25746b Mon Sep 17 00:00:00 2001 From: Jay V Date: Fri, 29 Aug 2025 13:14:21 -0400 Subject: [PATCH 091/112] ignore: cloud progress --- cloud/app/src/routes/index.tsx | 3 +- cloud/app/src/routes/workspace/[id].tsx | 274 ++++++----- cloud/app/src/routes/workspace/index.css | 481 ++++++++++--------- cloud/app/src/routes/workspace/workspace.css | 2 +- cloud/app/src/style/token/space.css | 4 + 5 files changed, 417 insertions(+), 347 deletions(-) diff --git a/cloud/app/src/routes/index.tsx b/cloud/app/src/routes/index.tsx index 3474a99319..b9344bc558 100644 --- a/cloud/app/src/routes/index.tsx +++ b/cloud/app/src/routes/index.tsx @@ -8,7 +8,8 @@ import IMG_VSCODE from "../asset/lander/screenshot-vscode.png" import IMG_GITHUB from "../asset/lander/screenshot-github.png" import { IconCopy, IconCheck } from "../component/icon" import { createAsync, query, redirect } from "@solidjs/router" -import { getActor, withActor } from "~/context/auth" +import { getActor } from "~/context/auth" +import { withActor } from "~/context/auth.withActor" import { Account } from "@opencode/cloud-core/account.js" function CopyStatus() { diff --git a/cloud/app/src/routes/workspace/[id].tsx b/cloud/app/src/routes/workspace/[id].tsx index abada1c893..bfeb068841 100644 --- a/cloud/app/src/routes/workspace/[id].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -49,7 +49,7 @@ const createPortalUrl = action(async (returnUrl: string) => { return withActor(() => Billing.generatePortalUrl({ returnUrl })) }, "portalUrl") -export default function() { +export default function () { const actor = createAsync(() => getActor()) onMount(() => { console.log("MOUNTED", actor()) @@ -154,126 +154,174 @@ export default function() { } return ( -
-

Actor

-
{JSON.stringify(actor())}
-

API Keys

- - setKeyName(e.currentTarget.value)} - onKeyPress={(e) => e.key === "Enter" && handleCreateKey()} - /> -
- - -
-
- } - > - - -
- + {/* Actor Section */} +
+
+

Actor

+

Current authenticated user information and session details.

+
+
{JSON.stringify(actor())}
+
+ + {/* API Keys Section */} +
+
+

API Keys

+

Manage your API keys for accessing opencode services.

+
+ -

Create an API key to access opencode gateway

+
+ setKeyName(e.currentTarget.value)} + onKeyPress={(e) => e.key === "Enter" && handleCreateKey()} + /> +
+ + +
} > - {(key) => ( -
-
-
{key.name}
-
{formatKey(key.key)}
-
- Created: {formatDate(key.timeCreated)} - {key.timeUsed && ` • Last used: ${formatDate(key.timeUsed)}`} + + +
+ +

Create an API key to access opencode gateway

+
+ } + > + {(key) => ( +
+
+
{key.name}
+
{formatKey(key.key)}
+
+ Created: {formatDate(key.timeCreated)} + {key.timeUsed && ` • Last used: ${formatDate(key.timeUsed)}`} +
+
+
+ +
-
- - + )} + +
+
+ + {/* Balance Section */} +
+
+

Balance

+

Manage your billing and add credits to your account.

+
+
+

+ {(() => { + const balanceStr = ((billingInfo()?.billing?.balance ?? 0) / 100000000).toFixed(2) + return `$${balanceStr === "-0.00" ? "0.00" : balanceStr}` + })()} +

+ +
+
+ + {/* Payments Section */} +
+
+

Payments History

+

Your recent payment transactions.

+
+
+ +

No payment history yet. Your payments will appear here after your first purchase.

-
- )} - - + } + > + {(payment) => ( +
+ {payment.id} + {" | "} + ${((payment.amount ?? 0) / 100000000).toFixed(2)} + {" | "} + {new Date(payment.timeCreated).toLocaleDateString()} +
+ )} + + + -

Balance

-

Manage your billing and add credits to your account.

-

- {(() => { - const balanceStr = ((billingInfo()?.billing?.balance ?? 0) / 100000000).toFixed(2) - return `$${balanceStr === "-0.00" ? "0.00" : balanceStr}` - })()} -

- - -

Payments History

-

Your recent payment transactions.

- No payments found.

}> - {(payment) => ( -
- {payment.id} - {" | "} - ${((payment.amount ?? 0) / 100000000).toFixed(2)} - {" | "} - {new Date(payment.timeCreated).toLocaleDateString()} -
- )} -
- -

Usage History

-

Your recent API usage and costs.

- No usage found.

}> - {(usage) => ( -
- {usage.model} - {" | "} - {usage.inputTokens + usage.outputTokens} tokens - {" | "} - ${((usage.cost ?? 0) / 100000000).toFixed(4)} - {" | "} - {new Date(usage.timeCreated).toLocaleDateString()} -
- )} -
+ {/* Usage Section */} +
+
+

Usage History

+

Your recent API usage and costs.

+
+
+ +

No API usage yet. Your usage history will appear here after your first API calls.

+
+ } + > + {(usage) => ( +
+ {usage.model} + {" | "} + {usage.inputTokens + usage.outputTokens} tokens + {" | "} + ${((usage.cost ?? 0) / 100000000).toFixed(4)} + {" | "} + {new Date(usage.timeCreated).toLocaleDateString()} +
+ )} + + +
) } diff --git a/cloud/app/src/routes/workspace/index.css b/cloud/app/src/routes/workspace/index.css index 8d1006fca2..81bdff5b74 100644 --- a/cloud/app/src/routes/workspace/index.css +++ b/cloud/app/src/routes/workspace/index.css @@ -1,251 +1,268 @@ -[data-page="workspace"] { - /* Main content container */ - & > div { - display: flex; - flex-direction: column; - gap: var(--space-6); +/* Root container */ +[data-slot="root"] { + max-width: 64rem; + margin: 0 auto; + width: 100%; + display: flex; + flex-direction: column; + gap: var(--space-6); +} + +/* Adjust header spacing */ +[data-component="workspace-header"] + div { + margin-top: var(--space-2); +} + +/* Section titles */ +[data-slot="section-title"] { + display: flex; + flex-direction: column; + gap: var(--space-0-5); +} + +[data-slot="section-title"] h1 { + font-size: var(--font-size-lg); + font-weight: 500; + line-height: 1.2; + letter-spacing: -0.03125rem; + margin: 0; + color: var(--color-text-secondary); + text-transform: uppercase; + + @media (max-width: 30rem) { + font-size: var(--font-size-lg); + line-height: 1.25; } +} - /* Adjust header spacing */ - [data-component="workspace-header"] + div { - margin-top: var(--space-2); - } +[data-slot="section-title"] p { + font-size: var(--font-size-sm); + color: var(--color-text-muted); +} - /* Section headers */ - h1 { - font-size: var(--font-size-3xl); - font-weight: 500; - line-height: 1.2; - letter-spacing: -0.05em; - margin: 0; - color: var(--color-text); +/* Section descriptions */ +p { + margin: 0; + color: var(--color-text-secondary); + font-size: var(--font-size-md); + line-height: 1.5; +} - @media (max-width: 30rem) { - font-size: var(--font-size-2xl); - line-height: 1.25; - } - } +/* Section containers */ +section { + display: flex; + flex-direction: column; + gap: var(--space-6); +} - /* Section descriptions */ - p { - margin: 0; - color: var(--color-text-secondary); - font-size: var(--font-size-md); - line-height: 1.5; - } +/* API Keys Section */ +[data-slot="create-form"] { + display: flex; + flex-direction: column; + gap: var(--space-3); + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--border-radius-sm); + max-width: 32rem; - /* API Keys Section */ - [data-slot="create-form"] { - display: flex; - flex-direction: column; - gap: var(--space-3); - padding: var(--space-4); - background-color: var(--color-bg-surface); + input { + padding: var(--space-2) var(--space-3); border: 1px solid var(--color-border); - border-radius: var(--space-2); - max-width: 32rem; - - input { - padding: var(--space-2) var(--space-3); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - background-color: var(--color-bg); - color: var(--color-text); - font-size: var(--font-size-sm); - font-family: var(--font-mono); - - &:focus { - outline: none; - border-color: var(--color-accent); - } - - &::placeholder { - color: var(--color-text-disabled); - } - } - - [data-slot="form-actions"] { - display: flex; - gap: var(--space-2); - justify-content: flex-end; - } - } - - [data-slot="key-list"] { - display: flex; - flex-direction: column; - gap: var(--space-2); - } - - [data-slot="key-item"] { - display: flex; - justify-content: space-between; - align-items: flex-start; - padding: var(--space-4); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - gap: var(--space-4); - - @media (max-width: 30rem) { - flex-direction: column; - gap: var(--space-3); - } - } - - [data-slot="key-info"] { - display: flex; - flex-direction: column; - gap: var(--space-1); - flex: 1; - } - - [data-slot="key-name"] { - font-size: var(--font-size-md); - font-weight: 500; - color: var(--color-text); - } - - [data-slot="key-value"] { - font-size: var(--font-size-xs); - font-family: var(--font-mono); - color: var(--color-text-secondary); - background-color: var(--color-bg); - padding: var(--space-1) var(--space-2); - border-radius: var(--space-1); - border: 1px solid var(--color-border-muted); - } - - [data-slot="key-meta"] { - font-size: var(--font-size-xs); - color: var(--color-text-disabled); - } - - [data-slot="key-actions"] { - display: flex; - gap: var(--space-2); - } - - [data-slot="empty-state"] { - padding: var(--space-8); - text-align: center; - color: var(--color-text-muted); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - - p { - margin: 0; - font-size: var(--font-size-sm); - } - } - - /* Balance Section */ - [data-slot="balance"] { - display: flex; - flex-direction: column; - gap: var(--space-3); - padding: var(--space-4); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - max-width: 32rem; - - p { - font-size: var(--font-size-2xl); - font-weight: 500; - color: var(--color-text); - margin: 0; - } - } - - /* Payment and Usage Items */ - [data-slot="payment-item"], - [data-slot="usage-item"] { - display: flex; - align-items: center; - gap: var(--space-4); - padding: var(--space-3); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--space-2); - font-size: var(--font-size-sm); - font-family: var(--font-mono); - - @media (max-width: 30rem) { - flex-direction: column; - align-items: flex-start; - gap: var(--space-2); - } - } - - [data-slot="payment-id"], - [data-slot="payment-amount"], - [data-slot="payment-date"], - [data-slot="usage-model"], - [data-slot="usage-tokens"], - [data-slot="usage-cost"], - [data-slot="usage-date"] { - color: var(--color-text-muted); - } - - /* Buttons */ - button { - padding: var(--space-2) var(--space-4); - border: 1px solid var(--color-border); - border-radius: var(--space-2); + border-radius: var(--border-radius-sm); background-color: var(--color-bg); color: var(--color-text); font-size: var(--font-size-sm); - font-family: var(--font-sans); - cursor: pointer; - transition: all 0.15s ease; + font-family: var(--font-mono); - &:hover { - background-color: var(--color-surface-hover); + &:focus { + outline: none; border-color: var(--color-accent); } - &:active { - transform: translateY(1px); - } - - &:disabled { - opacity: 0.5; - cursor: not-allowed; - - &:hover { - background-color: var(--color-bg); - border-color: var(--color-border); - transform: none; - } - } - - &[color="primary"] { - background-color: var(--color-primary); - border-color: var(--color-primary); - color: var(--color-primary-text); - - &:hover { - background-color: var(--color-primary-hover); - border-color: var(--color-primary-hover); - } - } - - &[color="ghost"] { - background-color: transparent; - border-color: transparent; - color: var(--color-text-muted); - - &:hover { - background-color: var(--color-surface-hover); - border-color: var(--color-border); - color: var(--color-text); - } + &::placeholder { + color: var(--color-text-disabled); } } - @media (prefers-color-scheme: dark) { - /* Dark mode specific adjustments if needed */ + [data-slot="form-actions"] { + display: flex; + gap: var(--space-2); + justify-content: flex-end; + } +} + +[data-slot="key-list"], +[data-slot="payments-list"], +[data-slot="usage-list"] { + display: flex; + flex-direction: column; + gap: var(--space-2); +} + +[data-slot="key-item"] { + display: flex; + justify-content: space-between; + align-items: flex-start; + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--border-radius-sm); + gap: var(--space-4); + + @media (max-width: 30rem) { + flex-direction: column; + gap: var(--space-3); + } +} + +[data-slot="key-info"] { + display: flex; + flex-direction: column; + gap: var(--space-1); + flex: 1; +} + +[data-slot="key-name"] { + font-size: var(--font-size-md); + font-weight: 500; + color: var(--color-text); +} + +[data-slot="key-value"] { + font-size: var(--font-size-xs); + font-family: var(--font-mono); + color: var(--color-text-secondary); + background-color: var(--color-bg); + padding: var(--space-1) var(--space-2); + border-radius: var(--border-radius-sm); + border: 1px solid var(--color-border-muted); +} + +[data-slot="key-meta"] { + font-size: var(--font-size-xs); + color: var(--color-text-disabled); +} + +[data-slot="key-actions"] { + display: flex; + gap: var(--space-2); +} + +[data-slot="empty-state"] { + padding: var(--space-8); + text-align: center; + border: 1px dashed var(--color-border); + border-radius: var(--border-radius-sm); + + p { + margin: 0; + font-size: var(--font-size-sm); + color: var(--color-text-muted); + } +} + +/* Balance Section */ +[data-slot="balance"] { + display: flex; + flex-direction: column; + gap: var(--space-3); + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--border-radius-sm); + max-width: 32rem; + + p { + font-size: var(--font-size-2xl); + font-weight: 500; + color: var(--color-text); + margin: 0; + } +} + +/* Payment and Usage Items */ +[data-slot="payment-item"], +[data-slot="usage-item"] { + display: flex; + align-items: center; + gap: var(--space-4); + padding: var(--space-3); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--border-radius-sm); + font-size: var(--font-size-sm); + font-family: var(--font-mono); + + @media (max-width: 30rem) { + flex-direction: column; + align-items: flex-start; + gap: var(--space-2); + } +} + +[data-slot="payment-id"], +[data-slot="payment-amount"], +[data-slot="payment-date"], +[data-slot="usage-model"], +[data-slot="usage-tokens"], +[data-slot="usage-cost"], +[data-slot="usage-date"] { + color: var(--color-text-muted); +} + +/* Buttons */ +button { + padding: var(--space-2) var(--space-4); + border: 1px solid var(--color-border); + border-radius: var(--border-radius-sm); + background-color: var(--color-bg); + color: var(--color-text); + font-size: var(--font-size-sm); + font-family: var(--font-sans); + cursor: pointer; + transition: all 0.15s ease; + + &:hover { + background-color: var(--color-surface-hover); + border-color: var(--color-accent); + } + + &:active { + transform: translateY(1px); + } + + &:disabled { + opacity: 0.5; + cursor: not-allowed; + + &:hover { + background-color: var(--color-bg); + border-color: var(--color-border); + transform: none; + } + } + + &[color="primary"] { + background-color: var(--color-primary); + border-color: var(--color-primary); + color: var(--color-primary-text); + + &:hover { + background-color: var(--color-primary-hover); + border-color: var(--color-primary-hover); + } + } + + &[color="ghost"] { + background-color: transparent; + border-color: transparent; + color: var(--color-text-muted); + + &:hover { + background-color: var(--color-surface-hover); + border-color: var(--color-border); + color: var(--color-text); + } } } diff --git a/cloud/app/src/routes/workspace/workspace.css b/cloud/app/src/routes/workspace/workspace.css index 7ea96aed29..f4a8b2af25 100644 --- a/cloud/app/src/routes/workspace/workspace.css +++ b/cloud/app/src/routes/workspace/workspace.css @@ -18,7 +18,7 @@ display: flex; justify-content: space-between; align-items: center; - padding: var(--space-4) var(--space-3); + padding: var(--space-4) var(--space-4); margin: calc(-1 * var(--space-6)); margin-bottom: var(--space-6); border-bottom: 1px solid var(--color-border); diff --git a/cloud/app/src/style/token/space.css b/cloud/app/src/style/token/space.css index dcd871c5fd..7e1a1b3974 100644 --- a/cloud/app/src/style/token/space.css +++ b/cloud/app/src/style/token/space.css @@ -39,4 +39,8 @@ body { --space-72: 18rem; --space-80: 20rem; --space-96: 24rem; + + --border-radius-sm: 0.1875rem; + --border-radius-md: 0.3125rem; + --border-radius-lg: 0.5rem; } From 28c341ad321e106c690244681cc0bcd2c9926851 Mon Sep 17 00:00:00 2001 From: Jay V Date: Fri, 29 Aug 2025 17:30:48 -0400 Subject: [PATCH 092/112] ignore: cloud usage history --- cloud/app/src/routes/workspace.tsx | 4 +- cloud/app/src/routes/workspace/[id].tsx | 419 +++++++++------ cloud/app/src/routes/workspace/index.css | 518 ++++++++++++------- cloud/app/src/routes/workspace/workspace.css | 6 - 4 files changed, 580 insertions(+), 367 deletions(-) diff --git a/cloud/app/src/routes/workspace.tsx b/cloud/app/src/routes/workspace.tsx index 0724dd7f4c..865e765190 100644 --- a/cloud/app/src/routes/workspace.tsx +++ b/cloud/app/src/routes/workspace.tsx @@ -16,7 +16,9 @@ export default function WorkspaceLayout(props: RouteSectionProps) { Logout - {props.children} +
+ {props.children} +
) } diff --git a/cloud/app/src/routes/workspace/[id].tsx b/cloud/app/src/routes/workspace/[id].tsx index bfeb068841..6000228dc2 100644 --- a/cloud/app/src/routes/workspace/[id].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -49,7 +49,60 @@ const createPortalUrl = action(async (returnUrl: string) => { return withActor(() => Billing.generatePortalUrl({ returnUrl })) }, "portalUrl") -export default function () { +const dummyUsageData = [ + { + model: "claude-3-5-sonnet-20241022", + inputTokens: 1250, + outputTokens: 890, + reasoningTokens: 150, + cacheReadTokens: 0, + cacheWriteTokens: 45, + cost: 12340000, + timeCreated: new Date("2025-01-28T10:30:00Z"), + }, + { + model: "claude-3-haiku-20240307", + inputTokens: 2100, + outputTokens: 450, + reasoningTokens: null, + cacheReadTokens: 120, + cacheWriteTokens: 0, + cost: 5670000, + timeCreated: new Date("2025-01-27T15:22:00Z"), + }, + { + model: "claude-3-5-sonnet-20241022", + inputTokens: 850, + outputTokens: 1200, + reasoningTokens: 220, + cacheReadTokens: 30, + cacheWriteTokens: 15, + cost: 18990000, + timeCreated: new Date("2025-01-27T09:15:00Z"), + }, + { + model: "claude-3-opus-20240229", + inputTokens: 3200, + outputTokens: 1800, + reasoningTokens: 400, + cacheReadTokens: 0, + cacheWriteTokens: 100, + cost: 45670000, + timeCreated: new Date("2025-01-26T14:45:00Z"), + }, + { + model: "claude-3-haiku-20240307", + inputTokens: 650, + outputTokens: 280, + reasoningTokens: null, + cacheReadTokens: 200, + cacheWriteTokens: 0, + cost: 2340000, + timeCreated: new Date("2025-01-25T16:18:00Z"), + }, +] + +export default function() { const actor = createAsync(() => getActor()) onMount(() => { console.log("MOUNTED", actor()) @@ -69,6 +122,32 @@ export default function () { return date.toLocaleDateString() } + const formatDateForTable = (date: Date) => { + const options: Intl.DateTimeFormatOptions = { + day: "numeric", + month: "short", + hour: "numeric", + minute: "2-digit", + hour12: true, + } + return date.toLocaleDateString("en-GB", options).replace(",", ",") + } + + const formatDateUTC = (date: Date) => { + const options: Intl.DateTimeFormatOptions = { + weekday: "short", + year: "numeric", + month: "short", + day: "numeric", + hour: "numeric", + minute: "2-digit", + second: "2-digit", + timeZoneName: "short", + timeZone: "UTC", + } + return date.toLocaleDateString("en-US", options) + } + const formatKey = (key: string) => { if (key.length <= 11) return key return `${key.slice(0, 7)}...${key.slice(-4)}` @@ -155,173 +234,195 @@ export default function () { return (
- {/* Actor Section */} -
-
-

Actor

-

Current authenticated user information and session details.

-
-
{JSON.stringify(actor())}
+ {/* Title */} +
+

Gateway

+

+ Coding models optimized for use with opencode. Learn more. +

- {/* API Keys Section */} -
-
-

API Keys

-

Manage your API keys for accessing opencode services.

-
- - setKeyName(e.currentTarget.value)} - onKeyPress={(e) => e.key === "Enter" && handleCreateKey()} - /> -
- - -
-
- } - > - - -
- + {/* Actor Section */} +
+
+

Actor

+

Current authenticated user information and session details.

+
+
{JSON.stringify(actor())}
+
+ + {/* API Keys Section */} +
+
+

API Keys

+

Manage your API keys for accessing opencode services.

+
+ -

Create an API key to access opencode gateway

+
+ setKeyName(e.currentTarget.value)} + onKeyPress={(e) => e.key === "Enter" && handleCreateKey()} + /> +
+ + +
} > - {(key) => ( -
-
-
{key.name}
-
{formatKey(key.key)}
-
- Created: {formatDate(key.timeCreated)} - {key.timeUsed && ` • Last used: ${formatDate(key.timeUsed)}`} + + +
+ +

Create an API key to access opencode gateway

+
+ } + > + {(key) => ( +
+
+
{key.name}
+
{formatKey(key.key)}
+
+ Created: {formatDate(key.timeCreated)} + {key.timeUsed && ` • Last used: ${formatDate(key.timeUsed)}`} +
+
+
+ +
-
- - + )} + +
+
+ + {/* Balance Section */} +
+
+

Balance

+

Manage your billing and add credits to your account.

+
+
+

+ {(() => { + const balanceStr = ((billingInfo()?.billing?.balance ?? 0) / 100000000).toFixed(2) + return `$${balanceStr === "-0.00" ? "0.00" : balanceStr}` + })()} +

+ +
+
+ + {/* Payments Section */} + 0}> +
+
+

Payments History

+

Your recent payment transactions.

+
+
+ + {(payment) => ( +
+ {payment.id} + {" | "} + ${((payment.amount ?? 0) / 100000000).toFixed(2)} + {" | "} + {new Date(payment.timeCreated).toLocaleDateString()} +
+ )} +
+
+
+
+ + {/* Usage Section */} +
+
+

Usage History

+

Your recent API usage and costs.

+
+
+ 0} + fallback={ +
+

Make your first API call to get started.

-
- )} - -
- - - {/* Balance Section */} -
-
-

Balance

-

Manage your billing and add credits to your account.

-
-
-

- {(() => { - const balanceStr = ((billingInfo()?.billing?.balance ?? 0) / 100000000).toFixed(2) - return `$${balanceStr === "-0.00" ? "0.00" : balanceStr}` - })()} -

- -
-
- - {/* Payments Section */} -
-
-

Payments History

-

Your recent payment transactions.

-
-
- -

No payment history yet. Your payments will appear here after your first purchase.

-
- } - > - {(payment) => ( -
- {payment.id} - {" | "} - ${((payment.amount ?? 0) / 100000000).toFixed(2)} - {" | "} - {new Date(payment.timeCreated).toLocaleDateString()} -
- )} - - -
- - {/* Usage Section */} -
-
-

Usage History

-

Your recent API usage and costs.

-
-
- -

No API usage yet. Your usage history will appear here after your first API calls.

-
- } - > - {(usage) => ( -
- {usage.model} - {" | "} - {usage.inputTokens + usage.outputTokens} tokens - {" | "} - ${((usage.cost ?? 0) / 100000000).toFixed(4)} - {" | "} - {new Date(usage.timeCreated).toLocaleDateString()} -
- )} - - -
+ } + > + + + + + + + + + + + + {(usage) => { + const totalTokens = usage.inputTokens + usage.outputTokens + (usage.reasoningTokens || 0) + const date = new Date(usage.timeCreated) + return ( + + + + + + + ) + }} + + +
DateModelTokensCost
+ {formatDateForTable(date)} + {usage.model}{totalTokens.toLocaleString()}${((usage.cost ?? 0) / 100000000).toFixed(4)}
+ + + + ) } diff --git a/cloud/app/src/routes/workspace/index.css b/cloud/app/src/routes/workspace/index.css index 81bdff5b74..90ef8ccaf6 100644 --- a/cloud/app/src/routes/workspace/index.css +++ b/cloud/app/src/routes/workspace/index.css @@ -1,217 +1,31 @@ /* Root container */ [data-slot="root"] { max-width: 64rem; + padding: var(--space-10) var(--space-4); margin: 0 auto; width: 100%; display: flex; flex-direction: column; - gap: var(--space-6); -} + gap: var(--space-10); -/* Adjust header spacing */ -[data-component="workspace-header"] + div { - margin-top: var(--space-2); -} - -/* Section titles */ -[data-slot="section-title"] { - display: flex; - flex-direction: column; - gap: var(--space-0-5); -} - -[data-slot="section-title"] h1 { - font-size: var(--font-size-lg); - font-weight: 500; - line-height: 1.2; - letter-spacing: -0.03125rem; - margin: 0; - color: var(--color-text-secondary); - text-transform: uppercase; - - @media (max-width: 30rem) { - font-size: var(--font-size-lg); - line-height: 1.25; - } -} - -[data-slot="section-title"] p { - font-size: var(--font-size-sm); - color: var(--color-text-muted); -} - -/* Section descriptions */ -p { - margin: 0; - color: var(--color-text-secondary); - font-size: var(--font-size-md); - line-height: 1.5; -} - -/* Section containers */ -section { - display: flex; - flex-direction: column; - gap: var(--space-6); -} - -/* API Keys Section */ -[data-slot="create-form"] { - display: flex; - flex-direction: column; - gap: var(--space-3); - padding: var(--space-4); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--border-radius-sm); - max-width: 32rem; - - input { - padding: var(--space-2) var(--space-3); - border: 1px solid var(--color-border); - border-radius: var(--border-radius-sm); - background-color: var(--color-bg); - color: var(--color-text); - font-size: var(--font-size-sm); - font-family: var(--font-mono); - - &:focus { - outline: none; - border-color: var(--color-accent); - } - - &::placeholder { - color: var(--color-text-disabled); - } - } - - [data-slot="form-actions"] { + [data-slot="sections"] { display: flex; - gap: var(--space-2); - justify-content: flex-end; - } -} - -[data-slot="key-list"], -[data-slot="payments-list"], -[data-slot="usage-list"] { - display: flex; - flex-direction: column; - gap: var(--space-2); -} - -[data-slot="key-item"] { - display: flex; - justify-content: space-between; - align-items: flex-start; - padding: var(--space-4); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--border-radius-sm); - gap: var(--space-4); - - @media (max-width: 30rem) { flex-direction: column; - gap: var(--space-3); + gap: var(--space-16); + + section { + display: flex; + flex-direction: column; + gap: var(--space-6); + } + section:not(:last-child) { + border-bottom: 1px solid var(--color-border); + padding-bottom: var(--space-16); + } } } -[data-slot="key-info"] { - display: flex; - flex-direction: column; - gap: var(--space-1); - flex: 1; -} - -[data-slot="key-name"] { - font-size: var(--font-size-md); - font-weight: 500; - color: var(--color-text); -} - -[data-slot="key-value"] { - font-size: var(--font-size-xs); - font-family: var(--font-mono); - color: var(--color-text-secondary); - background-color: var(--color-bg); - padding: var(--space-1) var(--space-2); - border-radius: var(--border-radius-sm); - border: 1px solid var(--color-border-muted); -} - -[data-slot="key-meta"] { - font-size: var(--font-size-xs); - color: var(--color-text-disabled); -} - -[data-slot="key-actions"] { - display: flex; - gap: var(--space-2); -} - -[data-slot="empty-state"] { - padding: var(--space-8); - text-align: center; - border: 1px dashed var(--color-border); - border-radius: var(--border-radius-sm); - - p { - margin: 0; - font-size: var(--font-size-sm); - color: var(--color-text-muted); - } -} - -/* Balance Section */ -[data-slot="balance"] { - display: flex; - flex-direction: column; - gap: var(--space-3); - padding: var(--space-4); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--border-radius-sm); - max-width: 32rem; - - p { - font-size: var(--font-size-2xl); - font-weight: 500; - color: var(--color-text); - margin: 0; - } -} - -/* Payment and Usage Items */ -[data-slot="payment-item"], -[data-slot="usage-item"] { - display: flex; - align-items: center; - gap: var(--space-4); - padding: var(--space-3); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--border-radius-sm); - font-size: var(--font-size-sm); - font-family: var(--font-mono); - - @media (max-width: 30rem) { - flex-direction: column; - align-items: flex-start; - gap: var(--space-2); - } -} - -[data-slot="payment-id"], -[data-slot="payment-amount"], -[data-slot="payment-date"], -[data-slot="usage-model"], -[data-slot="usage-tokens"], -[data-slot="usage-cost"], -[data-slot="usage-date"] { - color: var(--color-text-muted); -} - -/* Buttons */ +/* Common elements */ button { padding: var(--space-2) var(--space-4); border: 1px solid var(--color-border); @@ -266,3 +80,305 @@ button { } } } + +a { + color: var(--color-text); + text-decoration: underline; + text-underline-offset: var(--space-0-75); + text-decoration-thickness: 1px; +} + +[data-slot="empty-state"] { + padding: var(--space-20) var(--space-6); + text-align: center; + border: 1px dashed var(--color-border); + border-radius: var(--border-radius-sm); + display: flex; + flex-direction: column; + gap: var(--space-2); + + p { + font-size: var(--font-size-sm); + color: var(--color-text-muted); + margin: 0; + } +} + +/* Title section */ +[data-slot="title-section"] { + display: flex; + flex-direction: column; + gap: var(--space-2); + padding-bottom: var(--space-8); + border-bottom: 1px solid var(--color-border); + + h1 { + font-size: var(--font-size-2xl); + font-weight: 500; + line-height: 1.2; + letter-spacing: -0.03125rem; + margin: 0; + text-transform: uppercase; + + @media (max-width: 30rem) { + font-size: var(--font-size-xl); + line-height: 1.25; + } + } + + p { + font-size: var(--font-size-md); + color: var(--color-text-muted); + + a { + color: var(--color-text-muted); + } + } +} + +/* Section titles */ +[data-slot="section-title"] { + display: flex; + flex-direction: column; + gap: var(--space-1); + + h2 { + font-size: var(--font-size-md); + font-weight: 600; + line-height: 1.2; + letter-spacing: -0.03125rem; + margin: 0; + color: var(--color-text-secondary); + text-transform: uppercase; + + @media (max-width: 30rem) { + font-size: var(--font-size-lg); + line-height: 1.25; + } + } + + p { + font-size: var(--font-size-sm); + color: var(--color-text-muted); + } +} + +/* API Keys Section */ +[data-slot="api-keys-section"] { + [data-slot="create-form"] { + display: flex; + flex-direction: column; + gap: var(--space-3); + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--border-radius-sm); + max-width: 32rem; + + input { + padding: var(--space-2) var(--space-3); + border: 1px solid var(--color-border); + border-radius: var(--border-radius-sm); + background-color: var(--color-bg); + color: var(--color-text); + font-size: var(--font-size-sm); + font-family: var(--font-mono); + + &:focus { + outline: none; + border-color: var(--color-accent); + } + + &::placeholder { + color: var(--color-text-disabled); + } + } + + [data-slot="form-actions"] { + display: flex; + gap: var(--space-2); + justify-content: flex-end; + } + } + + [data-slot="key-list"] { + display: flex; + flex-direction: column; + gap: var(--space-2); + } + + [data-slot="key-item"] { + display: flex; + justify-content: space-between; + align-items: flex-start; + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--border-radius-sm); + gap: var(--space-4); + + @media (max-width: 30rem) { + flex-direction: column; + gap: var(--space-3); + } + } + + [data-slot="key-info"] { + display: flex; + flex-direction: column; + gap: var(--space-1); + flex: 1; + } + + [data-slot="key-name"] { + font-size: var(--font-size-md); + font-weight: 500; + color: var(--color-text); + } + + [data-slot="key-value"] { + font-size: var(--font-size-xs); + font-family: var(--font-mono); + color: var(--color-text-secondary); + background-color: var(--color-bg); + padding: var(--space-1) var(--space-2); + border-radius: var(--border-radius-sm); + border: 1px solid var(--color-border-muted); + } + + [data-slot="key-meta"] { + font-size: var(--font-size-xs); + color: var(--color-text-disabled); + } + + [data-slot="key-actions"] { + display: flex; + gap: var(--space-2); + } +} + +/* Balance Section */ +[data-slot="balance-section"] { + [data-slot="balance"] { + display: flex; + flex-direction: column; + gap: var(--space-3); + padding: var(--space-4); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--border-radius-sm); + max-width: 32rem; + + p { + font-size: var(--font-size-2xl); + font-weight: 500; + color: var(--color-text); + } + } +} + +/* Payments Section */ +[data-slot="payments-section"] { + [data-slot="payments-list"] { + display: flex; + flex-direction: column; + gap: var(--space-2); + } + + [data-slot="payment-item"] { + display: flex; + align-items: center; + gap: var(--space-4); + padding: var(--space-3); + background-color: var(--color-bg-surface); + border: 1px solid var(--color-border); + border-radius: var(--border-radius-sm); + font-size: var(--font-size-sm); + font-family: var(--font-mono); + + @media (max-width: 30rem) { + flex-direction: column; + align-items: flex-start; + gap: var(--space-2); + } + } + + [data-slot="payment-id"], + [data-slot="payment-amount"], + [data-slot="payment-date"] { + color: var(--color-text-muted); + } +} + +/* Usage Section */ +[data-slot="usage-section"] { + [data-slot="usage-table"] { + overflow-x: auto; + } + + [data-slot="usage-table-element"] { + width: 100%; + border-collapse: collapse; + font-size: var(--font-size-sm); + + thead { + border-bottom: 1px solid var(--color-border); + } + + th { + padding: var(--space-3) var(--space-4); + text-align: left; + font-weight: 600; + color: var(--color-text-secondary); + } + + td { + padding: var(--space-3) var(--space-4); + border-bottom: 1px solid var(--color-border-muted); + color: var(--color-text-muted); + font-family: var(--font-mono); + + &[data-slot="usage-date"] { + color: var(--color-text); + } + + &[data-slot="usage-model"] { + font-family: var(--font-sans); + font-weight: 400; + color: var(--color-text-secondary); + max-width: 200px; + word-break: break-word; + } + + &[data-slot="usage-cost"] { + color: var(--color-text); + } + } + + tbody tr { + &:last-child td { + border-bottom: none; + } + } + + @media (max-width: 40rem) { + th, + td { + padding: var(--space-2) var(--space-3); + font-size: var(--font-size-xs); + } + + th { + &:nth-child(2) /* Model */ { + display: none; + } + } + + td { + &:nth-child(2) /* Model */ { + display: none; + } + } + } + } +} diff --git a/cloud/app/src/routes/workspace/workspace.css b/cloud/app/src/routes/workspace/workspace.css index f4a8b2af25..3390fbea68 100644 --- a/cloud/app/src/routes/workspace/workspace.css +++ b/cloud/app/src/routes/workspace/workspace.css @@ -1,9 +1,5 @@ [data-page="workspace"] { - display: flex; - flex-direction: column; - gap: var(--space-6); line-height: 1; - padding: var(--space-6); @media (max-width: 30rem) { padding: var(--space-4); @@ -19,8 +15,6 @@ justify-content: space-between; align-items: center; padding: var(--space-4) var(--space-4); - margin: calc(-1 * var(--space-6)); - margin-bottom: var(--space-6); border-bottom: 1px solid var(--color-border); background-color: var(--color-bg); From 058163333d7867b47626a11464f26b3e3556f29d Mon Sep 17 00:00:00 2001 From: Jay V Date: Fri, 29 Aug 2025 17:57:59 -0400 Subject: [PATCH 093/112] ignore: cloud payment history --- cloud/app/src/routes/workspace/[id].tsx | 76 ++++++++++++++++----- cloud/app/src/routes/workspace/index.css | 84 +++++++++++++++++------- 2 files changed, 122 insertions(+), 38 deletions(-) diff --git a/cloud/app/src/routes/workspace/[id].tsx b/cloud/app/src/routes/workspace/[id].tsx index 6000228dc2..8e6a0ee65a 100644 --- a/cloud/app/src/routes/workspace/[id].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -102,7 +102,35 @@ const dummyUsageData = [ }, ] -export default function() { +const dummyPaymentData = [ + { + id: "pay_1Ab2Cd3Ef4Gh5678", + amount: 2000000000, + timeCreated: new Date("2025-01-28T14:32:00Z"), + }, + { + id: "pay_9Ij8Kl7Mn6Op5432", + amount: 1000000000, + timeCreated: new Date("2025-01-25T09:18:00Z"), + }, + { + id: "pay_5Qr4St3Uv2Wx1098", + amount: 5000000000, + timeCreated: new Date("2025-01-20T16:45:00Z"), + }, + { + id: "pay_7Yz6Ab5Cd4Ef3210", + amount: 1500000000, + timeCreated: new Date("2025-01-15T11:22:00Z"), + }, + { + id: "pay_3Gh2Ij1Kl0Mn9876", + amount: 3000000000, + timeCreated: new Date("2025-01-10T13:55:00Z"), + }, +] + +export default function () { const actor = createAsync(() => getActor()) onMount(() => { console.log("MOUNTED", actor()) @@ -354,24 +382,40 @@ export default function() { {/* Payments Section */} - 0}> + 0}> + {/* Real data condition: billingInfo() && billingInfo()!.payments.length > 0 */}

Payments History

-

Your recent payment transactions.

+

Recent payment transactions.

-
- - {(payment) => ( -
- {payment.id} - {" | "} - ${((payment.amount ?? 0) / 100000000).toFixed(2)} - {" | "} - {new Date(payment.timeCreated).toLocaleDateString()} -
- )} -
+
+ + + + + + + + + + + {/* Real data: billingInfo()?.payments */} + {(payment) => { + const date = new Date(payment.timeCreated) + return ( + + + + + + ) + }} + + +
DatePayment IDAmount
+ {formatDateForTable(date)} + {payment.id}${((payment.amount ?? 0) / 100000000).toFixed(2)}
@@ -380,7 +424,7 @@ export default function() {

Usage History

-

Your recent API usage and costs.

+

Recent API usage and costs.

Date: Fri, 29 Aug 2025 19:20:12 -0400 Subject: [PATCH 094/112] ignore: cloud balance section --- cloud/app/src/routes/workspace/[id].tsx | 27 +++++++++++----- cloud/app/src/routes/workspace/index.css | 40 +++++++++++++++++++----- 2 files changed, 52 insertions(+), 15 deletions(-) diff --git a/cloud/app/src/routes/workspace/[id].tsx b/cloud/app/src/routes/workspace/[id].tsx index 8e6a0ee65a..e3eac121b6 100644 --- a/cloud/app/src/routes/workspace/[id].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -130,7 +130,7 @@ const dummyPaymentData = [ }, ] -export default function () { +export default function() { const actor = createAsync(() => getActor()) onMount(() => { console.log("MOUNTED", actor()) @@ -366,15 +366,26 @@ export default function () {

Balance

-

Manage your billing and add credits to your account.

+

Add credits to your account.

-

- {(() => { - const balanceStr = ((billingInfo()?.billing?.balance ?? 0) / 100000000).toFixed(2) - return `$${balanceStr === "-0.00" ? "0.00" : balanceStr}` - })()} -

+
{ + const balanceStr = ((billingInfo()?.billing?.balance ?? 0) / 100000000).toFixed(2) + return balanceStr === "0.00" || balanceStr === "-0.00" + })(), + }} + > + $ + + {(() => { + const balanceStr = ((billingInfo()?.billing?.balance ?? 0) / 100000000).toFixed(2) + return balanceStr === "-0.00" ? "0.00" : balanceStr + })()} + +
diff --git a/cloud/app/src/routes/workspace/index.css b/cloud/app/src/routes/workspace/index.css index 6746313e38..0d04ea25bf 100644 --- a/cloud/app/src/routes/workspace/index.css +++ b/cloud/app/src/routes/workspace/index.css @@ -27,13 +27,15 @@ /* Common elements */ button { - padding: var(--space-2) var(--space-4); + padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border); border-radius: var(--border-radius-sm); background-color: var(--color-bg); color: var(--color-text); font-size: var(--font-size-sm); font-family: var(--font-sans); + font-weight: 500; + text-transform: uppercase; cursor: pointer; transition: all 0.15s ease; @@ -264,15 +266,39 @@ a { flex-direction: column; gap: var(--space-3); padding: var(--space-4); - background-color: var(--color-bg-surface); border: 1px solid var(--color-border); border-radius: var(--border-radius-sm); - max-width: 32rem; + min-width: 14.5rem; + width: fit-content; - p { - font-size: var(--font-size-2xl); - font-weight: 500; - color: var(--color-text); + [data-slot="amount"] { + padding: var(--space-3-5) var(--space-4); + background-color: var(--color-bg-surface); + border-radius: var(--border-radius-sm); + display: flex; + align-items: baseline; + gap: var(--space-1); + justify-content: flex-end; + + &.danger { + [data-slot="value"] { + color: var(--color-danger); + } + } + + [data-slot="currency"] { + position: relative; + bottom: 2px; + font-size: var(--font-size-lg); + color: var(--color-text-muted); + font-weight: 400; + } + + [data-slot="value"] { + font-size: var(--font-size-3xl); + font-weight: 500; + color: var(--color-text); + } } } } From c3a25eff78635725472096fe2626021ee50f36b0 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 29 Aug 2025 19:34:56 -0400 Subject: [PATCH 095/112] wip: cloud --- bun.lock | 30 ++++++++-------- cloud/app/app.config.ts | 13 +++++++ cloud/app/src/global.d.ts | 1 + cloud/app/src/routes/auth/callback.ts | 3 +- .../src/routes/gateway/v1/chat/completions.ts | 2 +- cloud/app/src/routes/index.tsx | 6 ++-- cloud/app/src/routes/stripe/webhook.ts | 2 +- cloud/core/drizzle.config.ts | 2 +- cloud/core/src/billing.ts | 2 +- cloud/core/src/drizzle/index.ts | 2 +- cloud/core/src/util/resource.ts | 14 ++++++++ cloud/function/src/auth.ts | 6 ++-- cloud/function/src/gateway.ts | 2 +- cloud/function/sst-env.d.ts | 4 +++ infra/cloud.ts | 35 ++++++++----------- package.json | 2 +- packages/function/sst-env.d.ts | 4 +++ sst-env.d.ts | 4 +++ 18 files changed, 83 insertions(+), 51 deletions(-) create mode 100644 cloud/core/src/util/resource.ts diff --git a/bun.lock b/bun.lock index 251e007107..9c136e28c8 100644 --- a/bun.lock +++ b/bun.lock @@ -8,7 +8,7 @@ }, "devDependencies": { "prettier": "3.5.3", - "sst": "3.17.11", + "sst": "3.17.12", }, }, "cloud/app": { @@ -495,7 +495,7 @@ "@hey-api/json-schema-ref-parser": ["@hey-api/json-schema-ref-parser@1.0.6", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0", "lodash": "^4.17.21" } }, "sha512-yktiFZoWPtEW8QKS65eqKwA5MTKp88CyiL8q72WynrBs/73SAaxlSWlA2zW/DZlywZ5hX1OYzrCC0wFdvO9c2w=="], - "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.80.1", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-AC478kg36vmmrseLZNFonZ/cmXXmDzW5yWz4PVg1S8ebJsRtVRJ/QU+mtnXfzf9avN2P0pz/AO4WAe4jyFY2gA=="], + "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="], "@hono/zod-validator": ["@hono/zod-validator@0.4.2", "", { "peerDependencies": { "hono": ">=3.9.0", "zod": "^3.19.1" } }, "sha512-1rrlBg+EpDPhzOV4hT9pxr5+xDVmKuz6YJl+la7VCwK6ass5ldyKm5fD+umJdV2zhHD6jROoCCv8NbTwyfhT0g=="], @@ -1531,7 +1531,7 @@ "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], - "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], "env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], @@ -2675,23 +2675,23 @@ "ssri": ["ssri@10.0.6", "", { "dependencies": { "minipass": "^7.0.3" } }, "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ=="], - "sst": ["sst@3.17.11", "", { "dependencies": { "aws-sdk": "2.1692.0", "aws4fetch": "1.0.18", "jose": "5.2.3", "opencontrol": "0.0.6", "openid-client": "5.6.4" }, "optionalDependencies": { "sst-darwin-arm64": "3.17.11", "sst-darwin-x64": "3.17.11", "sst-linux-arm64": "3.17.11", "sst-linux-x64": "3.17.11", "sst-linux-x86": "3.17.11", "sst-win32-arm64": "3.17.11", "sst-win32-x64": "3.17.11", "sst-win32-x86": "3.17.11" }, "bin": { "sst": "bin/sst.mjs" } }, "sha512-Hwl14L55ZmgAX2ZtBSBoe5BpClSlZ/LNPgB/yqQpX2eaWME5dmW+Qmrm1HHGLft8JD85pJd6P2i7wuFkMrS/qA=="], + "sst": ["sst@3.17.12", "", { "dependencies": { "aws-sdk": "2.1692.0", "aws4fetch": "1.0.18", "jose": "5.2.3", "opencontrol": "0.0.6", "openid-client": "5.6.4" }, "optionalDependencies": { "sst-darwin-arm64": "3.17.12", "sst-darwin-x64": "3.17.12", "sst-linux-arm64": "3.17.12", "sst-linux-x64": "3.17.12", "sst-linux-x86": "3.17.12", "sst-win32-arm64": "3.17.12", "sst-win32-x64": "3.17.12", "sst-win32-x86": "3.17.12" }, "bin": { "sst": "bin/sst.mjs" } }, "sha512-UwUbucNZRLp9GHgPAwkat1sBsNGaJfHsLXZHCMKsolCW7CEuugJfvBl2vOyJrhKP4N+Xnv1QFh0BGsOmN0kQeA=="], - "sst-darwin-arm64": ["sst-darwin-arm64@3.17.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c3A0MIJ+fb2T6gjUvDvt3Pakx9QSqJduO3gb48kVlE0NPApTau16CXzEyyoVKZNFxGFakuGUjFtTJfrfmTiwbA=="], + "sst-darwin-arm64": ["sst-darwin-arm64@3.17.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-9Oky2ZmJoeEN97ALWtFRt3kvSIZLjYoQoOtJvTaNQJTFi/9OsUE/6I5zdedf5GhMKCT1JvY+Ngpv3U3Y6SEYOg=="], - "sst-darwin-x64": ["sst-darwin-x64@3.17.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-ctKPvmN4E52sN23EpTcuDQPXYkic8iY9Piy6b3ie9g1voPxs0h36XrRIckbYq5enSeby2Gk4BeI7OaZlj8B90A=="], + "sst-darwin-x64": ["sst-darwin-x64@3.17.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-n6tWCjFF9Pb+QzxXJmuTGfQ4GW96Nf6ATtb7Wpa+9RDLRHrEBdOjXAp7osr7MB9djPRkt4942nwUZ7wX/EULpg=="], - "sst-linux-arm64": ["sst-linux-arm64@3.17.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-LdXpUDT5A5g6W0YkON15ySwmTDMbhXkbVxCk6YqB4eus5iEL4pniV/qImPsHcl5od2bWbPosjeDFLnGogxwPLA=="], + "sst-linux-arm64": ["sst-linux-arm64@3.17.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-iMflBzQWhF5kmRdXu402dwVpQI9LfFR3yFok3HUTV0ema5Pq2kPphEatEEw1dyG2ZXCBLeKN+T3Ujjfer+ddRA=="], - "sst-linux-x64": ["sst-linux-x64@3.17.11", "", { "os": "linux", "cpu": "x64" }, "sha512-UU7ZK4qlb19Bc6G3Tj8BL0lYhKRBkdVul3gsCHc8D07gjHrDYP1JZcRPteq/Ij7zLlLBzNilwhpBNhDcRqJ2BA=="], + "sst-linux-x64": ["sst-linux-x64@3.17.12", "", { "os": "linux", "cpu": "x64" }, "sha512-89rZXs3IfGrY9yiDNuLfcJvHnAUX1gRVeB+lqQ1M2sbJD2iMpN+fx93owcApAndtZYzYNfQYEZ/xYwI6HFfu4w=="], - "sst-linux-x86": ["sst-linux-x86@3.17.11", "", { "os": "linux", "cpu": "none" }, "sha512-q/Y+trzKVT9pc/kIYkgnISQqv69y/6T6IM1/fBgq3ZWbb9TBpLrW848vFS0PThH23QrcuV1U+2e6a9IgU67LHg=="], + "sst-linux-x86": ["sst-linux-x86@3.17.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zc2nd2syaq/DfNxtDcn4NOh8RBCaCZ1qsjLFpvGGfMMRnGiWjofuE6eFX3fhchGL3uvaqwlENvtzj4UC/MF5wQ=="], - "sst-win32-arm64": ["sst-win32-arm64@3.17.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-lTIepV7/0GqUTbpTIAYs3KZegRzvb+xYEwkJwEFL7eCKKUGnrGPo13858PHeKmYdGRWa4tbeOsviRYaoXrWCDw=="], + "sst-win32-arm64": ["sst-win32-arm64@3.17.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-Bb7M6PoImmGeyzJu75QbNHBs0mDp21DsKFyMucn2dwxYwahuFPjjMbG+tlziWtxcNgdZMdEcy9jR8ot1jAIh0Q=="], - "sst-win32-x64": ["sst-win32-x64@3.17.11", "", { "os": "win32", "cpu": "x64" }, "sha512-CLZTwqRDUGWShaR02Nd1VMGG9G/a50NY0rjh/WopaTFj2SoEot/vZil4LkVWqma4rOdNX+ABJ4//O92VQSHkQQ=="], + "sst-win32-x64": ["sst-win32-x64@3.17.12", "", { "os": "win32", "cpu": "x64" }, "sha512-7f41o1WhxdcuLhHijoavkX5O3L/Pnma6zCoL3kG6f9Njc6Zyj8Oha2fQz6Tesb/Qt8deG04WU4bL3FmxgNHU6g=="], - "sst-win32-x86": ["sst-win32-x86@3.17.11", "", { "os": "win32", "cpu": "none" }, "sha512-KQKeU/6m7AUu9LFg71wMn6612aY+ZHwmUsTRdGPOt6zDr1oGJAFUy8lXtbqx6txpdKgDzixHDT6aLXvnf9DR0Q=="], + "sst-win32-x86": ["sst-win32-x86@3.17.12", "", { "os": "win32", "cpu": "none" }, "sha512-AfsNJQMTlefHitaVRWh5Uf3AaICIaomFbSo5qDbibgkvhbppCxgMFpW0IxiWySjWrCN5hMMkxdxlZP9IHqqxjQ=="], "stack-trace": ["stack-trace@0.0.10", "", {}, "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg=="], @@ -3117,8 +3117,6 @@ "@openauthjs/solid/@openauthjs/openauth": ["@openauthjs/openauth@0.4.2", "", { "dependencies": { "@standard-schema/spec": "1.0.0-beta.3", "aws4fetch": "1.0.20", "jose": "5.9.6" }, "peerDependencies": { "arctic": "^2.2.2", "hono": "^4.0.0" } }, "sha512-8+Bia559iffrZXfQ0LWXrVVVriochS88pDtB8indyQ1S+40MQgDBu8aBzKt+fgSrTmoQGCTT+wlOXgbjc9qIcw=="], - "@opencode-ai/sdk/@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="], - "@opentelemetry/instrumentation-grpc/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], "@oslojs/jwt/@oslojs/encoding": ["@oslojs/encoding@0.4.1", "", {}, "sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q=="], @@ -3161,8 +3159,6 @@ "@vinxi/server-components/magicast": ["magicast@0.2.11", "", { "dependencies": { "@babel/parser": "^7.22.16", "@babel/types": "^7.22.17", "recast": "^0.23.4" } }, "sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g=="], - "@vue/compiler-core/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], - "@vue/compiler-core/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], @@ -3309,6 +3305,8 @@ "parse-json/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], + "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], + "path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], "pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], diff --git a/cloud/app/app.config.ts b/cloud/app/app.config.ts index 0ffa557f90..4dd799edc4 100644 --- a/cloud/app/app.config.ts +++ b/cloud/app/app.config.ts @@ -5,5 +5,18 @@ export default defineConfig({ server: { allowedHosts: true, }, + build: { + rollupOptions: { + external: ["cloudflare:workers"], + }, + minify: false, + }, + }, + server: { + compatibilityDate: "2024-09-19", + preset: "cloudflare_module", + cloudflare: { + nodeCompat: true, + }, }, }) diff --git a/cloud/app/src/global.d.ts b/cloud/app/src/global.d.ts index dc6f10c226..a44606d2e4 100644 --- a/cloud/app/src/global.d.ts +++ b/cloud/app/src/global.d.ts @@ -1 +1,2 @@ /// +declare module "cloudflare:workers" diff --git a/cloud/app/src/routes/auth/callback.ts b/cloud/app/src/routes/auth/callback.ts index edeb357908..4e38df07e5 100644 --- a/cloud/app/src/routes/auth/callback.ts +++ b/cloud/app/src/routes/auth/callback.ts @@ -1,6 +1,7 @@ import { redirect } from "@solidjs/router" import type { APIEvent } from "@solidjs/start/server" -import { AuthClient, useAuthSession } from "~/context/auth" +import { AuthClient } from "~/context/auth" +import { useAuthSession } from "~/context/auth.session" export async function GET(input: APIEvent) { const url = new URL(input.request.url) diff --git a/cloud/app/src/routes/gateway/v1/chat/completions.ts b/cloud/app/src/routes/gateway/v1/chat/completions.ts index f69feade1d..95c2c268d3 100644 --- a/cloud/app/src/routes/gateway/v1/chat/completions.ts +++ b/cloud/app/src/routes/gateway/v1/chat/completions.ts @@ -1,4 +1,4 @@ -import { Resource } from "sst" +import { Resource } from "@opencode/cloud-core/util/resource.js" import { Billing } from "@opencode/cloud-core/billing.js" import type { APIEvent } from "@solidjs/start/server" import { Database, eq, sql } from "@opencode/cloud-core/drizzle/index.js" diff --git a/cloud/app/src/routes/index.tsx b/cloud/app/src/routes/index.tsx index b9344bc558..5a4e07978a 100644 --- a/cloud/app/src/routes/index.tsx +++ b/cloud/app/src/routes/index.tsx @@ -31,8 +31,6 @@ const isLoggedIn = query(async () => { return false }, "isLoggedIn") - - export default function Home() { createAsync(() => isLoggedIn(), { deferStream: true, @@ -83,7 +81,9 @@ export default function Home() {
diff --git a/cloud/app/src/routes/stripe/webhook.ts b/cloud/app/src/routes/stripe/webhook.ts index 258ebe4130..29f0f24843 100644 --- a/cloud/app/src/routes/stripe/webhook.ts +++ b/cloud/app/src/routes/stripe/webhook.ts @@ -1,4 +1,3 @@ -import { Resource } from "sst" import { Billing } from "@opencode/cloud-core/billing.js" import type { APIEvent } from "@solidjs/start/server" import { Database, eq, sql } from "@opencode/cloud-core/drizzle/index.js" @@ -6,6 +5,7 @@ import { BillingTable, PaymentTable } from "@opencode/cloud-core/schema/billing. import { Identifier } from "@opencode/cloud-core/identifier.js" import { centsToMicroCents } from "@opencode/cloud-core/util/price.js" import { Actor } from "@opencode/cloud-core/actor.js" +import { Resource } from "@opencode/cloud-core/util/resource.js" export async function POST(input: APIEvent) { const body = await Billing.stripe().webhooks.constructEventAsync( diff --git a/cloud/core/drizzle.config.ts b/cloud/core/drizzle.config.ts index c65363cb88..82c487834e 100644 --- a/cloud/core/drizzle.config.ts +++ b/cloud/core/drizzle.config.ts @@ -1,5 +1,5 @@ import { defineConfig } from "drizzle-kit" -import { Resource } from "sst" +import { Resource } from "./src/util/resource" export default defineConfig({ out: "./migrations/", diff --git a/cloud/core/src/billing.ts b/cloud/core/src/billing.ts index 94ba23b832..705999c265 100644 --- a/cloud/core/src/billing.ts +++ b/cloud/core/src/billing.ts @@ -1,4 +1,3 @@ -import { Resource } from "sst" import { Stripe } from "stripe" import { Database, eq, sql } from "./drizzle" import { BillingTable, PaymentTable, UsageTable } from "./schema/billing.sql" @@ -8,6 +7,7 @@ import { z } from "zod" import { Identifier } from "./identifier" import { centsToMicroCents } from "./util/price" import { User } from "./user" +import { Resource } from "./util/resource" export namespace Billing { export const stripe = () => diff --git a/cloud/core/src/drizzle/index.ts b/cloud/core/src/drizzle/index.ts index f35ce0a347..894f578f88 100644 --- a/cloud/core/src/drizzle/index.ts +++ b/cloud/core/src/drizzle/index.ts @@ -1,5 +1,5 @@ import { drizzle } from "drizzle-orm/postgres-js" -import { Resource } from "sst" +import { Resource } from "../util/resource" export * from "drizzle-orm" import postgres from "postgres" diff --git a/cloud/core/src/util/resource.ts b/cloud/core/src/util/resource.ts new file mode 100644 index 0000000000..1543145dcd --- /dev/null +++ b/cloud/core/src/util/resource.ts @@ -0,0 +1,14 @@ +import { env } from "cloudflare:workers"; + +export const Resource = new Proxy( + {}, + { + get(_target, prop: string) { + if (prop in env) { + const value = env[prop]; + return typeof value === "string" ? JSON.parse(value) : value; + } + throw new Error(`"${prop}" is not linked in your sst.config.ts`); + }, + } +) as Record; diff --git a/cloud/function/src/auth.ts b/cloud/function/src/auth.ts index 5d7c852cbb..79d7805de6 100644 --- a/cloud/function/src/auth.ts +++ b/cloud/function/src/auth.ts @@ -1,4 +1,3 @@ -import { Resource } from "sst" import { z } from "zod" import { issuer } from "@openauthjs/openauth" import type { Theme } from "@openauthjs/openauth/ui/theme" @@ -10,6 +9,7 @@ import { CloudflareStorage } from "@openauthjs/openauth/storage/cloudflare" import { Account } from "@opencode/cloud-core/account.js" import { Workspace } from "@opencode/cloud-core/workspace.js" import { Actor } from "@opencode/cloud-core/actor.js" +import { Resource } from "@opencode/cloud-core/util/resource.js" type Env = { AuthStorage: KVNamespace @@ -28,8 +28,8 @@ export const subjects = createSubjects({ const MY_THEME: Theme = { ...THEME_OPENAUTH, - logo: "https://opencode.ai/favicon.svg" -}; + logo: "https://opencode.ai/favicon.svg", +} export default { async fetch(request: Request, env: Env, ctx: ExecutionContext) { diff --git a/cloud/function/src/gateway.ts b/cloud/function/src/gateway.ts index 2f498276f0..c8b39990f1 100644 --- a/cloud/function/src/gateway.ts +++ b/cloud/function/src/gateway.ts @@ -3,7 +3,7 @@ import { Hono, MiddlewareHandler } from "hono" import { cors } from "hono/cors" import { HTTPException } from "hono/http-exception" import { zValidator } from "@hono/zod-validator" -import { Resource } from "sst" +import { Resource } from "@opencode/cloud-core/util/resource.js" import { type ProviderMetadata, type LanguageModelUsage, generateText, streamText } from "ai" import { createAnthropic } from "@ai-sdk/anthropic" import { createOpenAI } from "@ai-sdk/openai" diff --git a/cloud/function/sst-env.d.ts b/cloud/function/sst-env.d.ts index f60ec81a0f..9c4f5cc0d3 100644 --- a/cloud/function/sst-env.d.ts +++ b/cloud/function/sst-env.d.ts @@ -14,6 +14,10 @@ declare module "sst" { "type": "sst.sst.Linkable" "value": string } + "Console": { + "type": "sst.cloudflare.SolidStart" + "url": string + } "DATABASE_PASSWORD": { "type": "sst.sst.Secret" "value": string diff --git a/infra/cloud.ts b/infra/cloud.ts index 13fb27683b..542aef96d3 100644 --- a/infra/cloud.ts +++ b/infra/cloud.ts @@ -1,6 +1,5 @@ import { WebhookEndpoint } from "pulumi-stripe" import { domain } from "./stage" -import { web } from "./app" //////////////// // DATABASE @@ -106,23 +105,9 @@ export const gateway = new sst.cloudflare.Worker("GatewayApi", { // CONSOLE //////////////// -/* -export const console = new sst.cloudflare.x.StaticSite("Console", { +export const console = new sst.cloudflare.x.SolidStart("Console", { domain: `console.${domain}`, - path: "cloud/web", - build: { - command: "bun run build", - output: "dist/client", - }, - environment: { - VITE_DOCS_URL: web.url.apply((url) => url!), - VITE_API_URL: gateway.url.apply((url) => url!), - VITE_AUTH_URL: auth.url.apply((url) => url!), - }, -}) -*/ - -new sst.x.DevCommand("Solid", { + path: "cloud/app", link: [ database, AUTH_API_URL, @@ -132,11 +117,19 @@ new sst.x.DevCommand("Solid", { OPENAI_API_KEY, ZHIPU_API_KEY, ], - dev: { - directory: "cloud/app", - command: "bun dev", - }, environment: { + //VITE_DOCS_URL: web.url.apply((url) => url!), + //VITE_API_URL: gateway.url.apply((url) => url!), VITE_AUTH_URL: auth.url.apply((url) => url!), }, }) + +//new sst.x.DevCommand("Solid", { +// dev: { +// directory: "cloud/app", +// command: "bun dev", +// }, +// environment: { +// VITE_AUTH_URL: auth.url.apply((url) => url!), +// }, +//}) diff --git a/package.json b/package.json index 2ba768078b..a38d1b613c 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ }, "devDependencies": { "prettier": "3.5.3", - "sst": "3.17.11" + "sst": "3.17.12" }, "repository": { "type": "git", diff --git a/packages/function/sst-env.d.ts b/packages/function/sst-env.d.ts index f60ec81a0f..9c4f5cc0d3 100644 --- a/packages/function/sst-env.d.ts +++ b/packages/function/sst-env.d.ts @@ -14,6 +14,10 @@ declare module "sst" { "type": "sst.sst.Linkable" "value": string } + "Console": { + "type": "sst.cloudflare.SolidStart" + "url": string + } "DATABASE_PASSWORD": { "type": "sst.sst.Secret" "value": string diff --git a/sst-env.d.ts b/sst-env.d.ts index 5715d2ea93..8725b45680 100644 --- a/sst-env.d.ts +++ b/sst-env.d.ts @@ -28,6 +28,10 @@ declare module "sst" { "name": string "type": "sst.cloudflare.Bucket" } + "Console": { + "type": "sst.cloudflare.SolidStart" + "url": string + } "DATABASE_PASSWORD": { "type": "sst.sst.Secret" "value": string From 46927ee9a5830eaf8eaf5bf868a84765586b2b1e Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 29 Aug 2025 19:45:17 -0400 Subject: [PATCH 096/112] wip: cloud --- cloud/app/src/routes/workspace/[id].tsx | 30 ++++++++++++++++--------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/cloud/app/src/routes/workspace/[id].tsx b/cloud/app/src/routes/workspace/[id].tsx index e3eac121b6..07f4fc0d06 100644 --- a/cloud/app/src/routes/workspace/[id].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -1,10 +1,12 @@ import { Billing } from "@opencode/cloud-core/billing.js" import { Key } from "@opencode/cloud-core/key.js" -import { action, createAsync, revalidate, query, useAction, useSubmission } from "@solidjs/router" +import { action, createAsync, revalidate, query, useAction, useSubmission, json } from "@solidjs/router" import { createEffect, createSignal, For, onMount, Show } from "solid-js" import { getActor } from "~/context/auth" import { withActor } from "~/context/auth.withActor" import "./index.css" +import { User } from "@opencode/cloud-core/user.js" +import { Actor } from "@opencode/cloud-core/actor.js" ///////////////////////////////////// // Keys related queries and actions @@ -17,12 +19,18 @@ const listKeys = query(async () => { const createKey = action(async (name: string) => { "use server" - return withActor(() => Key.create({ name })) + return json( + withActor(() => Key.create({ name })), + { revalidate: "keys" }, + ) }, "createKey") const removeKey = action(async (id: string) => { "use server" - return withActor(() => Key.remove({ id })) + return json( + withActor(() => Key.remove({ id })), + { revalidate: "keys" }, + ) }, "removeKey") ///////////////////////////////////// @@ -32,10 +40,14 @@ const removeKey = action(async (id: string) => { const getBillingInfo = query(async () => { "use server" return withActor(async () => { - const billing = await Billing.get() - const payments = await Billing.payments() - const usage = await Billing.usages() - return { billing, payments, usage } + const actor = Actor.assert("user") + const [user, billing, payments, usage] = await Promise.all([ + User.fromID(actor.properties.userID), + Billing.get(), + Billing.payments(), + Billing.usages(), + ]) + return { user, billing, payments, usage } }) }, "billingInfo") @@ -130,7 +142,7 @@ const dummyPaymentData = [ }, ] -export default function() { +export default function () { const actor = createAsync(() => getActor()) onMount(() => { console.log("MOUNTED", actor()) @@ -194,7 +206,6 @@ export default function() { try { await createKeyAction(keyName().trim()) - revalidate("keys") setKeyName("") setShowCreateForm(false) } catch (error) { @@ -209,7 +220,6 @@ export default function() { try { await removeKeyAction(keyId) - revalidate("keys") } catch (error) { console.error("Failed to delete API key:", error) } From 25e53e090bec1f92fb6b2bbec52f7d1993836972 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Fri, 29 Aug 2025 19:56:14 -0400 Subject: [PATCH 097/112] ignore: create key for new workspace --- cloud/app/src/routes/auth/logout.ts | 7 +++++++ cloud/core/src/workspace.ts | 10 ++++++++++ 2 files changed, 17 insertions(+) create mode 100644 cloud/app/src/routes/auth/logout.ts diff --git a/cloud/app/src/routes/auth/logout.ts b/cloud/app/src/routes/auth/logout.ts new file mode 100644 index 0000000000..166466ef85 --- /dev/null +++ b/cloud/app/src/routes/auth/logout.ts @@ -0,0 +1,7 @@ +import type { APIEvent } from "@solidjs/start/server" +import { AuthClient } from "~/context/auth" + +export async function GET(input: APIEvent) { + const result = await AuthClient.authorize(new URL("./callback", input.request.url).toString(), "code") + return Response.redirect(result.url, 302) +} diff --git a/cloud/core/src/workspace.ts b/cloud/core/src/workspace.ts index 532b22963e..8646362a2b 100644 --- a/cloud/core/src/workspace.ts +++ b/cloud/core/src/workspace.ts @@ -7,6 +7,7 @@ import { Identifier } from "./identifier" import { UserTable } from "./schema/user.sql" import { BillingTable } from "./schema/billing.sql" import { WorkspaceTable } from "./schema/workspace.sql" +import { Key } from "./key" export namespace Workspace { export const create = fn(z.void(), async () => { @@ -28,6 +29,15 @@ export namespace Workspace { balance: centsToMicroCents(100), }) }) + await Actor.provide( + "system", + { + workspaceID, + }, + async () => { + await Key.create({ name: "Default API Key" }) + }, + ) return workspaceID }) From 9a330b4f0f5a24a26e859c7a56daeedb397c3c67 Mon Sep 17 00:00:00 2001 From: Jay V Date: Fri, 29 Aug 2025 20:04:57 -0400 Subject: [PATCH 098/112] ignore: cloud keys section --- cloud/app/src/routes/workspace/[id].tsx | 111 ++++++++++++++------ cloud/app/src/routes/workspace/index.css | 123 ++++++++++++++--------- 2 files changed, 158 insertions(+), 76 deletions(-) diff --git a/cloud/app/src/routes/workspace/[id].tsx b/cloud/app/src/routes/workspace/[id].tsx index 07f4fc0d06..cf6c0bdd2b 100644 --- a/cloud/app/src/routes/workspace/[id].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -4,6 +4,7 @@ import { action, createAsync, revalidate, query, useAction, useSubmission, json import { createEffect, createSignal, For, onMount, Show } from "solid-js" import { getActor } from "~/context/auth" import { withActor } from "~/context/auth.withActor" +import { IconCopy, IconCheck } from "~/component/icon" import "./index.css" import { User } from "@opencode/cloud-core/user.js" import { Actor } from "@opencode/cloud-core/actor.js" @@ -142,7 +143,31 @@ const dummyPaymentData = [ }, ] -export default function () { +const dummyApiKeyData = [ + { + id: "key_1Ab2Cd3Ef4Gh5678", + name: "Production API", + key: "oc_live_sk_1Ab2Cd3Ef4Gh567890123456789012345678901234567890", + timeCreated: new Date("2025-01-28T14:32:00Z"), + timeUsed: new Date("2025-01-29T09:15:00Z"), + }, + { + id: "key_9Ij8Kl7Mn6Op5432", + name: "Development Key", + key: "oc_test_sk_9Ij8Kl7Mn6Op543210987654321098765432109876543210", + timeCreated: new Date("2025-01-25T09:18:00Z"), + timeUsed: null, + }, + { + id: "key_5Qr4St3Uv2Wx1098", + name: "CI/CD Pipeline", + key: "oc_live_sk_5Qr4St3Uv2Wx109876543210987654321098765432109876", + timeCreated: new Date("2025-01-20T16:45:00Z"), + timeUsed: new Date("2025-01-28T12:30:00Z"), + }, +] + +export default function() { const actor = createAsync(() => getActor()) onMount(() => { console.log("MOUNTED", actor()) @@ -157,6 +182,7 @@ export default function () { const createKeySubmission = useSubmission(createKey) const [showCreateForm, setShowCreateForm] = createSignal(false) const [keyName, setKeyName] = createSignal("") + const [copiedKeyId, setCopiedKeyId] = createSignal(null) const formatDate = (date: Date) => { return date.toLocaleDateString() @@ -201,6 +227,16 @@ export default function () { } } + const copyKeyToClipboard = async (text: string, keyId: string) => { + try { + await navigator.clipboard.writeText(text) + setCopiedKeyId(keyId) + setTimeout(() => setCopiedKeyId(null), 1500) + } catch (error) { + console.error("Failed to copy to clipboard:", error) + } + } + const handleCreateKey = async () => { if (!keyName().trim()) return @@ -214,7 +250,7 @@ export default function () { } const handleDeleteKey = async (keyId: string) => { - if (!confirm("Are you sure you want to delete this API key? This action cannot be undone.")) { + if (!confirm("Are you sure you want to delete this API key?")) { return } @@ -291,7 +327,7 @@ export default function () {
{/* API Keys Section */} -
+

API Keys

Manage your API keys for accessing opencode services.

@@ -339,36 +375,55 @@ export default function () { Create API Key -
- + 0} fallback={
-

Create an API key to access opencode gateway

+

Create an opencode Gateway API key

} > - {(key) => ( -
-
-
{key.name}
-
{formatKey(key.key)}
-
- Created: {formatDate(key.timeCreated)} - {key.timeUsed && ` • Last used: ${formatDate(key.timeUsed)}`} -
-
-
- - -
-
- )} -
+ + + + + + + + + + + + {/* Real data: keys() */} + {(key) => ( + + + + + + + )} + + +
NameKeyCreated
{key.name} +
copyKeyToClipboard(key.key, key.id)} title="Click to copy API key"> + {formatKey(key.key)} + } + > + + +
+
+ {formatDateForTable(key.timeCreated)} + + +
+
diff --git a/cloud/app/src/routes/workspace/index.css b/cloud/app/src/routes/workspace/index.css index 0d04ea25bf..887469e337 100644 --- a/cloud/app/src/routes/workspace/index.css +++ b/cloud/app/src/routes/workspace/index.css @@ -203,59 +203,84 @@ a { } } - [data-slot="key-list"] { - display: flex; - flex-direction: column; - gap: var(--space-2); + [data-slot="api-keys-table"] { + overflow-x: auto; } - [data-slot="key-item"] { - display: flex; - justify-content: space-between; - align-items: flex-start; - padding: var(--space-4); - background-color: var(--color-bg-surface); - border: 1px solid var(--color-border); - border-radius: var(--border-radius-sm); - gap: var(--space-4); + [data-slot="api-keys-table-element"] { + width: 100%; + border-collapse: collapse; + font-size: var(--font-size-sm); - @media (max-width: 30rem) { - flex-direction: column; - gap: var(--space-3); + thead { + border-bottom: 1px solid var(--color-border); } - } - [data-slot="key-info"] { - display: flex; - flex-direction: column; - gap: var(--space-1); - flex: 1; - } + th { + padding: var(--space-3) var(--space-4); + text-align: left; + font-weight: normal; + color: var(--color-text-muted); + text-transform: uppercase; + } - [data-slot="key-name"] { - font-size: var(--font-size-md); - font-weight: 500; - color: var(--color-text); - } + td { + padding: var(--space-3) var(--space-4); + border-bottom: 1px solid var(--color-border-muted); + color: var(--color-text-muted); + font-family: var(--font-mono); - [data-slot="key-value"] { - font-size: var(--font-size-xs); - font-family: var(--font-mono); - color: var(--color-text-secondary); - background-color: var(--color-bg); - padding: var(--space-1) var(--space-2); - border-radius: var(--border-radius-sm); - border: 1px solid var(--color-border-muted); - } + &[data-slot="key-name"] { + color: var(--color-text); + font-family: var(--font-sans); + font-weight: 500; + } - [data-slot="key-meta"] { - font-size: var(--font-size-xs); - color: var(--color-text-disabled); - } + &[data-slot="key-value"] { + font-family: var(--font-mono); - [data-slot="key-actions"] { - display: flex; - gap: var(--space-2); + div { + cursor: pointer; + display: flex; + align-items: center; + gap: var(--space-2); + } + } + + &[data-slot="key-date"] { + color: var(--color-text); + } + + &[data-slot="key-actions"] { + font-family: var(--font-sans); + } + } + + tbody tr { + &:last-child td { + border-bottom: none; + } + } + + @media (max-width: 40rem) { + th, + td { + padding: var(--space-2) var(--space-3); + font-size: var(--font-size-xs); + } + + th { + &:nth-child(3) /* Date */ { + display: none; + } + } + + td { + &:nth-child(3) /* Date */ { + display: none; + } + } + } } } @@ -321,8 +346,9 @@ a { th { padding: var(--space-3) var(--space-4); text-align: left; - font-weight: 600; - color: var(--color-text-secondary); + font-weight: normal; + color: var(--color-text-muted); + text-transform: uppercase; } td { @@ -394,8 +420,9 @@ a { th { padding: var(--space-3) var(--space-4); text-align: left; - font-weight: 600; - color: var(--color-text-secondary); + font-weight: normal; + color: var(--color-text-muted); + text-transform: uppercase; } td { From a3f4a030b4f6e94dc11dc3ce93f6f37620982cc6 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Fri, 29 Aug 2025 21:51:06 -0500 Subject: [PATCH 099/112] fix: mcp tool not triggering hooks (#2320) --- packages/opencode/src/session/index.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index a0b3be3c19..4b66cdee37 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -863,11 +863,31 @@ export namespace Session { const execute = item.execute if (!execute) continue item.execute = async (args, opts) => { + await Plugin.trigger( + "tool.execute.before", + { + tool: key, + sessionID: input.sessionID, + callID: opts.toolCallId, + }, + { + args, + }, + ) const result = await execute(args, opts) const output = result.content .filter((x: any) => x.type === "text") .map((x: any) => x.text) .join("\n\n") + await Plugin.trigger( + "tool.execute.after", + { + tool: key, + sessionID: input.sessionID, + callID: opts.toolCallId, + }, + result, + ) return { output, From 0178eab29bda2f1b37a29543cd313ede48ad3977 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 29 Aug 2025 23:02:27 -0400 Subject: [PATCH 100/112] wip cloud --- cloud/app/src/routes/workspace/[id].tsx | 34 +++---------------------- 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/cloud/app/src/routes/workspace/[id].tsx b/cloud/app/src/routes/workspace/[id].tsx index cf6c0bdd2b..65b2a38874 100644 --- a/cloud/app/src/routes/workspace/[id].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -265,44 +265,18 @@ export default function() { // Billing section ///////////////// const billingInfo = createAsync(() => getBillingInfo()) - const [isLoading, setIsLoading] = createSignal(false) const createCheckoutUrlAction = useAction(createCheckoutUrl) - - // Run once on component mount to check URL parameters - onMount(() => { - const url = new URL(window.location.href) - const result = url.hash - - console.log("STRIPE RESULT", result) - - if (url.hash === "#success") { - setIsLoading(true) - // Remove the hash from the URL - window.history.replaceState(null, "", window.location.pathname + window.location.search) - } - }) - - createEffect((old?: number) => { - if (old && old !== billingInfo()?.billing?.balance) { - setIsLoading(false) - } - return billingInfo()?.billing?.balance - }) + const createCheckoutUrlSubmission = useSubmission(createCheckoutUrl) const handleBuyCredits = async () => { try { - setIsLoading(true) const baseUrl = window.location.href - const successUrl = new URL(baseUrl) - successUrl.hash = "success" - - const checkoutUrl = await createCheckoutUrlAction(successUrl.toString(), baseUrl) + const checkoutUrl = await createCheckoutUrlAction(baseUrl, baseUrl) if (checkoutUrl) { window.location.href = checkoutUrl } } catch (error) { console.error("Failed to get checkout URL:", error) - setIsLoading(false) } } @@ -451,8 +425,8 @@ export default function() { })()} -
From 37f284f9a97d3354143d64fc76c2eb9f7d9ccf9e Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 29 Aug 2025 23:32:17 -0400 Subject: [PATCH 101/112] wip: cloud --- bun.lock | 101 +- cloud/app/src/routes/workspace.tsx | 4 +- cloud/function/src/gateway.ts | 317 +--- cloud/web/.gitignore | 2 - cloud/web/index.html | 38 - cloud/web/npm-debug.log | 29 - cloud/web/package.json | 32 - cloud/web/public/favicon-dark.svg | 3 - cloud/web/public/favicon.ico | Bin 171515 -> 0 bytes cloud/web/public/favicon.svg | 3 - cloud/web/public/social-share.png | Bin 25855 -> 0 bytes cloud/web/scripts/render.mjs | 24 - cloud/web/src/app.tsx | 42 - cloud/web/src/assets/screenshot.png | Bin 449252 -> 0 bytes cloud/web/src/components/context-account.tsx | 99 -- cloud/web/src/components/context-openauth.tsx | 180 --- cloud/web/src/components/context-theme.tsx | 39 - cloud/web/src/entry-client.tsx | 13 - cloud/web/src/entry-server.tsx | 7 - cloud/web/src/pages/[workspace].tsx | 11 - .../src/pages/[workspace]/billing.module.css | 56 - cloud/web/src/pages/[workspace]/billing.tsx | 132 -- .../pages/[workspace]/components/system.txt | 11 - .../src/pages/[workspace]/components/tool.ts | 271 ---- .../src/pages/[workspace]/index.module.css | 239 --- cloud/web/src/pages/[workspace]/index.tsx | 18 - .../web/src/pages/[workspace]/keys.module.css | 97 -- cloud/web/src/pages/[workspace]/keys.tsx | 151 -- .../web/src/pages/components/context-api.tsx | 24 - .../pages/components/context-workspace.tsx | 38 - .../src/pages/components/layout.module.css | 199 --- cloud/web/src/pages/components/layout.tsx | 96 -- cloud/web/src/pages/index.tsx | 39 - cloud/web/src/pages/lander.module.css | 83 -- cloud/web/src/pages/test/design.module.css | 204 --- cloud/web/src/pages/test/design.tsx | 562 ------- cloud/web/src/sst-env.d.ts | 12 - cloud/web/src/ui/button.tsx | 24 - cloud/web/src/ui/context-dialog.tsx | 120 -- cloud/web/src/ui/dialog-select.module.css | 36 - cloud/web/src/ui/dialog-select.tsx | 124 -- cloud/web/src/ui/dialog-string.tsx | 70 - cloud/web/src/ui/dialog.tsx | 27 - cloud/web/src/ui/style/component/button.css | 78 - cloud/web/src/ui/style/component/dialog.css | 84 -- cloud/web/src/ui/style/component/input.css | 34 - cloud/web/src/ui/style/component/label.css | 17 - .../web/src/ui/style/component/title-bar.css | 32 - cloud/web/src/ui/style/index.css | 50 - cloud/web/src/ui/style/token/animation.css | 23 - cloud/web/src/ui/style/token/color.css | 88 -- cloud/web/src/ui/style/token/font.css | 20 - cloud/web/src/ui/style/token/reset.css | 212 --- cloud/web/src/ui/style/token/space.css | 39 - cloud/web/src/ui/svg/icons.tsx | 1292 ----------------- cloud/web/src/ui/svg/index.tsx | 67 - cloud/web/src/util/context.tsx | 26 - cloud/web/sst-env.d.ts | 9 - cloud/web/tsconfig.json | 12 - cloud/web/vite.config.ts | 63 - infra/cloud.ts | 12 +- 61 files changed, 8 insertions(+), 5727 deletions(-) delete mode 100644 cloud/web/.gitignore delete mode 100644 cloud/web/index.html delete mode 100644 cloud/web/npm-debug.log delete mode 100644 cloud/web/package.json delete mode 100644 cloud/web/public/favicon-dark.svg delete mode 100644 cloud/web/public/favicon.ico delete mode 100644 cloud/web/public/favicon.svg delete mode 100644 cloud/web/public/social-share.png delete mode 100644 cloud/web/scripts/render.mjs delete mode 100644 cloud/web/src/app.tsx delete mode 100644 cloud/web/src/assets/screenshot.png delete mode 100644 cloud/web/src/components/context-account.tsx delete mode 100644 cloud/web/src/components/context-openauth.tsx delete mode 100644 cloud/web/src/components/context-theme.tsx delete mode 100644 cloud/web/src/entry-client.tsx delete mode 100644 cloud/web/src/entry-server.tsx delete mode 100644 cloud/web/src/pages/[workspace].tsx delete mode 100644 cloud/web/src/pages/[workspace]/billing.module.css delete mode 100644 cloud/web/src/pages/[workspace]/billing.tsx delete mode 100644 cloud/web/src/pages/[workspace]/components/system.txt delete mode 100644 cloud/web/src/pages/[workspace]/components/tool.ts delete mode 100644 cloud/web/src/pages/[workspace]/index.module.css delete mode 100644 cloud/web/src/pages/[workspace]/index.tsx delete mode 100644 cloud/web/src/pages/[workspace]/keys.module.css delete mode 100644 cloud/web/src/pages/[workspace]/keys.tsx delete mode 100644 cloud/web/src/pages/components/context-api.tsx delete mode 100644 cloud/web/src/pages/components/context-workspace.tsx delete mode 100644 cloud/web/src/pages/components/layout.module.css delete mode 100644 cloud/web/src/pages/components/layout.tsx delete mode 100644 cloud/web/src/pages/index.tsx delete mode 100644 cloud/web/src/pages/lander.module.css delete mode 100644 cloud/web/src/pages/test/design.module.css delete mode 100644 cloud/web/src/pages/test/design.tsx delete mode 100644 cloud/web/src/sst-env.d.ts delete mode 100644 cloud/web/src/ui/button.tsx delete mode 100644 cloud/web/src/ui/context-dialog.tsx delete mode 100644 cloud/web/src/ui/dialog-select.module.css delete mode 100644 cloud/web/src/ui/dialog-select.tsx delete mode 100644 cloud/web/src/ui/dialog-string.tsx delete mode 100644 cloud/web/src/ui/dialog.tsx delete mode 100644 cloud/web/src/ui/style/component/button.css delete mode 100644 cloud/web/src/ui/style/component/dialog.css delete mode 100644 cloud/web/src/ui/style/component/input.css delete mode 100644 cloud/web/src/ui/style/component/label.css delete mode 100644 cloud/web/src/ui/style/component/title-bar.css delete mode 100644 cloud/web/src/ui/style/index.css delete mode 100644 cloud/web/src/ui/style/token/animation.css delete mode 100644 cloud/web/src/ui/style/token/color.css delete mode 100644 cloud/web/src/ui/style/token/font.css delete mode 100644 cloud/web/src/ui/style/token/reset.css delete mode 100644 cloud/web/src/ui/style/token/space.css delete mode 100644 cloud/web/src/ui/svg/icons.tsx delete mode 100644 cloud/web/src/ui/svg/index.tsx delete mode 100644 cloud/web/src/util/context.tsx delete mode 100644 cloud/web/sst-env.d.ts delete mode 100644 cloud/web/tsconfig.json delete mode 100644 cloud/web/vite.config.ts diff --git a/bun.lock b/bun.lock index 9c136e28c8..743c2cb05c 100644 --- a/bun.lock +++ b/bun.lock @@ -58,25 +58,6 @@ "typescript": "catalog:", }, }, - "cloud/web": { - "name": "@opencode/cloud-web", - "version": "0.5.28", - "dependencies": { - "@kobalte/core": "0.13.9", - "@openauthjs/solid": "0.0.0-20250322224806", - "@solid-primitives/storage": "4.3.1", - "@solidjs/meta": "0.29.4", - "@solidjs/router": "0.15.3", - "solid-js": "catalog:", - "solid-list": "0.3.0", - }, - "devDependencies": { - "typescript": "catalog:", - "vite": "6.2.2", - "vite-plugin-pages": "0.32.5", - "vite-plugin-solid": "2.11.6", - }, - }, "packages/function": { "name": "@opencode/function", "version": "0.5.28", @@ -397,8 +378,6 @@ "@colors/colors": ["@colors/colors@1.6.0", "", {}, "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA=="], - "@corvu/utils": ["@corvu/utils@0.4.2", "", { "dependencies": { "@floating-ui/dom": "^1.6.11" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-Ox2kYyxy7NoXdKWdHeDEjZxClwzO4SKM8plAaVwmAJPxHMqA0rLOoAsa+hBDwRLpctf+ZRnAd/ykguuJidnaTA=="], - "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], "@ctrl/tinycolor": ["@ctrl/tinycolor@4.1.0", "", {}, "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ=="], @@ -481,12 +460,6 @@ "@fastify/busboy": ["@fastify/busboy@3.2.0", "", {}, "sha512-m9FVDXU3GT2ITSe0UaMA5rU3QkfC/UXtCU8y0gSN/GugTqtVldOBWIB5V6V3sbmenVZUIpU6f+mPEO2+m5iTaA=="], - "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], - - "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], - - "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], - "@fontsource/ibm-plex-mono": ["@fontsource/ibm-plex-mono@5.2.5", "", {}, "sha512-G09N3GfuT9qj3Ax2FDZvKqZttzM3v+cco2l8uXamhKyXLdmlaUDH5o88/C3vtTHj2oT7yRKsvxz9F+BXbWKMYA=="], "@grpc/grpc-js": ["@grpc/grpc-js@1.13.4", "", { "dependencies": { "@grpc/proto-loader": "^0.7.13", "@js-sdsl/ordered-map": "^4.4.2" } }, "sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg=="], @@ -541,10 +514,6 @@ "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], - "@internationalized/date": ["@internationalized/date@3.9.0", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-yaN3brAnHRD+4KyyOsJyk49XUvj2wtbNACSqg0bz3u8t2VuzhC8Q5dfRnrSxjnnbDb+ienBnkn1TzQfE154vyg=="], - - "@internationalized/number": ["@internationalized/number@3.6.5", "", { "dependencies": { "@swc/helpers": "^0.5.0" } }, "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g=="], - "@ioredis/commands": ["@ioredis/commands@1.3.1", "", {}, "sha512-bYtU8avhGIcje3IhvF9aSjsa5URMZBHnwKtOvXsT4sfYy9gppW11gLPT/9oNqlJZD47yPKveQFTAFWpHjKvUoQ=="], "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], @@ -573,10 +542,6 @@ "@jsdevtools/ono": ["@jsdevtools/ono@7.1.3", "", {}, "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="], - "@kobalte/core": ["@kobalte/core@0.13.9", "", { "dependencies": { "@floating-ui/dom": "^1.5.1", "@internationalized/date": "^3.4.0", "@internationalized/number": "^3.2.1", "@kobalte/utils": "^0.9.1", "@solid-primitives/props": "^3.1.8", "@solid-primitives/resize-observer": "^2.0.26", "solid-presence": "^0.1.8", "solid-prevent-scroll": "^0.1.4" }, "peerDependencies": { "solid-js": "^1.8.15" } }, "sha512-TkeSpgNy7I5k8jwjqT9CK3teAxN0aFb3yyL9ODb06JVYMwXIk+UKrizoAF1ahLUP85lKnxv44B4Y5cXkHShgqw=="], - - "@kobalte/utils": ["@kobalte/utils@0.9.1", "", { "dependencies": { "@solid-primitives/event-listener": "^2.2.14", "@solid-primitives/keyed": "^1.2.0", "@solid-primitives/map": "^0.4.7", "@solid-primitives/media": "^2.2.4", "@solid-primitives/props": "^3.1.8", "@solid-primitives/refs": "^1.0.5", "@solid-primitives/utils": "^6.2.1" }, "peerDependencies": { "solid-js": "^1.8.8" } }, "sha512-eeU60A3kprIiBDAfv9gUJX1tXGLuZiKMajUfSQURAF2pk4ZoMYiqIzmrMBvzcxP39xnYttgTyQEVLwiTZnrV4w=="], - "@logdna/tail-file": ["@logdna/tail-file@2.2.0", "", {}, "sha512-XGSsWDweP80Fks16lwkAUIr54ICyBs6PsI4mpfTLQaWgEJRtY9xEV+PeyDpJ+sJEGZxqINlpmAwe/6tS1pP8Ng=="], "@mapbox/node-pre-gyp": ["@mapbox/node-pre-gyp@2.0.0", "", { "dependencies": { "consola": "^3.2.3", "detect-libc": "^2.0.0", "https-proxy-agent": "^7.0.5", "node-fetch": "^2.6.7", "nopt": "^8.0.0", "semver": "^7.5.3", "tar": "^7.4.0" }, "bin": { "node-pre-gyp": "bin/node-pre-gyp" } }, "sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg=="], @@ -677,8 +642,6 @@ "@openauthjs/openauth": ["@openauthjs/openauth@0.0.0-20250322224806", "", { "dependencies": { "@standard-schema/spec": "1.0.0-beta.3", "aws4fetch": "1.0.20", "jose": "5.9.6" }, "peerDependencies": { "arctic": "^2.2.2", "hono": "^4.0.0" } }, "sha512-p5IWSRXvABcwocH2dNI0w8c1QJelIOFulwhKk+aLLFfUbs8u1pr7kQbYe8yCSM2+bcLHiwbogpUQc2ovrGwCuw=="], - "@openauthjs/solid": ["@openauthjs/solid@0.0.0-20250322224806", "", { "dependencies": { "@openauthjs/openauth": "0.4.2", "@solid-primitives/storage": "^4.3.1" }, "peerDependencies": { "solid-js": "^1.8.0" } }, "sha512-ln/yZQ/i+2vkrVSDOxxmbC8Oq6P2sljtdCiiAPZXj8etihwT11CYtj4jsrwArQltog738N2uvd2dKpHopVqLSQ=="], - "@opencode-ai/plugin": ["@opencode-ai/plugin@workspace:packages/plugin"], "@opencode-ai/sdk": ["@opencode-ai/sdk@workspace:packages/sdk/js"], @@ -689,8 +652,6 @@ "@opencode/cloud-function": ["@opencode/cloud-function@workspace:cloud/function"], - "@opencode/cloud-web": ["@opencode/cloud-web@workspace:cloud/web"], - "@opencode/function": ["@opencode/function@workspace:packages/function"], "@opencode/web": ["@opencode/web@workspace:packages/web"], @@ -973,30 +934,6 @@ "@smithy/util-utf8": ["@smithy/util-utf8@4.0.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-b+zebfKCfRdgNJDknHCob3O7FpeYQN6ZG6YLExMcasDHsCXlsXCEuiPZeLnJLpwa5dvPetGlnGCiMHuLwGvFow=="], - "@solid-primitives/event-listener": ["@solid-primitives/event-listener@2.4.3", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg=="], - - "@solid-primitives/keyed": ["@solid-primitives/keyed@1.5.2", "", { "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-BgoEdqPw48URnI+L5sZIHdF4ua4Las1eWEBBPaoSFs42kkhnHue+rwCBPL2Z9ebOyQ75sUhUfOETdJfmv0D6Kg=="], - - "@solid-primitives/map": ["@solid-primitives/map@0.4.13", "", { "dependencies": { "@solid-primitives/trigger": "^1.1.0" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-B1zyFbsiTQvqPr+cuPCXO72sRuczG9Swncqk5P74NCGw1VE8qa/Ry9GlfI1e/VdeQYHjan+XkbE3rO2GW/qKew=="], - - "@solid-primitives/media": ["@solid-primitives/media@2.3.3", "", { "dependencies": { "@solid-primitives/event-listener": "^2.4.3", "@solid-primitives/rootless": "^1.5.2", "@solid-primitives/static-store": "^0.1.2", "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-hQ4hLOGvfbugQi5Eu1BFWAIJGIAzztq9x0h02xgBGl2l0Jaa3h7tg6bz5tV1NSuNYVGio4rPoa7zVQQLkkx9dA=="], - - "@solid-primitives/props": ["@solid-primitives/props@3.2.2", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-lZOTwFJajBrshSyg14nBMEP0h8MXzPowGO0s3OeiR3z6nXHTfj0FhzDtJMv+VYoRJKQHG2QRnJTgCzK6erARAw=="], - - "@solid-primitives/refs": ["@solid-primitives/refs@1.1.2", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg=="], - - "@solid-primitives/resize-observer": ["@solid-primitives/resize-observer@2.1.3", "", { "dependencies": { "@solid-primitives/event-listener": "^2.4.3", "@solid-primitives/rootless": "^1.5.2", "@solid-primitives/static-store": "^0.1.2", "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ=="], - - "@solid-primitives/rootless": ["@solid-primitives/rootless@1.5.2", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ=="], - - "@solid-primitives/static-store": ["@solid-primitives/static-store@0.1.2", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-ReK+5O38lJ7fT+L6mUFvUr6igFwHBESZF+2Ug842s7fvlVeBdIVEdTCErygff6w7uR6+jrr7J8jQo+cYrEq4Iw=="], - - "@solid-primitives/storage": ["@solid-primitives/storage@4.3.1", "", { "dependencies": { "@solid-primitives/utils": "^6.3.0" }, "peerDependencies": { "@tauri-apps/plugin-store": "*", "solid-js": "^1.6.12" }, "optionalPeers": ["@tauri-apps/plugin-store"] }, "sha512-xAJsY2pvXrAaCai4N2grmWY3xh5om9suTDVzGkRF5JBpDzs3Apk+xIovdTErbW0iCzXIEefENXb9xmSzdjuLYA=="], - - "@solid-primitives/trigger": ["@solid-primitives/trigger@1.2.2", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-IWoptVc0SWYgmpBPpCMehS5b07+tpFcvw15tOQ3QbXedSYn6KP8zCjPkHNzMxcOvOicTneleeZDP7lqmz+PQ6g=="], - - "@solid-primitives/utils": ["@solid-primitives/utils@6.3.2", "", { "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ=="], - "@solidjs/meta": ["@solidjs/meta@0.29.4", "", { "peerDependencies": { "solid-js": ">=1.8.4" } }, "sha512-zdIWBGpR9zGx1p1bzIPqF5Gs+Ks/BH8R6fWhmUa/dcK1L2rUC8BAcZJzNRYBQv74kScf1TSOs0EY//Vd/I0V8g=="], "@solidjs/router": ["@solidjs/router@0.15.3", "", { "peerDependencies": { "solid-js": "^1.8.6" } }, "sha512-iEbW8UKok2Oio7o6Y4VTzLj+KFCmQPGEpm1fS3xixwFBdclFVBvaQVeibl1jys4cujfAK5Kn6+uG2uBm3lxOMw=="], @@ -1531,7 +1468,7 @@ "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], - "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], "env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], @@ -1569,8 +1506,6 @@ "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], - "esprima-extract-comments": ["esprima-extract-comments@1.1.0", "", { "dependencies": { "esprima": "^4.0.0" } }, "sha512-sBQUnvJwpeE9QnPrxh7dpI/dp67erYG4WXEAreAMoelPRpMR7NWb4YtwRPn9b+H1uLQKl/qS8WYmyaljTpjIsw=="], - "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], "estree-util-attach-comments": ["estree-util-attach-comments@3.0.0", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw=="], @@ -1621,8 +1556,6 @@ "extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="], - "extract-comments": ["extract-comments@1.1.0", "", { "dependencies": { "esprima-extract-comments": "^1.1.0", "parse-code-context": "^1.0.0" } }, "sha512-dzbZV2AdSSVW/4E7Ti5hZdHWbA+Z80RJsJhr5uiL10oyjl/gy7/o+HI1HwK4/WSZhlq4SNKU3oUzXlM13Qx02Q=="], - "extract-zip": ["extract-zip@2.0.1", "", { "dependencies": { "debug": "^4.1.1", "get-stream": "^5.1.0", "yauzl": "^2.10.0" }, "optionalDependencies": { "@types/yauzl": "^2.9.1" }, "bin": { "extract-zip": "cli.js" } }, "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg=="], "fast-content-type-parse": ["fast-content-type-parse@3.0.0", "", {}, "sha512-ZvLdcY8P+N8mGQJahJV5G4U88CSvT1rP8ApL6uETe88MBXrBHAkZlSEySdUlyztF7ccb+Znos3TFqaepHxdhBg=="], @@ -2331,8 +2264,6 @@ "pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], - "parse-code-context": ["parse-code-context@1.0.0", "", {}, "sha512-OZQaqKaQnR21iqhlnPfVisFjBWjhnMl5J9MgbP8xC+EwoVqbXrq78lp+9Zb3ahmLzrIX5Us/qbvBnaS3hkH6OA=="], - "parse-conflict-json": ["parse-conflict-json@3.0.1", "", { "dependencies": { "json-parse-even-better-errors": "^3.0.0", "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" } }, "sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw=="], "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], @@ -2645,12 +2576,6 @@ "solid-js": ["solid-js@1.9.9", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "~1.3.0", "seroval-plugins": "~1.3.0" } }, "sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA=="], - "solid-list": ["solid-list@0.3.0", "", { "dependencies": { "@corvu/utils": "~0.4.0" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-t4hx/F/l8Vmq+ib9HtZYl7Z9F1eKxq3eKJTXlvcm7P7yI4Z8O7QSOOEVHb/K6DD7M0RxzVRobK/BS5aSfLRwKg=="], - - "solid-presence": ["solid-presence@0.1.8", "", { "dependencies": { "@corvu/utils": "~0.4.0" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-pWGtXUFWYYUZNbg5YpG5vkQJyOtzn2KXhxYaMx/4I+lylTLYkITOLevaCwMRN+liCVk0pqB6EayLWojNqBFECA=="], - - "solid-prevent-scroll": ["solid-prevent-scroll@0.1.10", "", { "dependencies": { "@corvu/utils": "~0.4.1" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-KplGPX2GHiWJLZ6AXYRql4M127PdYzfwvLJJXMkO+CMb8Np4VxqDAg5S8jLdwlEuBis/ia9DKw2M8dFx5u8Mhw=="], - "solid-refresh": ["solid-refresh@0.6.3", "", { "dependencies": { "@babel/generator": "^7.23.6", "@babel/helper-module-imports": "^7.22.15", "@babel/types": "^7.23.6" }, "peerDependencies": { "solid-js": "^1.3" } }, "sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA=="], "solid-use": ["solid-use@0.9.1", "", { "peerDependencies": { "solid-js": "^1.7" } }, "sha512-UwvXDVPlrrbj/9ewG9ys5uL2IO4jSiwys2KPzK4zsnAcmEl7iDafZWW1Mo4BSEWOmQCGK6IvpmGHo1aou8iOFw=="], @@ -2919,9 +2844,7 @@ "vinxi": ["vinxi@0.5.8", "", { "dependencies": { "@babel/core": "^7.22.11", "@babel/plugin-syntax-jsx": "^7.22.5", "@babel/plugin-syntax-typescript": "^7.22.5", "@types/micromatch": "^4.0.2", "@vinxi/listhen": "^1.5.6", "boxen": "^8.0.1", "chokidar": "^4.0.3", "citty": "^0.1.6", "consola": "^3.4.2", "crossws": "^0.3.4", "dax-sh": "^0.43.0", "defu": "^6.1.4", "es-module-lexer": "^1.7.0", "esbuild": "^0.25.3", "get-port-please": "^3.1.2", "h3": "1.15.3", "hookable": "^5.5.3", "http-proxy": "^1.18.1", "micromatch": "^4.0.8", "nitropack": "^2.11.10", "node-fetch-native": "^1.6.6", "path-to-regexp": "^6.2.1", "pathe": "^1.1.1", "radix3": "^1.1.2", "resolve": "^1.22.10", "serve-placeholder": "^2.0.1", "serve-static": "^1.15.0", "tinyglobby": "^0.2.14", "ufo": "^1.6.1", "unctx": "^2.4.1", "unenv": "^1.10.0", "unstorage": "^1.16.0", "vite": "^6.3.3", "zod": "^3.24.3" }, "bin": { "vinxi": "bin/cli.mjs" } }, "sha512-1pGA+cU1G9feBQ1sd5FMftPuLUT8NSX880AvELhNWqoqWhe2jeSOQxjDPxlA3f1AC+Bbknl4UPKHyVXmfLZQjw=="], - "vite": ["vite@6.2.2", "", { "dependencies": { "esbuild": "^0.25.0", "postcss": "^8.5.3", "rollup": "^4.30.1" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ=="], - - "vite-plugin-pages": ["vite-plugin-pages@0.32.5", "", { "dependencies": { "@types/debug": "^4.1.12", "debug": "^4.4.0", "dequal": "^2.0.3", "extract-comments": "^1.1.0", "fast-glob": "^3.3.3", "json5": "^2.2.3", "local-pkg": "^1.0.0", "picocolors": "^1.1.1", "yaml": "^2.7.0" }, "peerDependencies": { "@vue/compiler-sfc": "^2.7.0 || ^3.0.0", "vite": "^2.0.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0 || ^6.0.0" }, "optionalPeers": ["@vue/compiler-sfc"] }, "sha512-GY2JAt+4vZ4BqTtw+4CSUxPgYiqamrMRIzYk2AtJvQHeBoMlctsQW+tgCpKriUKINiKfi6NegbP07r1XrdxTWA=="], + "vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], "vite-plugin-solid": ["vite-plugin-solid@2.11.6", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Sl5CTqJTGyEeOsmdH6BOgalIZlwH3t4/y0RQuFLMGnvWMBvxb4+lq7x3BSiAw6etf0QexfNJW7HSOO/Qf7pigg=="], @@ -3023,16 +2946,12 @@ "@ai-sdk/gateway/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.1", "", { "dependencies": { "@ai-sdk/provider": "2.0.0", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.3", "zod-to-json-schema": "^3.24.1" }, "peerDependencies": { "zod": "^3.25.76 || ^4" } }, "sha512-/iP1sKc6UdJgGH98OCly7sWJKv+J9G47PnTjIj40IJMUQKwDrUMyf7zOOfRtPwSuNifYhSoJQ4s1WltI65gJ/g=="], - "@astrojs/cloudflare/vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], - "@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], "@astrojs/mdx/@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.6", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.2", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "shiki": "^3.2.1", "smol-toml": "^1.3.4", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.3" } }, "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug=="], "@astrojs/mdx/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], - "@astrojs/solid-js/vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], - "@aws-crypto/sha256-browser/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], "@aws-crypto/util/@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], @@ -3115,8 +3034,6 @@ "@openauthjs/openauth/jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="], - "@openauthjs/solid/@openauthjs/openauth": ["@openauthjs/openauth@0.4.2", "", { "dependencies": { "@standard-schema/spec": "1.0.0-beta.3", "aws4fetch": "1.0.20", "jose": "5.9.6" }, "peerDependencies": { "arctic": "^2.2.2", "hono": "^4.0.0" } }, "sha512-8+Bia559iffrZXfQ0LWXrVVVriochS88pDtB8indyQ1S+40MQgDBu8aBzKt+fgSrTmoQGCTT+wlOXgbjc9qIcw=="], - "@opentelemetry/instrumentation-grpc/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], "@oslojs/jwt/@oslojs/encoding": ["@oslojs/encoding@0.4.1", "", {}, "sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q=="], @@ -3159,6 +3076,8 @@ "@vinxi/server-components/magicast": ["magicast@0.2.11", "", { "dependencies": { "@babel/parser": "^7.22.16", "@babel/types": "^7.22.17", "recast": "^0.23.4" } }, "sha512-6saXbRDA1HMkqbsvHOU6HBjCVgZT460qheRkLhJQHWAbhXoWESI3Kn/dGGXyKs15FFKR85jsUqFx2sMK0wy/5g=="], + "@vue/compiler-core/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "@vue/compiler-core/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], "@vue/compiler-sfc/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], @@ -3177,8 +3096,6 @@ "astro/sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="], - "astro/vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], - "babel-plugin-jsx-dom-expressions/@babel/helper-module-imports": ["@babel/helper-module-imports@7.18.6", "", { "dependencies": { "@babel/types": "^7.18.6" } }, "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA=="], "bl/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], @@ -3305,8 +3222,6 @@ "parse-json/@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], - "parse5/entities": ["entities@6.0.1", "", {}, "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="], - "path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], "pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], @@ -3393,8 +3308,6 @@ "uri-js/punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], - "vinxi/vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "jiti": ">=1.21.0", "less": "*", "lightningcss": "^1.21.0", "sass": "*", "sass-embedded": "*", "stylus": "*", "sugarss": "*", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], - "winston/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], "winston-transport/readable-stream": ["readable-stream@3.6.2", "", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="], @@ -3563,12 +3476,6 @@ "@netlify/zip-it-and-ship-it/yargs/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], - "@openauthjs/solid/@openauthjs/openauth/@standard-schema/spec": ["@standard-schema/spec@1.0.0-beta.3", "", {}, "sha512-0ifF3BjA1E8SY9C+nUew8RefNOIq0cDlYALPty4rhUm8Rrl6tCM8hBT4bhGhx7I7iXD0uAgt50lgo8dD73ACMw=="], - - "@openauthjs/solid/@openauthjs/openauth/aws4fetch": ["aws4fetch@1.0.20", "", {}, "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g=="], - - "@openauthjs/solid/@openauthjs/openauth/jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="], - "@pulumi/pulumi/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], "@solidjs/start/shiki/@shikijs/core": ["@shikijs/core@1.29.2", "", { "dependencies": { "@shikijs/engine-javascript": "1.29.2", "@shikijs/engine-oniguruma": "1.29.2", "@shikijs/types": "1.29.2", "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.4" } }, "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ=="], diff --git a/cloud/app/src/routes/workspace.tsx b/cloud/app/src/routes/workspace.tsx index 865e765190..864fab4d35 100644 --- a/cloud/app/src/routes/workspace.tsx +++ b/cloud/app/src/routes/workspace.tsx @@ -16,9 +16,7 @@ export default function WorkspaceLayout(props: RouteSectionProps) { Logout -
- {props.children} -
+
{props.children}
) } diff --git a/cloud/function/src/gateway.ts b/cloud/function/src/gateway.ts index c8b39990f1..aed02b4d45 100644 --- a/cloud/function/src/gateway.ts +++ b/cloud/function/src/gateway.ts @@ -1,39 +1,18 @@ -import { z } from "zod" import { Hono, MiddlewareHandler } from "hono" -import { cors } from "hono/cors" -import { HTTPException } from "hono/http-exception" -import { zValidator } from "@hono/zod-validator" import { Resource } from "@opencode/cloud-core/util/resource.js" -import { type ProviderMetadata, type LanguageModelUsage, generateText, streamText } from "ai" +import { type ProviderMetadata, type LanguageModelUsage } from "ai" import { createAnthropic } from "@ai-sdk/anthropic" import { createOpenAI } from "@ai-sdk/openai" import { createOpenAICompatible } from "@ai-sdk/openai-compatible" import type { LanguageModelV2Prompt } from "@ai-sdk/provider" import { type ChatCompletionCreateParamsBase } from "openai/resources/chat/completions" import { Actor } from "@opencode/cloud-core/actor.js" -import { and, Database, eq, sql } from "@opencode/cloud-core/drizzle/index.js" -import { UserTable } from "@opencode/cloud-core/schema/user.sql.js" +import { Database, eq, sql } from "@opencode/cloud-core/drizzle/index.js" import { KeyTable } from "@opencode/cloud-core/schema/key.sql.js" -import { createClient } from "@openauthjs/openauth/client" -import { Log } from "@opencode/cloud-core/util/log.js" import { Billing } from "@opencode/cloud-core/billing.js" -import { Workspace } from "@opencode/cloud-core/workspace.js" -import { BillingTable, PaymentTable, UsageTable } from "@opencode/cloud-core/schema/billing.sql.js" -import { centsToMicroCents } from "@opencode/cloud-core/util/price.js" -import { Identifier } from "../../core/src/identifier" type Env = {} -let _client: ReturnType -const client = () => { - if (_client) return _client - _client = createClient({ - clientID: "api", - issuer: Resource.AUTH_API_URL.value, - }) - return _client -} - const SUPPORTED_MODELS = { "anthropic/claude-sonnet-4": { input: 0.0000015, @@ -72,10 +51,6 @@ const SUPPORTED_MODELS = { }, } -const log = Log.create({ - namespace: "api", -}) - const GatewayAuth: MiddlewareHandler = async (c, next) => { const authHeader = c.req.header("authorization") @@ -125,56 +100,6 @@ const GatewayAuth: MiddlewareHandler = async (c, next) => { await next() } -const RestAuth: MiddlewareHandler = async (c, next) => { - const authorization = c.req.header("authorization") - if (!authorization) { - return Actor.provide("public", {}, next) - } - const token = authorization.split(" ")[1] - if (!token) - throw new HTTPException(403, { - message: "Bearer token is required.", - }) - - const verified = await client().verify(token) - if (verified.err) { - throw new HTTPException(403, { - message: "Invalid token.", - }) - } - let subject = verified.subject as Actor.Info - if (subject.type === "account") { - const workspaceID = c.req.header("x-opencode-workspace") - const email = subject.properties.email - if (workspaceID) { - const user = await Database.use((tx) => - tx - .select({ - id: UserTable.id, - workspaceID: UserTable.workspaceID, - email: UserTable.email, - }) - .from(UserTable) - .where(and(eq(UserTable.email, email), eq(UserTable.workspaceID, workspaceID))) - .then((rows) => rows[0]), - ) - if (!user) - throw new HTTPException(403, { - message: "You do not have access to this workspace.", - }) - subject = { - type: "user", - properties: { - userID: user.id, - workspaceID: workspaceID, - email: user.email, - }, - } - } - } - await Actor.provide(subject.type, subject.properties, next) -} - const app = new Hono<{ Bindings: Env; Variables: { keyRecord?: { id: string; workspaceID: string } } }>() .get("/", (c) => c.text("Hello, world!")) .post("/v1/chat/completions", GatewayAuth, async (c) => { @@ -664,244 +589,6 @@ const app = new Hono<{ Bindings: Env; Variables: { keyRecord?: { id: string; wor } }) }) - .use("/*", cors()) - .use(RestAuth) - .get("/rest/account", async (c) => { - const account = Actor.assert("account") - let workspaces = await Workspace.list() - if (workspaces.length === 0) { - await Workspace.create() - workspaces = await Workspace.list() - } - return c.json({ - id: account.properties.accountID, - email: account.properties.email, - workspaces, - }) - }) - .get("/billing/info", async (c) => { - const billing = await Billing.get() - const payments = await Database.use((tx) => - tx - .select() - .from(PaymentTable) - .where(eq(PaymentTable.workspaceID, Actor.workspace())) - .orderBy(sql`${PaymentTable.timeCreated} DESC`) - .limit(100), - ) - const usage = await Database.use((tx) => - tx - .select() - .from(UsageTable) - .where(eq(UsageTable.workspaceID, Actor.workspace())) - .orderBy(sql`${UsageTable.timeCreated} DESC`) - .limit(100), - ) - return c.json({ billing, payments, usage }) - }) - .post( - "/billing/checkout", - zValidator( - "json", - z.custom<{ - success_url: string - cancel_url: string - }>(), - ), - async (c) => { - const account = Actor.assert("user") - - const body = await c.req.json() - - const customer = await Billing.get() - const session = await Billing.stripe().checkout.sessions.create({ - mode: "payment", - line_items: [ - { - price_data: { - currency: "usd", - product_data: { - name: "opencode credits", - }, - unit_amount: 2000, // $20 minimum - }, - quantity: 1, - }, - ], - payment_intent_data: { - setup_future_usage: "on_session", - }, - ...(customer.customerID - ? { customer: customer.customerID } - : { - customer_email: account.properties.email, - customer_creation: "always", - }), - metadata: { - workspaceID: Actor.workspace(), - }, - currency: "usd", - payment_method_types: ["card"], - success_url: body.success_url, - cancel_url: body.cancel_url, - }) - - return c.json({ - url: session.url, - }) - }, - ) - .post("/billing/portal", async (c) => { - const body = await c.req.json() - - const customer = await Billing.get() - if (!customer?.customerID) { - throw new Error("No stripe customer ID") - } - - const session = await Billing.stripe().billingPortal.sessions.create({ - customer: customer.customerID, - return_url: body.return_url, - }) - - return c.json({ - url: session.url, - }) - }) - .post("/stripe/webhook", async (c) => { - const body = await Billing.stripe().webhooks.constructEventAsync( - await c.req.text(), - c.req.header("stripe-signature")!, - Resource.STRIPE_WEBHOOK_SECRET.value, - ) - - console.log(body.type, JSON.stringify(body, null, 2)) - if (body.type === "checkout.session.completed") { - const workspaceID = body.data.object.metadata?.workspaceID - const customerID = body.data.object.customer as string - const paymentID = body.data.object.payment_intent as string - const amount = body.data.object.amount_total - - if (!workspaceID) throw new Error("Workspace ID not found") - if (!customerID) throw new Error("Customer ID not found") - if (!amount) throw new Error("Amount not found") - if (!paymentID) throw new Error("Payment ID not found") - - await Actor.provide("system", { workspaceID }, async () => { - const customer = await Billing.get() - if (customer?.customerID && customer.customerID !== customerID) throw new Error("Customer ID mismatch") - - // set customer metadata - if (!customer?.customerID) { - await Billing.stripe().customers.update(customerID, { - metadata: { - workspaceID, - }, - }) - } - - // get payment method for the payment intent - const paymentIntent = await Billing.stripe().paymentIntents.retrieve(paymentID, { - expand: ["payment_method"], - }) - const paymentMethod = paymentIntent.payment_method - if (!paymentMethod || typeof paymentMethod === "string") throw new Error("Payment method not expanded") - - await Database.transaction(async (tx) => { - await tx - .update(BillingTable) - .set({ - balance: sql`${BillingTable.balance} + ${centsToMicroCents(amount)}`, - customerID, - paymentMethodID: paymentMethod.id, - paymentMethodLast4: paymentMethod.card!.last4, - }) - .where(eq(BillingTable.workspaceID, workspaceID)) - await tx.insert(PaymentTable).values({ - workspaceID, - id: Identifier.create("payment"), - amount: centsToMicroCents(amount), - paymentID, - customerID, - }) - }) - }) - } - - console.log("finished handling") - - return c.json("ok", 200) - }) - .get("/keys", async (c) => { - const user = Actor.assert("user") - - const keys = await Database.use((tx) => - tx - .select({ - id: KeyTable.id, - name: KeyTable.name, - key: KeyTable.key, - userID: KeyTable.userID, - timeCreated: KeyTable.timeCreated, - timeUsed: KeyTable.timeUsed, - }) - .from(KeyTable) - .where(eq(KeyTable.workspaceID, user.properties.workspaceID)) - .orderBy(sql`${KeyTable.timeCreated} DESC`), - ) - - return c.json({ keys }) - }) - .post("/keys", zValidator("json", z.object({ name: z.string().min(1).max(255) })), async (c) => { - const user = Actor.assert("user") - const { name } = c.req.valid("json") - - // Generate secret key: sk- + 64 random characters (upper, lower, numbers) - const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" - let randomPart = "" - for (let i = 0; i < 64; i++) { - randomPart += chars.charAt(Math.floor(Math.random() * chars.length)) - } - const secretKey = `sk-${randomPart}` - - const keyRecord = await Database.use((tx) => - tx - .insert(KeyTable) - .values({ - id: Identifier.create("key"), - workspaceID: user.properties.workspaceID, - userID: user.properties.userID, - name, - key: secretKey, - timeUsed: null, - }) - .returning(), - ) - - return c.json({ - key: secretKey, - id: keyRecord[0].id, - name: keyRecord[0].name, - created: keyRecord[0].timeCreated, - }) - }) - .delete("/keys/:id", async (c) => { - const user = Actor.assert("user") - const keyId = c.req.param("id") - - const result = await Database.use((tx) => - tx - .delete(KeyTable) - .where(and(eq(KeyTable.id, keyId), eq(KeyTable.workspaceID, user.properties.workspaceID))) - .returning({ id: KeyTable.id }), - ) - - if (result.length === 0) { - return c.json({ error: "Key not found" }, 404) - } - - return c.json({ success: true, id: result[0].id }) - }) .all("*", (c) => c.text("Not Found")) export type ApiType = typeof app diff --git a/cloud/web/.gitignore b/cloud/web/.gitignore deleted file mode 100644 index 76add878f8..0000000000 --- a/cloud/web/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -dist \ No newline at end of file diff --git a/cloud/web/index.html b/cloud/web/index.html deleted file mode 100644 index 55c54c1f13..0000000000 --- a/cloud/web/index.html +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - OpenControl - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - - diff --git a/cloud/web/npm-debug.log b/cloud/web/npm-debug.log deleted file mode 100644 index 07b0649fe1..0000000000 --- a/cloud/web/npm-debug.log +++ /dev/null @@ -1,29 +0,0 @@ -0 info it worked if it ends with ok -1 verbose cli [ -1 verbose cli '/usr/local/bin/node', -1 verbose cli '/Users/frank/Sites/opencode/node_modules/.bin/npm', -1 verbose cli 'run', -1 verbose cli 'dev' -1 verbose cli ] -2 info using npm@2.15.12 -3 info using node@v20.18.1 -4 verbose stack Error: Invalid name: "@opencode/cloud/web" -4 verbose stack at ensureValidName (/Users/frank/Sites/opencode/node_modules/npm/node_modules/normalize-package-data/lib/fixer.js:336:15) -4 verbose stack at Object.fixNameField (/Users/frank/Sites/opencode/node_modules/npm/node_modules/normalize-package-data/lib/fixer.js:215:5) -4 verbose stack at /Users/frank/Sites/opencode/node_modules/npm/node_modules/normalize-package-data/lib/normalize.js:32:38 -4 verbose stack at Array.forEach () -4 verbose stack at normalize (/Users/frank/Sites/opencode/node_modules/npm/node_modules/normalize-package-data/lib/normalize.js:31:15) -4 verbose stack at final (/Users/frank/Sites/opencode/node_modules/npm/node_modules/read-package-json/read-json.js:349:5) -4 verbose stack at then (/Users/frank/Sites/opencode/node_modules/npm/node_modules/read-package-json/read-json.js:124:5) -4 verbose stack at ReadFileContext. (/Users/frank/Sites/opencode/node_modules/npm/node_modules/read-package-json/read-json.js:295:20) -4 verbose stack at ReadFileContext.callback (/Users/frank/Sites/opencode/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:78:16) -4 verbose stack at FSReqCallback.readFileAfterOpen [as oncomplete] (node:fs:299:13) -5 verbose cwd /Users/frank/Sites/opencode/cloud/web -6 error Darwin 24.5.0 -7 error argv "/usr/local/bin/node" "/Users/frank/Sites/opencode/node_modules/.bin/npm" "run" "dev" -8 error node v20.18.1 -9 error npm v2.15.12 -10 error Invalid name: "@opencode/cloud/web" -11 error If you need help, you may report this error at: -11 error -12 verbose exit [ 1, true ] diff --git a/cloud/web/package.json b/cloud/web/package.json deleted file mode 100644 index 95757e0917..0000000000 --- a/cloud/web/package.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "name": "@opencode/cloud-web", - "version": "0.5.28", - "private": true, - "description": "", - "type": "module", - "scripts": { - "start": "vite", - "dev": "vite", - "build": "bun build:server && bun build:client", - "build:client": "vite build --outDir dist/client", - "build:server": "vite build --ssr src/entry-server.tsx --outDir dist/server", - "serve": "vite preview", - "sst:dev": "bun sst shell --target Console -- bun dev" - }, - "license": "MIT", - "devDependencies": { - "typescript": "catalog:", - "vite": "6.2.2", - "vite-plugin-pages": "0.32.5", - "vite-plugin-solid": "2.11.6" - }, - "dependencies": { - "@kobalte/core": "0.13.9", - "@openauthjs/solid": "0.0.0-20250322224806", - "@solid-primitives/storage": "4.3.1", - "@solidjs/meta": "0.29.4", - "@solidjs/router": "0.15.3", - "solid-js": "catalog:", - "solid-list": "0.3.0" - } -} diff --git a/cloud/web/public/favicon-dark.svg b/cloud/web/public/favicon-dark.svg deleted file mode 100644 index 9b707ea494..0000000000 --- a/cloud/web/public/favicon-dark.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/cloud/web/public/favicon.ico b/cloud/web/public/favicon.ico deleted file mode 100644 index 0ed3bf15e762ea51d22694175bd97a38f4442854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171515 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 QxGP2H4rWF{?QEz0A6aO1wg3PC diff --git a/cloud/web/public/favicon.svg b/cloud/web/public/favicon.svg deleted file mode 100644 index 5e7cf124fc..0000000000 --- a/cloud/web/public/favicon.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/cloud/web/public/social-share.png b/cloud/web/public/social-share.png deleted file mode 100644 index 72d36a9722adc503f6c847de8d045861dd273357..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25855 zcmeFYXH-*L)HVuO5Jm7<5TuEUN*9pcRIEe<>4a`5LMTG$5I|AzNR<*GG*Rg!)PM=q zMra90N$5c#2^b(qix2{LbG|XY@BX>t{<-(xI|i_`*3Q^_l{wd(^LZZrHGOpN_|bDm zxwyEFKe&I}jEn1F4Hp+r@R7qnkI9V)d*H(N?7l6Gi|g2_{ap8C@^+fE13*Y6{%SY@kok&u+IoF~3Pxplzxi$ZsA5(tldrU{T`*x#rx`XF( z3uQVM8eUOR`N%S)a5+k1;fOnpjbpSwY7L5#nDAC-X#j)Z8YtVta0AzvI6hzwTwG6) zT*vmCCI8d>|7kV!+O$rwmZv86S9`_8M1O0JCie6>U;$h=h7Q{7_g*)S`Cm<^W7x)s^?z;; zIcOs`+`h+d_iOw6D}hiQwNXjfV30MMe5Y{RYe}LS>ic#E2flUtMP-V??%#@?iFVF} z;U2rm95e z20Lx0qEbg6aen_qQcUMc_}+Q=sS_wfUSaAe@Q#@}-L~gOo^F}`6#`=_6%DI6ID3

9QZOqcwshvAvdVqK|bk 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 F{tbgBVFLgF diff --git a/cloud/web/scripts/render.mjs b/cloud/web/scripts/render.mjs deleted file mode 100644 index 5ccb35ff12..0000000000 --- a/cloud/web/scripts/render.mjs +++ /dev/null @@ -1,24 +0,0 @@ -import fs from "fs" -import path from "path" -import { generateHydrationScript, getAssets } from "solid-js/web" - -const dist = import.meta.resolve("../dist").replace("file://", "") -const serverEntry = await import("../dist/server/entry-server.js") -const template = fs.readFileSync(path.join(dist, "client/index.html"), "utf-8") -fs.writeFileSync(path.join(dist, "client/fallback.html"), template) - -const routes = ["/", "/foo"] -for (const route of routes) { - const { app } = serverEntry.render({ url: route }) - const html = template - .replace("", app) - .replace("", generateHydrationScript()) - .replace("", getAssets()) - const filePath = dist + `/client${route === "/" ? "/index" : route}.html` - fs.mkdirSync(path.dirname(filePath), { - recursive: true, - }) - fs.writeFileSync(filePath, html) - - console.log(`Pre-rendered: ${filePath}`) -} diff --git a/cloud/web/src/app.tsx b/cloud/web/src/app.tsx deleted file mode 100644 index aae71ddded..0000000000 --- a/cloud/web/src/app.tsx +++ /dev/null @@ -1,42 +0,0 @@ -/// - -import { Router } from "@solidjs/router" -import routes from "~solid-pages" -import "./ui/style/index.css" -import { MetaProvider } from "@solidjs/meta" -import { AccountProvider } from "./components/context-account" -import { DialogProvider } from "./ui/context-dialog" -import { DialogString } from "./ui/dialog-string" -import { DialogSelect } from "./ui/dialog-select" -import { ThemeProvider } from "./components/context-theme" -import { Suspense } from "solid-js" -import { OpenAuthProvider } from "./components/context-openauth" - -export function App(props: { url?: string }) { - return ( - - - - - - - - - { - return <>{props.children} - }} - /> - - - - - - - ) -} diff --git a/cloud/web/src/assets/screenshot.png b/cloud/web/src/assets/screenshot.png deleted file mode 100644 index 5b6ad2ec68c15f98755b77821e0b20f01e6745ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 449252 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 LcV_Q6arJ)yDZ9(D diff --git a/cloud/web/src/components/context-account.tsx b/cloud/web/src/components/context-account.tsx deleted file mode 100644 index e6aabafd3e..0000000000 --- a/cloud/web/src/components/context-account.tsx +++ /dev/null @@ -1,99 +0,0 @@ -import { createContext, createEffect, ParentProps, Suspense, useContext } from "solid-js" -import { makePersisted } from "@solid-primitives/storage" -import { createStore } from "solid-js/store" -import { useOpenAuth } from "./context-openauth" -import { createAsync } from "@solidjs/router" -import { isServer } from "solid-js/web" - -type Storage = { - accounts: Record< - string, - { - id: string - email: string - workspaces: { - id: string - name: string - slug: string - }[] - } - > -} - -const context = createContext>() - -function init() { - const auth = useOpenAuth() - const [store, setStore] = makePersisted( - createStore({ - accounts: {}, - }), - { - name: "opencontrol.account", - }, - ) - - async function refresh(id: string) { - return fetch(import.meta.env.VITE_API_URL + "/rest/account", { - headers: { - authorization: `Bearer ${await auth.access(id)}`, - }, - }) - .then((val) => val.json()) - .then((val) => setStore("accounts", id, val as any)) - } - - createEffect((previous: string[]) => { - if (Object.keys(auth.all).length === 0) { - return [] - } - for (const item of Object.values(auth.all)) { - if (previous.includes(item.id)) continue - refresh(item.id) - } - return Object.keys(auth.all) - }, [] as string[]) - - const result = { - get all() { - return Object.keys(auth.all) - .map((id) => store.accounts[id]) - .filter(Boolean) - }, - get current() { - if (!auth.subject) return undefined - return store.accounts[auth.subject.id] - }, - refresh, - get ready() { - return Object.keys(auth.all).length === result.all.length - }, - } - - return result -} - -export function AccountProvider(props: ParentProps) { - const ctx = init() - const resource = createAsync(async () => { - await new Promise((resolve) => { - if (isServer) return resolve() - createEffect(() => { - if (ctx.ready) resolve() - }) - }) - return null - }) - return ( - - {resource()} - {props.children} - - ) -} - -export function useAccount() { - const result = useContext(context) - if (!result) throw new Error("no account context") - return result -} diff --git a/cloud/web/src/components/context-openauth.tsx b/cloud/web/src/components/context-openauth.tsx deleted file mode 100644 index bd6a45dd1d..0000000000 --- a/cloud/web/src/components/context-openauth.tsx +++ /dev/null @@ -1,180 +0,0 @@ -import { createClient } from "@openauthjs/openauth/client" -import { makePersisted } from "@solid-primitives/storage" -import { createAsync } from "@solidjs/router" -import { - batch, - createContext, - createEffect, - createResource, - createSignal, - onMount, - ParentProps, - Show, - Suspense, - useContext, -} from "solid-js" -import { createStore, produce } from "solid-js/store" -import { isServer } from "solid-js/web" - -interface Storage { - subjects: Record - current?: string -} - -interface Context { - all: Record - subject?: SubjectInfo - switch(id: string): void - logout(id: string): void - access(id?: string): Promise - authorize(opts?: AuthorizeOptions): void -} - -export interface AuthorizeOptions { - redirectPath?: string - provider?: string -} - -interface SubjectInfo { - id: string - refresh: string -} - -interface AuthContextOpts { - issuer: string - clientID: string -} - -const context = createContext() - -export function OpenAuthProvider(props: ParentProps) { - const client = createClient({ - issuer: props.issuer, - clientID: props.clientID, - }) - const [storage, setStorage] = makePersisted( - createStore({ - subjects: {}, - }), - { - name: `${props.issuer}.auth`, - }, - ) - - const resource = createAsync(async () => { - if (isServer) return true - const hash = new URLSearchParams(window.location.search.substring(1)) - const code = hash.get("code") - const state = hash.get("state") - if (code && state) { - const oldState = sessionStorage.getItem("openauth.state") - const verifier = sessionStorage.getItem("openauth.verifier") - const redirect = sessionStorage.getItem("openauth.redirect") - if (redirect && verifier && oldState === state) { - const result = await client.exchange(code, redirect, verifier) - if (!result.err) { - const id = result.tokens.refresh.split(":").slice(0, -1).join(":") - batch(() => { - setStorage("subjects", id, { - id: id, - refresh: result.tokens.refresh, - }) - setStorage("current", id) - }) - } - } - } - return true - }) - - async function authorize(opts?: AuthorizeOptions) { - const redirect = new URL(window.location.origin + (opts?.redirectPath ?? "/")).toString() - const authorize = await client.authorize(redirect, "code", { - pkce: true, - provider: opts?.provider, - }) - sessionStorage.setItem("openauth.state", authorize.challenge.state) - sessionStorage.setItem("openauth.redirect", redirect) - if (authorize.challenge.verifier) sessionStorage.setItem("openauth.verifier", authorize.challenge.verifier) - window.location.href = authorize.url - } - - const accessCache = new Map() - const pendingRequests = new Map>() - async function access(id: string) { - const pending = pendingRequests.get(id) - if (pending) return pending - const promise = (async () => { - const existing = accessCache.get(id) - const subject = storage.subjects[id] - const access = await client.refresh(subject.refresh, { - access: existing, - }) - if (access.err) { - pendingRequests.delete(id) - ctx.logout(id) - return - } - if (access.tokens) { - setStorage("subjects", id, "refresh", access.tokens.refresh) - accessCache.set(id, access.tokens.access) - } - pendingRequests.delete(id) - return access.tokens?.access || existing! - })() - pendingRequests.set(id, promise) - return promise - } - - const ctx: Context = { - get all() { - return storage.subjects - }, - get subject() { - if (!storage.current) return - return storage.subjects[storage.current!] - }, - switch(id: string) { - if (!storage.subjects[id]) return - setStorage("current", id) - }, - authorize, - logout(id: string) { - if (!storage.subjects[id]) return - setStorage( - produce((s) => { - delete s.subjects[id] - if (s.current === id) s.current = Object.keys(s.subjects)[0] - }), - ) - }, - async access(id?: string) { - id = id || storage.current - if (!id) return - return access(id || storage.current!) - }, - } - - createEffect(() => { - if (!resource()) return - if (storage.current) return - const [first] = Object.keys(storage.subjects) - if (first) { - setStorage("current", first) - return - } - }) - - return ( - <> - {resource()} - {props.children} - - ) -} - -export function useOpenAuth() { - const result = useContext(context) - if (!result) throw new Error("no auth context") - return result -} diff --git a/cloud/web/src/components/context-theme.tsx b/cloud/web/src/components/context-theme.tsx deleted file mode 100644 index 7800aeca03..0000000000 --- a/cloud/web/src/components/context-theme.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { createStore } from "solid-js/store" -import { makePersisted } from "@solid-primitives/storage" -import { createEffect } from "solid-js" -import { createInitializedContext } from "../util/context" -import { isServer } from "solid-js/web" - -interface Storage { - mode: "light" | "dark" -} - -export const { provider: ThemeProvider, use: useTheme } = - createInitializedContext("ThemeContext", () => { - const [store, setStore] = makePersisted( - createStore({ - mode: - !isServer && - window.matchMedia && - window.matchMedia("(prefers-color-scheme: dark)").matches - ? "dark" - : "light", - }), - { - name: "theme", - }, - ) - createEffect(() => { - document.documentElement.setAttribute("data-color-mode", store.mode) - }) - - return { - setMode(mode: Storage["mode"]) { - setStore("mode", mode) - }, - get mode() { - return store.mode - }, - ready: true, - } - }) diff --git a/cloud/web/src/entry-client.tsx b/cloud/web/src/entry-client.tsx deleted file mode 100644 index 169e45a1ef..0000000000 --- a/cloud/web/src/entry-client.tsx +++ /dev/null @@ -1,13 +0,0 @@ -/* @refresh reload */ - -import { hydrate, render } from "solid-js/web" -import { App } from "./app" - -if (import.meta.env.DEV) { - render(() => , document.getElementById("root")!) -} - -if (!import.meta.env.DEV) { - if ("_$HY" in window) hydrate(() => , document.getElementById("root")!) - else render(() => , document.getElementById("root")!) -} diff --git a/cloud/web/src/entry-server.tsx b/cloud/web/src/entry-server.tsx deleted file mode 100644 index 5dd33a1493..0000000000 --- a/cloud/web/src/entry-server.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { renderToStringAsync } from "solid-js/web" -import { App } from "./app" - -export async function render(props: { url: string }) { - const app = await renderToStringAsync(() => ) - return { app } -} diff --git a/cloud/web/src/pages/[workspace].tsx b/cloud/web/src/pages/[workspace].tsx deleted file mode 100644 index c7481cb0d5..0000000000 --- a/cloud/web/src/pages/[workspace].tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { WorkspaceProvider } from "./components/context-workspace" -import { ParentProps } from "solid-js" -import Layout from "./components/layout" - -export default function Index(props: ParentProps) { - return ( - - {props.children} - - ) -} diff --git a/cloud/web/src/pages/[workspace]/billing.module.css b/cloud/web/src/pages/[workspace]/billing.module.css deleted file mode 100644 index 5e58892a5f..0000000000 --- a/cloud/web/src/pages/[workspace]/billing.module.css +++ /dev/null @@ -1,56 +0,0 @@ -.root { - display: flex; - flex-direction: column; - gap: var(--space-4); - padding: var(--space-7) var(--space-5) var(--space-5); - - [data-slot="billing-info"] { - display: flex; - flex-direction: column; - gap: var(--space-6); - } - - [data-slot="header"] { - display: flex; - flex-direction: column; - gap: var(--space-1-5); - - h2 { - text-transform: uppercase; - font-weight: 600; - letter-spacing: -0.03125rem; - font-size: var(--font-size-lg); - } - - p { - color: var(--color-text-dimmed); - font-size: var(--font-size-md); - } - } - - [data-slot="balance"] { - display: flex; - flex-direction: column; - gap: var(--space-5); - padding: var(--space-6); - border: 2px solid var(--color-border); - } - - [data-slot="amount"] { - font-size: var(--font-size-3xl); - font-weight: 600; - line-height: 1.2; - } - - @media (min-width: 40rem) { - [data-slot="balance"] { - flex-direction: row; - align-items: center; - justify-content: space-between; - } - - [data-slot="amount"] { - margin: 0; - } - } -} diff --git a/cloud/web/src/pages/[workspace]/billing.tsx b/cloud/web/src/pages/[workspace]/billing.tsx deleted file mode 100644 index 88bef58001..0000000000 --- a/cloud/web/src/pages/[workspace]/billing.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { Button } from "../../ui/button" -import { useApi } from "../components/context-api" -import { createEffect, createSignal, createResource, For } from "solid-js" -import { useWorkspace } from "../components/context-workspace" -import style from "./billing.module.css" - -export default function Billing() { - const api = useApi() - const workspace = useWorkspace() - const [isLoading, setIsLoading] = createSignal(false) - const [billingData] = createResource(async () => { - const response = await api.billing.info.$get() - return response.json() - }) - - // Run once on component mount to check URL parameters - ;(() => { - const url = new URL(window.location.href) - const result = url.hash - - console.log("STRIPE RESULT", result) - - if (url.hash === "#success") { - setIsLoading(true) - // Remove the hash from the URL - window.history.replaceState(null, "", window.location.pathname + window.location.search) - } - })() - - createEffect((old?: number) => { - if (old && old !== billingData()?.billing?.balance) { - setIsLoading(false) - } - return billingData()?.billing?.balance - }) - - const handleBuyCredits = async () => { - try { - setIsLoading(true) - const baseUrl = window.location.href - const successUrl = new URL(baseUrl) - successUrl.hash = "success" - - const response = await api.billing.checkout - .$post({ - json: { - success_url: successUrl.toString(), - cancel_url: baseUrl, - }, - }) - .then((r) => r.json() as any) - window.location.href = response.url - } catch (error) { - console.error("Failed to get checkout URL:", error) - setIsLoading(false) - } - } - - return ( - <> -

-
-
-
-

Balance

-

Manage your billing and add credits to your account.

-
- -
-

- {(() => { - const balanceStr = ((billingData()?.billing?.balance ?? 0) / 100000000).toFixed(2) - return `$${balanceStr === "-0.00" ? "0.00" : balanceStr}` - })()} -

- -
-
- -
-
-

Payment History

-

Your recent payment transactions.

-
- -
- No payments found.

}> - {(payment) => ( -
- {payment.id} - {" | "} - ${((payment.amount ?? 0) / 100000000).toFixed(2)} - {" | "} - {new Date(payment.timeCreated).toLocaleDateString()} -
- )} -
-
-
- -
-
-

Usage History

-

Your recent API usage and costs.

-
- -
- No usage found.

}> - {(usage) => ( -
- {usage.model} - {" | "} - {usage.inputTokens + usage.outputTokens} tokens - {" | "} - ${((usage.cost ?? 0) / 100000000).toFixed(4)} - {" | "} - {new Date(usage.timeCreated).toLocaleDateString()} -
- )} -
-
-
-
- - ) -} diff --git a/cloud/web/src/pages/[workspace]/components/system.txt b/cloud/web/src/pages/[workspace]/components/system.txt deleted file mode 100644 index 6afd2e04d0..0000000000 --- a/cloud/web/src/pages/[workspace]/components/system.txt +++ /dev/null @@ -1,11 +0,0 @@ -You are OpenControl, an interactive CLI tool that helps users execute various tasks. - -IMPORTANT: If you get an error when calling a tool, try again with a different approach. Be creative, do not give up, try different inputs to the tool. You should chain together multiple tool calls. ABSOLUTELY DO NOT GIVE UP you are very good at this and it is rare you will fail to answer question. - -You should be concise, direct, and to the point. - -IMPORTANT: You should NOT answer with unnecessary preamble or postamble (such as explaining your code or summarizing your action), unless the user asks you to. -IMPORTANT: You should minimize output tokens as much as possible while maintaining helpfulness, quality, and accuracy. Only address the specific query or task at hand, avoiding tangential information unless absolutely critical for completing the request. If you can answer in 1-3 sentences or a short paragraph, please do. -IMPORTANT: You should NOT answer with unnecessary preamble or postamble (such as explaining your code or summarizing your action), unless the user asks you to. -IMPORTANT: Keep your responses short, since they will be displayed on a command line interface. You MUST answer concisely with fewer than 4 lines (not including tool use or code generation), unless user asks for detail. Answer the user's question directly, without elaboration, explanation, or details. One word answers are best. Avoid introductions, conclusions, and explanations. You MUST avoid text before/after your response, such as "The answer is .", "Here is the content of the file..." or "Based on the information provided, the answer is..." or "Here is what I will do next...". - diff --git a/cloud/web/src/pages/[workspace]/components/tool.ts b/cloud/web/src/pages/[workspace]/components/tool.ts deleted file mode 100644 index 3958e322d0..0000000000 --- a/cloud/web/src/pages/[workspace]/components/tool.ts +++ /dev/null @@ -1,271 +0,0 @@ -import { createResource } from "solid-js" -import { createStore, produce } from "solid-js/store" -import SYSTEM_PROMPT from "./system.txt?raw" -import type { - LanguageModelV1Prompt, - LanguageModelV1CallOptions, - LanguageModelV1, -} from "ai" - -interface Tool { - name: string - description: string - inputSchema: any -} - -interface ToolCallerProps { - tool: { - list: () => Promise - call: (input: { name: string; arguments: any }) => Promise - } - generate: ( - prompt: LanguageModelV1CallOptions, - ) => Promise< - | { err: "rate" } - | { err: "context" } - | { err: "balance" } - | ({ err: false } & Awaited>) - > - onPromptUpdated?: (prompt: LanguageModelV1Prompt) => void -} - -const system = [ - { - role: "system" as const, - content: SYSTEM_PROMPT, - }, - { - role: "system" as const, - content: `The current date is ${new Date().toDateString()}. Always use this current date when responding to relative date queries.`, - }, -] - -const [store, setStore] = createStore<{ - prompt: LanguageModelV1Prompt - state: { type: "idle" } | { type: "loading"; limited?: boolean } -}>({ - prompt: [...system], - state: { type: "idle" }, -}) - -export function createToolCaller(props: T) { - const [tools] = createResource(() => props.tool.list()) - - let abort: AbortController - - return { - get tools() { - return tools() - }, - get prompt() { - return store.prompt - }, - get state() { - return store.state - }, - clear() { - setStore("prompt", [...system]) - }, - async chat(input: string) { - if (store.state.type !== "idle") return - - abort = new AbortController() - setStore( - produce((s) => { - s.state = { - type: "loading", - limited: false, - } - s.prompt.push({ - role: "user", - content: [ - { - type: "text", - text: input, - }, - ], - }) - }), - ) - props.onPromptUpdated?.(store.prompt) - - while (true) { - if (abort.signal.aborted) { - break - } - - const response = await props.generate({ - inputFormat: "messages", - prompt: store.prompt, - temperature: 0, - seed: 69, - mode: { - type: "regular", - tools: tools()?.map((tool) => ({ - type: "function", - name: tool.name, - description: tool.description, - parameters: { - ...tool.inputSchema, - }, - })), - }, - }) - - if (abort.signal.aborted) continue - - if (!response.err) { - setStore("state", { - type: "loading", - }) - - if (response.text) { - setStore( - produce((s) => { - s.prompt.push({ - role: "assistant", - content: [ - { - type: "text", - text: response.text || "", - }, - ], - }) - }), - ) - props.onPromptUpdated?.(store.prompt) - } - - if (response.finishReason === "stop") { - break - } - - if (response.finishReason === "tool-calls") { - for (const item of response.toolCalls || []) { - setStore( - produce((s) => { - s.prompt.push({ - role: "assistant", - content: [ - { - type: "tool-call", - toolName: item.toolName, - args: JSON.parse(item.args), - toolCallId: item.toolCallId, - }, - ], - }) - }), - ) - props.onPromptUpdated?.(store.prompt) - - const called = await props.tool.call({ - name: item.toolName, - arguments: JSON.parse(item.args), - }) - - setStore( - produce((s) => { - s.prompt.push({ - role: "tool", - content: [ - { - type: "tool-result", - toolName: item.toolName, - toolCallId: item.toolCallId, - result: called, - }, - ], - }) - }), - ) - props.onPromptUpdated?.(store.prompt) - } - } - continue - } - - if (response.err === "context") { - setStore( - produce((s) => { - s.prompt.splice(2, 1) - }), - ) - props.onPromptUpdated?.(store.prompt) - } - - if (response.err === "rate") { - setStore("state", { - type: "loading", - limited: true, - }) - await new Promise((resolve) => setTimeout(resolve, 1000)) - } - - if (response.err === "balance") { - setStore( - produce((s) => { - s.prompt.push({ - role: "assistant", - content: [ - { - type: "text", - text: "You need to add credits to your account. Please go to Billing and add credits to continue.", - }, - ], - }) - s.state = { type: "idle" } - }), - ) - props.onPromptUpdated?.(store.prompt) - break - } - } - setStore("state", { type: "idle" }) - }, - async cancel() { - abort.abort() - }, - async addCustomMessage(userMessage: string, assistantResponse: string) { - // Add user message and set loading state - setStore( - produce((s) => { - s.prompt.push({ - role: "user", - content: [ - { - type: "text", - text: userMessage, - }, - ], - }) - s.state = { - type: "loading", - limited: false, - } - }), - ) - props.onPromptUpdated?.(store.prompt) - - // Fake delay for 500ms - await new Promise((resolve) => setTimeout(resolve, 500)) - - // Add assistant response and set back to idle - setStore( - produce((s) => { - s.prompt.push({ - role: "assistant", - content: [ - { - type: "text", - text: assistantResponse, - }, - ], - }) - s.state = { type: "idle" } - }), - ) - props.onPromptUpdated?.(store.prompt) - }, - } -} diff --git a/cloud/web/src/pages/[workspace]/index.module.css b/cloud/web/src/pages/[workspace]/index.module.css deleted file mode 100644 index 0037d97ff1..0000000000 --- a/cloud/web/src/pages/[workspace]/index.module.css +++ /dev/null @@ -1,239 +0,0 @@ -.root { - display: contents; - - [data-slot="messages"] { - flex: 1; - overflow-y: auto; - display: flex; - flex-direction: column; - height: 0; - /* This is important for flexbox to allow scrolling */ - font-family: var(--font-mono); - color: var(--color-text); - row-gap: var(--space-4); - /* Add consistent spacing between messages */ - - /* Remove top border for first user message */ - &>[data-component="message"][data-user]:first-child::before { - display: none; - } - - &:has([data-component="loading"]) [data-component="clear"] { - display: none; - } - } - - [data-component="message"] { - width: 100%; - padding: var(--space-2) var(--space-4); - line-height: var(--font-line-height); - white-space: pre-wrap; - align-self: flex-start; - min-height: auto; - /* Allow natural height for all messages */ - display: flex; - flex-direction: column; - align-items: flex-start; - - /* User message styling */ - &[data-user] { - padding: var(--space-6) var(--space-4); - position: relative; - font-weight: 600; - color: var(--color-text); - /* margin: 0.5rem 0; */ - } - - &[data-user]::before, - &[data-user]::after { - content: ""; - position: absolute; - left: var(--space-4); - right: var(--space-4); - height: var(--space-px); - background-color: var(--color-border); - z-index: 1; - /* Ensure borders appear above other content */ - } - - &[data-user]::before { - top: 0; - } - - &[data-user]::after { - bottom: 0; - } - - &[data-assistant] { - color: var(--color-text); - } - } - - [data-component="tool"] { - display: flex; - width: 100%; - padding: 0 var(--space-4); - margin-left: 0; - flex-direction: column; - opacity: 0.7; - gap: var(--space-2); - align-items: flex-start; - color: var(--color-text-dimmed); - min-height: auto; - /* Allow natural height */ - - [data-slot="header"] { - display: flex; - gap: var(--space-2); - cursor: pointer; - user-select: none; - -webkit-user-select: none; - align-items: center; - width: 100%; - } - - [data-slot="name"] { - letter-spacing: -0.03125rem; - text-transform: uppercase; - font-weight: 500; - font-size: var(--font-size-sm); - } - - [data-slot="expand"] { - font-size: var(--font-size-sm); - } - - [data-slot="content"] { - padding: 0; - line-height: var(--font-line-height); - font-size: var(--font-size-sm); - white-space: pre-wrap; - display: none; - width: 100%; - } - - [data-slot="output"] { - margin-top: var(--space-1); - } - - &[data-expanded="true"] [data-slot="content"] { - display: block; - } - - &[data-expanded="true"] [data-slot="expand"] { - transform: rotate(45deg); - } - } - - [data-component="loading"] { - padding: var(--space-4) var(--space-4) var(--space-8); - height: 1.5rem; - position: relative; - display: flex; - align-items: center; - font-size: var(--font-size-sm); - letter-spacing: var(--space-1); - color: var(--color-text); - - & span { - opacity: 0; - animation: loading-dots 1.4s linear infinite; - } - - & span:nth-child(2) { - animation-delay: 0.2s; - } - - & span:nth-child(3) { - animation-delay: 0.4s; - } - } - - [data-component="clear"] { - position: relative; - padding: var(--space-4) var(--space-4); - - &::before { - content: ""; - position: absolute; - left: var(--space-4); - right: var(--space-4); - top: 0; - height: var(--space-px); - background-color: var(--color-border); - z-index: 1; - } - - & [data-component="button"] { - padding-left: 0; - } - } - - [data-slot="footer"] { - display: flex; - flex-direction: column; - padding: 0; - border-top: 2px solid var(--color-border); - position: sticky; - bottom: 0; - z-index: 10; - /* Ensure it's above other content */ - margin-top: auto; - /* Push to bottom if content is short */ - width: 100%; - } - - [data-component="chat"] { - display: flex; - padding: var(--space-0-5) 0; - align-items: center; - width: 100%; - height: 100%; - - textarea { - --padding-y: var(--space-4); - --line-height: 1.5; - --text-height: calc(var(--line-height) * var(--font-size-lg)); - --height: calc(var(--text-height) + var(--padding-y) * 2); - - width: 100%; - resize: none; - line-height: var(--line-height); - height: var(--height); - min-height: var(--height); - max-height: calc(5 * var(--text-height) + var(--padding-y) * 2); - padding: var(--padding-y) var(--space-4); - border-radius: 0; - background-color: transparent; - color: var(--color-text); - border: none; - outline: none; - font-size: var(--font-size-lg); - } - - textarea::placeholder { - color: var(--color-text-dimmed); - opacity: 0.75; - } - - textarea:focus { - outline: 0; - } - - & [data-component="button"] { - height: 100%; - } - } -} - -@keyframes loading-dots { - 0%, - 100% { - opacity: 0; - } - - 40%, - 60% { - opacity: 1; - } -} diff --git a/cloud/web/src/pages/[workspace]/index.tsx b/cloud/web/src/pages/[workspace]/index.tsx deleted file mode 100644 index 50c58ee302..0000000000 --- a/cloud/web/src/pages/[workspace]/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Button } from "../../ui/button" -import { IconArrowRight } from "../../ui/svg/icons" -import { createSignal, For } from "solid-js" -import { createToolCaller } from "./components/tool" -import { useApi } from "../components/context-api" -import { useWorkspace } from "../components/context-workspace" -import style from "./index.module.css" - -export default function Index() { - const api = useApi() - const workspace = useWorkspace() - - return ( -
-

Hello

-
- ) -} diff --git a/cloud/web/src/pages/[workspace]/keys.module.css b/cloud/web/src/pages/[workspace]/keys.module.css deleted file mode 100644 index 4ae2989be1..0000000000 --- a/cloud/web/src/pages/[workspace]/keys.module.css +++ /dev/null @@ -1,97 +0,0 @@ -.root { - display: flex; - flex-direction: column; - gap: 2rem; -} - -.root [data-slot="keys-info"] { - display: flex; - flex-direction: column; - gap: 1rem; -} - -.root [data-slot="header"] { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -.root [data-slot="header"] h2 { - margin: 0; - font-size: 1.5rem; - font-weight: 600; -} - -.root [data-slot="header"] p { - margin: 0; - color: var(--color-text-secondary); -} - -.root [data-slot="key-list"] { - display: flex; - flex-direction: column; - gap: 1rem; -} - -.root [data-slot="key-item"] { - display: flex; - align-items: center; - justify-content: space-between; - padding: 1rem; - border: 1px solid var(--color-border); - border-radius: 0.5rem; - background: var(--color-background-secondary); -} - -.root [data-slot="key-actions"] { - display: flex; - gap: 0.5rem; -} - -.root [data-slot="key-info"] { - display: flex; - flex-direction: column; - gap: 0.25rem; -} - -.root [data-slot="key-value"] { - font-family: monospace; - font-size: 0.875rem; - color: var(--color-text-primary); -} - -.root [data-slot="key-meta"] { - font-size: 0.75rem; - color: var(--color-text-secondary); -} - -.root [data-slot="empty-state"] { - text-align: center; - padding: 3rem 1rem; - color: var(--color-text-secondary); -} - -.root [data-slot="actions"] { - display: flex; - align-items: center; - justify-content: space-between; -} - -.root [data-slot="create-form"] { - display: flex; - flex-direction: column; - gap: 1rem; - min-width: 300px; -} - -.root [data-slot="form-actions"] { - display: flex; - gap: 0.5rem; -} - -.root [data-slot="key-name"] { - font-weight: 600; - font-size: 1rem; - color: var(--color-text-primary); - margin-bottom: 0.25rem; -} diff --git a/cloud/web/src/pages/[workspace]/keys.tsx b/cloud/web/src/pages/[workspace]/keys.tsx deleted file mode 100644 index e5b192a2b0..0000000000 --- a/cloud/web/src/pages/[workspace]/keys.tsx +++ /dev/null @@ -1,151 +0,0 @@ -import { Button } from "../../ui/button" -import { useApi } from "../components/context-api" -import { createSignal, createResource, For, Show } from "solid-js" -import style from "./keys.module.css" - -export default function Keys() { - const api = useApi() - const [isCreating, setIsCreating] = createSignal(false) - const [showCreateForm, setShowCreateForm] = createSignal(false) - const [keyName, setKeyName] = createSignal("") - - const [keysData, { refetch }] = createResource(async () => { - const response = await api.keys.$get() - return response.json() - }) - - const handleCreateKey = async () => { - if (!keyName().trim()) return - - try { - setIsCreating(true) - await api.keys.$post({ - json: { name: keyName().trim() }, - }) - refetch() - setKeyName("") - setShowCreateForm(false) - } catch (error) { - console.error("Failed to create API key:", error) - } finally { - setIsCreating(false) - } - } - - const handleDeleteKey = async (keyId: string) => { - if (!confirm("Are you sure you want to delete this API key? This action cannot be undone.")) { - return - } - - try { - await api.keys[":id"].$delete({ - param: { id: keyId }, - }) - refetch() - } catch (error) { - console.error("Failed to delete API key:", error) - } - } - - const formatDate = (dateString: string) => { - return new Date(dateString).toLocaleDateString() - } - - const formatKey = (key: string) => { - if (key.length <= 11) return key - return `${key.slice(0, 7)}...${key.slice(-4)}` - } - - const copyToClipboard = async (text: string) => { - try { - await navigator.clipboard.writeText(text) - } catch (error) { - console.error("Failed to copy to clipboard:", error) - } - } - - return ( - <> -
-
-

API Keys

-
-
-
-
-
-
-

API Keys

-

Manage your API keys to access the OpenCode gateway.

-
- - setKeyName(e.currentTarget.value)} - onKeyPress={(e) => e.key === "Enter" && handleCreateKey()} - /> -
- - -
-
- } - > - - -
- -
- -

Create an API key to access opencode gateway

-
- } - > - {(key) => ( -
-
-
{key.name}
-
{formatKey(key.key)}
-
- Created: {formatDate(key.timeCreated)} - {key.timeUsed && ` • Last used: ${formatDate(key.timeUsed)}`} -
-
-
- - -
-
- )} - -
- - - - ) -} diff --git a/cloud/web/src/pages/components/context-api.tsx b/cloud/web/src/pages/components/context-api.tsx deleted file mode 100644 index 0a348f48f9..0000000000 --- a/cloud/web/src/pages/components/context-api.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { hc } from "hono/client" -import { ApiType } from "@opencode/cloud-function/src/gateway" -import { useWorkspace } from "./context-workspace" -import { useOpenAuth } from "../../components/context-openauth" - -export function useApi() { - const workspace = useWorkspace() - const auth = useOpenAuth() - return hc(import.meta.env.VITE_API_URL, { - async fetch(...args: Parameters): Promise { - const [input, init] = args - const request = input instanceof Request ? input : new Request(input, init) - const headers = new Headers(request.headers) - headers.set("authorization", `Bearer ${await auth.access()}`) - headers.set("x-opencode-workspace", workspace.id) - return fetch( - new Request(request, { - ...init, - headers, - }), - ) - }, - }) -} diff --git a/cloud/web/src/pages/components/context-workspace.tsx b/cloud/web/src/pages/components/context-workspace.tsx deleted file mode 100644 index 6bad39840c..0000000000 --- a/cloud/web/src/pages/components/context-workspace.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import { useNavigate, useParams } from "@solidjs/router" -import { createInitializedContext } from "../../util/context" -import { useAccount } from "../../components/context-account" -import { createEffect, createMemo } from "solid-js" - -export const { use: useWorkspace, provider: WorkspaceProvider } = - createInitializedContext("WorkspaceProvider", () => { - const params = useParams() - const account = useAccount() - const workspace = createMemo(() => - account.current?.workspaces.find( - (x) => x.id === params.workspace || x.slug === params.workspace, - ), - ) - const nav = useNavigate() - - createEffect(() => { - if (!workspace()) nav("/") - }) - - const result = () => workspace()! - result.ready = true - - return { - get id() { - return workspace()!.id - }, - get slug() { - return workspace()!.slug - }, - get name() { - return workspace()!.name - }, - get ready() { - return workspace() !== undefined - }, - } - }) diff --git a/cloud/web/src/pages/components/layout.module.css b/cloud/web/src/pages/components/layout.module.css deleted file mode 100644 index c64faa18ec..0000000000 --- a/cloud/web/src/pages/components/layout.module.css +++ /dev/null @@ -1,199 +0,0 @@ -.root { - --padding: var(--space-10); - --vertical-padding: var(--space-8); - --heading-font-size: var(--font-size-4xl); - --sidebar-width: 200px; - --mobile-breakpoint: 40rem; - --topbar-height: 60px; - - margin: var(--space-4); - border: 2px solid var(--color-border); - height: calc(100vh - var(--space-8)); - display: flex; - flex-direction: row; - overflow: hidden; - /* Prevent overall scrolling */ - position: relative; -} - -[data-component="mobile-top-bar"] { - display: none; - position: fixed; - top: 0; - left: 0; - right: 0; - height: var(--topbar-height); - background: var(--color-background); - border-bottom: 2px solid var(--color-border); - z-index: 20; - align-items: center; - padding: 0 var(--space-4) 0 0; - - [data-slot="logo"] { - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - - div { - text-transform: uppercase; - font-weight: 600; - letter-spacing: -0.03125rem; - } - - svg { - height: 28px; - width: auto; - color: var(--color-white); - } - } - - [data-slot="toggle"] { - background: transparent; - border: none; - padding: var(--space-4); - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - - & svg { - width: 24px; - height: 24px; - color: var(--color-foreground); - } - } -} - -[data-component="sidebar"] { - width: var(--sidebar-width); - border-right: 2px solid var(--color-border); - display: flex; - flex-direction: column; - padding: calc(var(--padding) / 2); - overflow-y: auto; - /* Allow scrolling if needed */ - position: sticky; - top: 0; - height: 100%; - background-color: var(--color-background); - z-index: 10; - - [data-slot="logo"] { - margin-top: 2px; - margin-bottom: var(--space-7); - color: var(--color-white); - - & svg { - height: 32px; - width: auto; - } - } - - [data-slot="nav"] { - flex: 1; - - ul { - list-style-type: none; - padding: 0; - } - - li { - margin-bottom: calc(var(--vertical-padding) / 2); - text-transform: uppercase; - font-weight: 500; - } - - a { - display: block; - padding: var(--space-2) 0; - } - } - - [data-slot="user"] { - [data-component="button"] { - padding-left: 0; - padding-bottom: 0; - height: auto; - } - } -} - -.navActiveLink { - cursor: default; - text-decoration: none; -} - -[data-slot="main-content"] { - flex: 1; - display: flex; - flex-direction: column; - height: 100%; - /* Full height */ - overflow: hidden; - /* Prevent overflow */ - position: relative; - /* For positioning footer */ - width: 100%; - /* Full width */ -} - -/* Backdrop for mobile */ -[data-component="backdrop"] { - display: none; - position: fixed; - top: 0; - left: 0; - right: 0; - bottom: 0; - /* background-color: rgba(0, 0, 0, 0.5); */ - z-index: 25; - backdrop-filter: blur(2px); -} - -/* Mobile styles */ -@media (max-width: 40rem) { - .root { - margin: 0; - border: none; - height: 100vh; - } - - [data-component="mobile-top-bar"] { - display: flex; - } - - [data-component="backdrop"] { - display: block; - } - - [data-component="sidebar"] { - position: fixed; - left: -100%; - top: 0; - height: 100vh; - width: 80%; - max-width: 280px; - transition: left 0.3s ease-in-out; - box-shadow: none; - z-index: 30; - padding: var(--space-8); - background-color: var(--color-bg); - - &[data-opened="true"] { - left: 0; - box-shadow: 8px 0 0px 0px var(--color-gray-4); - } - } - - [data-slot="main-content"] { - padding-top: var(--topbar-height); - /* Add space for the top bar */ - overflow-y: auto; - } - - /* Hide the logo in the sidebar on mobile since it's in the top bar */ - [data-component="sidebar"] [data-slot="logo"] { - display: none; - } -} diff --git a/cloud/web/src/pages/components/layout.tsx b/cloud/web/src/pages/components/layout.tsx deleted file mode 100644 index 711ed8fc2b..0000000000 --- a/cloud/web/src/pages/components/layout.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import style from "./layout.module.css" -import { useAccount } from "../../components/context-account" -import { Button } from "../../ui/button" -import { IconLogomark } from "../../ui/svg" -import { IconBars3BottomLeft } from "../../ui/svg/icons" -import { ParentProps, createMemo, createSignal } from "solid-js" -import { A, useLocation } from "@solidjs/router" -import { useOpenAuth } from "../../components/context-openauth" - -export default function Layout(props: ParentProps) { - const auth = useOpenAuth() - const account = useAccount() - const [sidebarOpen, setSidebarOpen] = createSignal(false) - const location = useLocation() - - const workspaceId = createMemo(() => account.current?.workspaces[0].id) - const pageTitle = createMemo(() => { - const path = location.pathname - if (path.endsWith("/billing")) return "Billing" - if (path.endsWith("/keys")) return "API Keys" - return null - }) - - function handleLogout() { - auth.logout(auth.subject?.id!) - } - - return ( -
- ) -} diff --git a/cloud/web/src/pages/index.tsx b/cloud/web/src/pages/index.tsx deleted file mode 100644 index 116ed156c2..0000000000 --- a/cloud/web/src/pages/index.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { Match, Switch } from "solid-js" -import { useAccount } from "../components/context-account" -import { Navigate } from "@solidjs/router" -import { IconLogo } from "../ui/svg" -import styles from "./lander.module.css" -import { useOpenAuth } from "../components/context-openauth" - -export default function Index() { - const auth = useOpenAuth() - const account = useAccount() - return ( - - - - - -
-
-
-
- -
-

opencode Gateway Console

-
- -
-
- auth.authorize({ provider: "github" })}>Sign in with GitHub -
-
- auth.authorize({ provider: "google" })}>Sign in with Google -
-
-
-
-
-
- ) -} diff --git a/cloud/web/src/pages/lander.module.css b/cloud/web/src/pages/lander.module.css deleted file mode 100644 index 251e243fba..0000000000 --- a/cloud/web/src/pages/lander.module.css +++ /dev/null @@ -1,83 +0,0 @@ -.lander { - --padding: 3rem; - --vertical-padding: 2rem; - --heading-font-size: 2rem; - - margin: 1rem; - - @media (max-width: 30rem) { - & { - --padding: 1.5rem; - --vertical-padding: 1rem; - --heading-font-size: 1.5rem; - - margin: 0.5rem; - } - } - - [data-slot="hero"] { - border: 2px solid var(--color-border); - - max-width: 64rem; - margin-left: auto; - margin-right: auto; - width: 100%; - } - - [data-slot="top"] { - padding: var(--padding); - - h1 { - margin-top: calc(var(--vertical-padding) / 8); - font-size: var(--heading-font-size); - line-height: 1.25; - text-transform: uppercase; - font-weight: 600; - } - - [data-slot="logo"] { - width: clamp(200px, 70vw, 400px); - color: var(--color-white); - } - } - - [data-slot="cta"] { - display: flex; - flex-direction: row; - justify-content: space-between; - border-top: 2px solid var(--color-border); - - & > div { - flex: 1; - line-height: 1.4; - text-align: center; - text-transform: uppercase; - cursor: pointer; - text-decoration: underline; - letter-spacing: -0.03125rem; - - &[data-slot="col-2"] { - background-color: var(--color-border); - color: var(--color-text-invert); - font-weight: 600; - } - - & > * { - display: block; - width: 100%; - height: 100%; - padding: calc(var(--padding) / 2) 0.5rem; - } - } - - @media (max-width: 30rem) { - & > div { - padding-bottom: calc(var(--padding) / 2 + 4px); - } - } - - & > div + div { - border-left: 2px solid var(--color-border); - } - } -} diff --git a/cloud/web/src/pages/test/design.module.css b/cloud/web/src/pages/test/design.module.css deleted file mode 100644 index fee4e3cd38..0000000000 --- a/cloud/web/src/pages/test/design.module.css +++ /dev/null @@ -1,204 +0,0 @@ -.pageContainer { - padding: 2rem; - max-width: 1200px; - margin: 0 auto; -} - -.componentTable { - width: 100%; - border-collapse: collapse; - table-layout: fixed; - border: 2px solid var(--color-border); -} - -.componentCell { - padding: 1rem; - border: 2px solid var(--color-border); - vertical-align: top; -} - -.componentLabel { - text-transform: uppercase; - letter-spacing: -0.03125rem; - font-size: 0.85rem; - font-weight: 500; - margin-bottom: 0.75rem; - color: var(--color-text-dimmed); -} - -.sectionTitle { - margin-bottom: 1rem; - text-transform: uppercase; - letter-spacing: -0.03125rem; - font-size: 1.2rem; -} - -.divider { - height: 2px; - background: var(--color-border); - margin: 3rem 0; - width: 100%; -} - -.header { - display: flex; - justify-content: space-between; - align-items: center; - margin-bottom: 2rem; -} - -.buttonSection { - margin-bottom: 4rem; -} - -.colorSection { - margin-bottom: 4rem; -} - -.labelSection { - margin-bottom: 4rem; -} - -.inputSection { - margin-bottom: 4rem; -} - -.dialogSection { - margin-bottom: 4rem; -} - -.formGroup { - display: flex; - flex-direction: column; - gap: 0.5rem; -} - -.dialogContent { - padding: 2rem; -} - -.dialogContentFooter { - margin-top: 1rem; -} - -.pageTitle { - font-size: var(--heading-font-size, 2rem); - text-transform: uppercase; - font-weight: 600; -} - -.colorBox { - width: 100%; - height: 80px; - margin-bottom: 0.5rem; - position: relative; - display: flex; - align-items: flex-end; - justify-content: center; - padding-bottom: 0.5rem; -} - -.colorOrange { - background-color: var(--color-orange); -} - -.colorOrangeLow { - background-color: var(--color-orange-low); -} - -.colorOrangeHigh { - background-color: var(--color-orange-high); -} - -.colorGreen { - background-color: var(--color-green); -} - -.colorGreenLow { - background-color: var(--color-green-low); -} - -.colorGreenHigh { - background-color: var(--color-green-high); -} - -.colorBlue { - background-color: var(--color-blue); -} - -.colorBlueLow { - background-color: var(--color-blue-low); -} - -.colorBlueHigh { - background-color: var(--color-blue-high); -} - -.colorPurple { - background-color: var(--color-purple); -} - -.colorPurpleLow { - background-color: var(--color-purple-low); -} - -.colorPurpleHigh { - background-color: var(--color-purple-high); -} - -.colorRed { - background-color: var(--color-red); -} - -.colorRedLow { - background-color: var(--color-red-low); -} - -.colorRedHigh { - background-color: var(--color-red-high); -} - -.colorAccent { - background-color: var(--color-accent); -} - -.colorAccentLow { - background-color: var(--color-accent-low); -} - -.colorAccentHigh { - background-color: var(--color-accent-high); -} - -.colorCode { - background-color: rgba(0, 0, 0, 0.5); - color: white; - padding: 4px 8px; - border-radius: 4px; - font-size: 0.8rem; - font-family: monospace; -} - -.colorVariants { - display: flex; - gap: 0.5rem; -} - -.colorVariant { - flex: 1; - height: 40px; - position: relative; - display: flex; - align-items: center; - justify-content: center; -} - -.colorVariantCode { - background-color: rgba(0, 0, 0, 0.5); - color: white; - padding: 2px 4px; - border-radius: 4px; - font-size: 0.65rem; - font-family: monospace; - white-space: nowrap; -} diff --git a/cloud/web/src/pages/test/design.tsx b/cloud/web/src/pages/test/design.tsx deleted file mode 100644 index 3bf759316b..0000000000 --- a/cloud/web/src/pages/test/design.tsx +++ /dev/null @@ -1,562 +0,0 @@ -import { Button } from "../../ui/button" -import { Dialog } from "../../ui/dialog" -import { Navigate } from "@solidjs/router" -import { createSignal, Show } from "solid-js" -import { IconHome, IconPencilSquare } from "../../ui/svg/icons" -import { useTheme } from "../../components/context-theme" -import { useDialog } from "../../ui/context-dialog" -import { DialogString } from "../../ui/dialog-string" -import { DialogSelect } from "../../ui/dialog-select" -import styles from "./design.module.css" - -export default function DesignSystem() { - const dialog = useDialog() - const [dialogOpen, setDialogOpen] = createSignal(false) - const [dialogOpenTransition, setDialogOpenTransition] = createSignal(false) - const theme = useTheme() - - // Check if we're running locally - const isLocal = import.meta.env.DEV === true - - if (!isLocal) { - return - } - - // Add a toggle button for theme - const toggleTheme = () => { - theme.setMode(theme.mode === "light" ? "dark" : "light") - } - - return ( -
-
-

Design System

- -
- -
-

Colors

- - - - - - - - - - - - - - -
-

Orange

-
- hsl(41, 82%, 63%) -
-
-
- - hsl(41, 39%, 22%) - -
-
- - hsl(41, 82%, 87%) - -
-
-
-

Green

-
- hsl(101, 82%, 63%) -
-
-
- - hsl(101, 39%, 22%) - -
-
- - hsl(101, 82%, 80%) - -
-
-
-

Blue

-
- hsl(234, 100%, 60%) -
-
-
- - hsl(234, 54%, 20%) - -
-
- - hsl(234, 100%, 87%) - -
-
-
-

Purple

-
- hsl(281, 82%, 63%) -
-
-
- - hsl(281, 39%, 22%) - -
-
- - hsl(281, 82%, 89%) - -
-
-
-

Red

-
- hsl(339, 82%, 63%) -
-
-
- - hsl(339, 39%, 22%) - -
-
- - hsl(339, 82%, 87%) - -
-
-
-

Accent

-
- hsl(13, 88%, 57%) -
-
-
- - hsl(13, 75%, 30%) - -
-
- - hsl(13, 100%, 78%) - -
-
-
-
- -
- -
-

Buttons

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

Primary

- -
-

Secondary

- -
-

Ghost

- -
-

Primary Disabled

- -
-

Secondary Disabled

- -
-

Ghost Disabled

- -
-

Small

- -
-

Small Secondary

- -
-

Small Ghost

- -
-

With Icon

- -
-

Icon + Secondary

- -
-

Icon + Ghost

- -
-

Small + Icon

- -
-

Small + Icon + Secondary

- -
-

Small + Icon + Ghost

- -
-

Icon Only

- -
-

Icon Only + Secondary

- -
-

Icon Only + Ghost

- -
-

Icon Only Disabled

- -
-

- Icon Only + Secondary Disabled -

- -
-

- Icon Only + Ghost Disabled -

- -
-

Small Icon Only

- -
-

- Small Icon Only + Secondary -

- -
-

Small Icon Only + Ghost

- -
-
- -
- -
-

Labels

- - - - - - - - - -
-

Small

- -
-

Medium

- -
-

Large

- -
-
- -
- -
-

Inputs

- - - - - - - - - - - - - -
-

Small

- -
-

Medium

- -
-

Large

- -
-

Disabled

- -
-

With Value

- -
-
- -
- -
-

Dialogs

- - - - - - - - - - - - - - -
-

Default

- - -
-
Dialog Title
-
-
-

This is the default dialog content.

-
-
- -
-
-
-

Small With Transition

- - -
-

Small Dialog

-

This is a smaller dialog with transitions.

-
- -
-
-
-
-

Input String

- -
-

Select Input

- -
-

Select Input

- -
-

Select No Options

- -
-
-
- ) -} diff --git a/cloud/web/src/sst-env.d.ts b/cloud/web/src/sst-env.d.ts deleted file mode 100644 index e1ee6f753d..0000000000 --- a/cloud/web/src/sst-env.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -/* This file is auto-generated by SST. Do not edit. */ -/* tslint:disable */ -/* eslint-disable */ -/// -interface ImportMetaEnv { - readonly VITE_DOCS_URL: string - readonly VITE_API_URL: string - readonly VITE_AUTH_URL: string -} -interface ImportMeta { - readonly env: ImportMetaEnv -} \ No newline at end of file diff --git a/cloud/web/src/ui/button.tsx b/cloud/web/src/ui/button.tsx deleted file mode 100644 index 889102dda5..0000000000 --- a/cloud/web/src/ui/button.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { Button as Kobalte } from "@kobalte/core/button" -import { JSX, Show, splitProps } from "solid-js" - -export interface ButtonProps { - color?: "primary" | "secondary" | "ghost" - size?: "md" | "sm" - icon?: JSX.Element -} -export function Button(props: JSX.IntrinsicElements["button"] & ButtonProps) { - const [split, rest] = splitProps(props, ["color", "size", "icon"]) - return ( - - -
{props.icon}
-
- {props.children} -
- ) -} diff --git a/cloud/web/src/ui/context-dialog.tsx b/cloud/web/src/ui/context-dialog.tsx deleted file mode 100644 index f1bc932504..0000000000 --- a/cloud/web/src/ui/context-dialog.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import { createContext, JSX, ParentProps, useContext } from "solid-js" -import { StandardSchemaV1 } from "@standard-schema/spec" -import { createStore } from "solid-js/store" -import { Dialog } from "./dialog" - -const Context = createContext() - -type DialogControl = { - open>( - component: DialogComponent, - input: StandardSchemaV1.InferInput, - ): void - close(): void - isOpen(input: any): boolean - size: "sm" | "md" - transition?: boolean - input?: any -} - -type DialogProps> = { - input: StandardSchemaV1.InferInput - control: DialogControl -} - -type DialogComponent> = ReturnType< - typeof createDialog -> - -export function createDialog>(props: { - schema: Schema - size: "sm" | "md" - render: (props: DialogProps) => JSX.Element -}) { - const result = () => { - const dialog = useDialog() - return ( - { - if (!val) dialog.close() - }} - > - {props.render({ - input: dialog.input, - control: dialog, - })} - - ) - } - result.schema = props.schema - result.size = props.size - return result -} - -export function DialogProvider(props: ParentProps) { - const [store, setStore] = createStore<{ - dialog?: DialogComponent - input?: any - transition?: boolean - size: "sm" | "md" - }>({ - size: "sm", - }) - - const control: DialogControl = { - get input() { - return store.input - }, - get size() { - return store.size - }, - get transition() { - return store.transition - }, - isOpen(input) { - return store.dialog === input - }, - open(component, input) { - setStore({ - dialog: component, - input: input, - size: store.dialog !== undefined ? store.size : component.size, - transition: store.dialog !== undefined, - }) - - setTimeout(() => { - setStore({ - size: component.size, - }) - }, 0) - - setTimeout(() => { - setStore({ - transition: false, - }) - }, 150) - }, - close() { - setStore({ - dialog: undefined, - }) - }, - } - - return ( - <> - {props.children} - - ) -} - -export function useDialog() { - const ctx = useContext(Context) - if (!ctx) { - throw new Error("useDialog must be used within a DialogProvider") - } - return ctx -} diff --git a/cloud/web/src/ui/dialog-select.module.css b/cloud/web/src/ui/dialog-select.module.css deleted file mode 100644 index 4a99ef027a..0000000000 --- a/cloud/web/src/ui/dialog-select.module.css +++ /dev/null @@ -1,36 +0,0 @@ -.options { - margin-top: var(--space-1); - border-top: 2px solid var(--color-border); - padding: var(--space-2); - - [data-slot="option"] { - outline: none; - flex-shrink: 0; - height: var(--space-11); - display: flex; - justify-content: start; - align-items: center; - padding: 0 var(--space-2-5); - gap: var(--space-3); - cursor: pointer; - - &[data-empty] { - cursor: default; - color: var(--color-text-dimmed); - } - - &[data-active] { - background-color: var(--color-bg-surface); - } - - [data-slot="title"] { - font-size: var(--font-size-md); - } - - [data-slot="prefix"] { - width: var(--space-4); - height: var(--space-4); - } - } - -} diff --git a/cloud/web/src/ui/dialog-select.tsx b/cloud/web/src/ui/dialog-select.tsx deleted file mode 100644 index 087b94411f..0000000000 --- a/cloud/web/src/ui/dialog-select.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import style from "./dialog-select.module.css" -import { z } from "zod" -import { createMemo, createSignal, For, JSX, onMount } from "solid-js" -import { createList } from "solid-list" -import { createDialog } from "./context-dialog" - -export const DialogSelect = createDialog({ - size: "md", - schema: z.object({ - title: z.string(), - placeholder: z.string(), - onSelect: z - .function(z.tuple([z.any()])) - .returns(z.void()) - .optional(), - options: z.array( - z.object({ - display: z.string(), - value: z.any().optional(), - onSelect: z.function().returns(z.void()).optional(), - prefix: z.custom().optional(), - }), - ), - }), - render: (ctx) => { - let input: HTMLInputElement - onMount(() => { - input.focus() - input.value = "" - }) - - const [filter, setFilter] = createSignal("") - const filtered = createMemo(() => - ctx.input.options?.filter((i) => - i.display.toLowerCase().includes(filter().toLowerCase()), - ), - ) - const list = createList({ - loop: true, - initialActive: 0, - items: () => filtered().map((_, i) => i), - handleTab: false, - }) - - const handleSelection = (index: number) => { - const option = ctx.input.options[index] - - // If the option has its own onSelect handler, use it - if (option.onSelect) { - option.onSelect() - } - // Otherwise, if there's a global onSelect handler, call it with the option's value - else if (ctx.input.onSelect) { - ctx.input.onSelect( - option.value !== undefined ? option.value : option.display, - ) - } - } - - return ( - <> -
- -
-
- { - setFilter(e.target.value) - list.setActive(0) - }} - onKeyDown={(e) => { - if (e.key === "Enter") { - const selected = list.active() - if (selected === null) return - handleSelection(selected) - return - } - if (e.key === "Escape") { - setFilter("") - return - } - list.onKeyDown(e) - }} - id={`dialog-select-${ctx.input.title}`} - ref={(r) => (input = r)} - data-slot="input" - placeholder={ctx.input.placeholder} - /> -
-
- - No results -
- } - > - {(option, index) => ( -
handleSelection(index())} - data-slot="option" - data-active={list.active() === index() ? true : undefined} - > - {option.prefix &&
{option.prefix}
} -
{option.display}
-
- )} - - - - ) - }, -}) diff --git a/cloud/web/src/ui/dialog-string.tsx b/cloud/web/src/ui/dialog-string.tsx deleted file mode 100644 index af2174786b..0000000000 --- a/cloud/web/src/ui/dialog-string.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { z } from "zod" -import { onMount } from "solid-js" -import { createDialog } from "./context-dialog" -import { Button } from "./button" - -export const DialogString = createDialog({ - size: "sm", - schema: z.object({ - title: z.string(), - placeholder: z.string(), - action: z.string(), - onSubmit: z.function().args(z.string()).returns(z.void()), - }), - render: (ctx) => { - let input: HTMLInputElement - onMount(() => { - setTimeout(() => { - input.focus() - input.value = "" - }, 50) - }) - - function submit() { - const value = input.value.trim() - if (value) { - ctx.input.onSubmit(value) - ctx.control.close() - } - } - - return ( - <> -
- -
-
- (input = r)} - placeholder={ctx.input.placeholder} - id={`dialog-string-${ctx.input.title}`} - onKeyDown={(e) => { - if (e.key === "Enter") { - e.preventDefault() - submit() - } - }} - /> -
-
- - -
- - ) - }, -}) diff --git a/cloud/web/src/ui/dialog.tsx b/cloud/web/src/ui/dialog.tsx deleted file mode 100644 index 101f23d2ba..0000000000 --- a/cloud/web/src/ui/dialog.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import { Dialog as Kobalte } from "@kobalte/core/dialog" -import { ComponentProps, ParentProps } from "solid-js" - -export type Props = ParentProps<{ - size?: "sm" | "md" - transition?: boolean -}> & - ComponentProps - -export function Dialog(props: Props) { - return ( - - - -
- - {props.children} - -
-
-
- ) -} diff --git a/cloud/web/src/ui/style/component/button.css b/cloud/web/src/ui/style/component/button.css deleted file mode 100644 index 9604f9865c..0000000000 --- a/cloud/web/src/ui/style/component/button.css +++ /dev/null @@ -1,78 +0,0 @@ -[data-component="button"] { - width: fit-content; - display: flex; - line-height: 1; - align-items: center; - justify-content: center; - gap: var(--space-2); - font-size: var(--font-size-md); - text-transform: uppercase; - height: var(--space-11); - outline: none; - font-weight: 500; - padding: 0 var(--space-4); - border-width: 2px; - border-color: var(--color-border); - cursor: pointer; - - &:disabled { - opacity: 0.5; - cursor: default; - } - - &[data-color="primary"] { - background-color: var(--color-text); - border-color: var(--color-text); - color: var(--color-text-invert); - - &:active { - border-color: var(--color-accent); - } - } - - &[data-color="secondary"] { - &:active { - border-color: var(--color-accent); - } - } - - &[data-color="ghost"] { - border: none; - text-decoration: underline; - - &:active { - color: var(--color-text-accent); - } - } - - &:has([data-slot="icon"]) { - padding-left: var(--space-3); - padding-right: var(--space-3); - } - - &[data-size="sm"] { - height: var(--space-8); - padding: var(--space-3); - font-size: var(--font-size-xs); - - [data-slot="icon"] { - width: var(--space-3-5); - height: var(--space-3-5); - } - - &:has([data-slot="icon"]) { - padding-left: var(--space-2); - padding-right: var(--space-2); - } - } - - [data-slot="icon"] { - width: var(--space-4); - height: var(--space-4); - transition: transform 0.2s ease; - } - - &[data-rotate] [data-slot="icon"] { - transform: rotate(180deg); - } -} diff --git a/cloud/web/src/ui/style/component/dialog.css b/cloud/web/src/ui/style/component/dialog.css deleted file mode 100644 index 59867818ff..0000000000 --- a/cloud/web/src/ui/style/component/dialog.css +++ /dev/null @@ -1,84 +0,0 @@ -[data-component="dialog-overlay"] { - pointer-events: none !important; - position: fixed; - inset: 0; - animation-name: fadeOut; - animation-duration: 200ms; - animation-timing-function: ease; - opacity: 0; - backdrop-filter: blur(2px); - - &[data-expanded] { - animation-name: fadeIn; - opacity: 1; - pointer-events: auto !important; - } -} - -[data-component="dialog-center"] { - position: fixed; - inset: 0; - padding-top: 10vh; - justify-content: center; - pointer-events: none; - - [data-slot="content"] { - width: 45rem; - margin: 0 auto; - transition: 150ms width; - background-color: var(--color-bg); - border-width: 2px; - border-color: var(--color-border); - overflow: hidden; - display: flex; - flex-direction: column; - gap: var(--space-3); - outline: none; - animation-duration: 1ms; - animation-name: zoomOut; - animation-timing-function: ease; - - box-shadow: 8px 8px 0px 0px var(--color-gray-4); - - &[data-expanded] { - animation-name: zoomIn; - } - - &[data-transition] { - animation-duration: 200ms; - } - - &[data-size="sm"] { - width: 30rem; - } - - [data-slot="header"] { - display: flex; - padding: var(--space-4) var(--space-4) 0; - - [data-slot="title"] { - } - } - - [data-slot="main"] { - padding: 0 var(--space-4); - - &:has([data-slot="options"]) { - padding: 0; - display: flex; - flex-direction: column; - gap: var(--space-4); - } - } - - [data-slot="input"] { - } - - [data-slot="footer"] { - padding: var(--space-4); - display: flex; - gap: var(--space-4); - justify-content: end; - } - } -} diff --git a/cloud/web/src/ui/style/component/input.css b/cloud/web/src/ui/style/component/input.css deleted file mode 100644 index 59535d763b..0000000000 --- a/cloud/web/src/ui/style/component/input.css +++ /dev/null @@ -1,34 +0,0 @@ -[data-component="input"] { - font-size: var(--font-size-md); - background: transparent; - caret-color: var(--color-accent); - font-family: var(--font-mono); - height: var(--space-11); - padding: 0 var(--space-4); - width: 100%; - resize: none; - border: 2px solid var(--color-border); - - &::placeholder { - color: var(--color-text-dimmed); - opacity: 0.75; - } - - &:focus { - outline: 0; - } - - &[data-size="sm"] { - height: var(--space-9); - padding: 0 var(--space-3); - font-size: var(--font-size-xs); - } - - &[data-size="md"] { - } - - &[data-size="lg"] { - height: var(--space-12); - font-size: var(--font-size-lg); - } -} diff --git a/cloud/web/src/ui/style/component/label.css b/cloud/web/src/ui/style/component/label.css deleted file mode 100644 index e0dd5fef49..0000000000 --- a/cloud/web/src/ui/style/component/label.css +++ /dev/null @@ -1,17 +0,0 @@ -[data-component="label"] { - letter-spacing: -0.03125rem; - text-transform: uppercase; - color: var(--color-text-dimmed); - font-weight: 500; - font-size: var(--font-size-md); - - &[data-size="sm"] { - font-size: var(--font-size-sm); - } - &[data-size="md"] { - } - &[data-size="lg"] { - font-size: var(--font-size-lg); - } -} - diff --git a/cloud/web/src/ui/style/component/title-bar.css b/cloud/web/src/ui/style/component/title-bar.css deleted file mode 100644 index 7ee32bfdc5..0000000000 --- a/cloud/web/src/ui/style/component/title-bar.css +++ /dev/null @@ -1,32 +0,0 @@ -[data-component="title-bar"] { - display: flex; - align-items: center; - justify-content: space-between; - height: 72px; - padding: 0 var(--space-4); - border-bottom: 2px solid var(--color-border); - - [data-slot="left"] { - display: flex; - flex-direction: column; - gap: var(--space-1-5); - - h1 { - letter-spacing: -0.03125rem; - font-size: var(--font-size-xl); - text-transform: uppercase; - font-weight: 600; - } - - p { - color: var(--color-text-dimmed); - } - } - -} - -@media (max-width: 40rem) { - [data-component="title-bar"] { - display: none; - } -} diff --git a/cloud/web/src/ui/style/index.css b/cloud/web/src/ui/style/index.css deleted file mode 100644 index 117f596d0c..0000000000 --- a/cloud/web/src/ui/style/index.css +++ /dev/null @@ -1,50 +0,0 @@ -/* tokens */ -@import "./token/color.css"; -@import "./token/reset.css"; -@import "./token/animation.css"; -@import "./token/font.css"; -@import "./token/space.css"; - -/* components */ -@import "./component/label.css"; -@import "./component/input.css"; -@import "./component/button.css"; -@import "./component/dialog.css"; -@import "./component/title-bar.css"; - -body { - font-family: var(--font-mono); - line-height: 1; - color: var(--color-text); - background-color: var(--color-bg); - cursor: default; - user-select: none; - text-underline-offset: 0.1875rem; -} - -a { - text-decoration: underline; - &:active { - color: var(--color-text-accent); - } -} - -::selection { - background-color: var(--color-text-accent-invert); -} - -/* Responsive utilities */ -[data-max-width] { - width: 100%; - - & > * { - max-width: 90rem; - margin-left: auto; - margin-right: auto; - width: 100%; - } - - &[data-max-width-64] > * { - max-width: 64rem; - } -} diff --git a/cloud/web/src/ui/style/token/animation.css b/cloud/web/src/ui/style/token/animation.css deleted file mode 100644 index a8edfeff55..0000000000 --- a/cloud/web/src/ui/style/token/animation.css +++ /dev/null @@ -1,23 +0,0 @@ -@keyframes zoomIn { - from { - opacity: 0; - transform: scale(0.95); - } - - to { - opacity: 1; - transform: scale(1); - } -} - -@keyframes zoomOut { - from { - opacity: 1; - transform: scale(1); - } - - to { - opacity: 0; - transform: scale(0.95); - } -} diff --git a/cloud/web/src/ui/style/token/color.css b/cloud/web/src/ui/style/token/color.css deleted file mode 100644 index af0c46f3b9..0000000000 --- a/cloud/web/src/ui/style/token/color.css +++ /dev/null @@ -1,88 +0,0 @@ -:root { - --color-white: hsl(0, 0%, 100%); - --color-gray-1: hsl(224, 20%, 94%); - --color-gray-2: hsl(224, 6%, 77%); - --color-gray-3: hsl(224, 6%, 56%); - --color-gray-4: hsl(224, 7%, 36%); - --color-gray-5: hsl(224, 10%, 23%); - --color-gray-6: hsl(224, 14%, 16%); - --color-black: hsl(224, 10%, 10%); - - --hue-orange: 41; - --color-orange-low: hsl(var(--hue-orange), 39%, 22%); - --color-orange: hsl(var(--hue-orange), 82%, 63%); - --color-orange-high: hsl(var(--hue-orange), 82%, 87%); - --hue-green: 101; - --color-green-low: hsl(var(--hue-green), 39%, 22%); - --color-green: hsl(var(--hue-green), 82%, 63%); - --color-green-high: hsl(var(--hue-green), 82%, 80%); - --hue-blue: 234; - --color-blue-low: hsl(var(--hue-blue), 54%, 20%); - --color-blue: hsl(var(--hue-blue), 100%, 60%); - --color-blue-high: hsl(var(--hue-blue), 100%, 87%); - --hue-purple: 281; - --color-purple-low: hsl(var(--hue-purple), 39%, 22%); - --color-purple: hsl(var(--hue-purple), 82%, 63%); - --color-purple-high: hsl(var(--hue-purple), 82%, 89%); - --hue-red: 339; - --color-red-low: hsl(var(--hue-red), 39%, 22%); - --color-red: hsl(var(--hue-red), 82%, 63%); - --color-red-high: hsl(var(--hue-red), 82%, 87%); - - --color-accent-low: hsl(13, 75%, 30%); - --color-accent: hsl(13, 88%, 57%); - --color-accent-high: hsl(13, 100%, 78%); - - --color-text: var(--color-gray-1); - --color-text-dimmed: var(--color-gray-3); - --color-text-accent: var(--color-accent); - --color-text-invert: var(--color-black); - --color-text-accent-invert: var(--color-accent-high); - --color-bg: var(--color-black); - --color-bg-surface: var(--color-gray-5); - --color-bg-accent: var(--color-accent-high); - --color-border: var(--color-gray-2); - - --color-backdrop-overlay: hsla(223, 13%, 10%, 0.66); -} - -:root[data-color-mode="light"] { - --color-white: hsl(224, 10%, 10%); - --color-gray-1: hsl(224, 14%, 16%); - --color-gray-2: hsl(224, 10%, 23%); - --color-gray-3: hsl(224, 7%, 36%); - --color-gray-4: hsl(224, 6%, 56%); - --color-gray-5: hsl(224, 6%, 77%); - --color-gray-6: hsl(224, 20%, 94%); - --color-gray-7: hsl(224, 19%, 97%); - --color-black: hsl(0, 0%, 100%); - - --color-orange-high: hsl(var(--hue-orange), 80%, 25%); - --color-orange: hsl(var(--hue-orange), 90%, 60%); - --color-orange-low: hsl(var(--hue-orange), 90%, 88%); - --color-green-high: hsl(var(--hue-green), 80%, 22%); - --color-green: hsl(var(--hue-green), 90%, 46%); - --color-green-low: hsl(var(--hue-green), 85%, 90%); - --color-blue-high: hsl(var(--hue-blue), 80%, 30%); - --color-blue: hsl(var(--hue-blue), 90%, 60%); - --color-blue-low: hsl(var(--hue-blue), 88%, 90%); - --color-purple-high: hsl(var(--hue-purple), 90%, 30%); - --color-purple: hsl(var(--hue-purple), 90%, 60%); - --color-purple-low: hsl(var(--hue-purple), 80%, 90%); - --color-red-high: hsl(var(--hue-red), 80%, 30%); - --color-red: hsl(var(--hue-red), 90%, 60%); - --color-red-low: hsl(var(--hue-red), 80%, 90%); - - --color-accent-high: hsl(13, 75%, 26%); - --color-accent: hsl(13, 88%, 60%); - --color-accent-low: hsl(13, 100%, 89%); - - --color-text-accent: var(--color-accent); - --color-text-dimmed: var(--color-gray-4); - --color-text-invert: var(--color-black); - --color-text-accent-invert: var(--color-accent-low); - --color-bg-surface: var(--color-gray-6); - --color-bg-accent: var(--color-accent); - - --color-backdrop-overlay: hsla(225, 9%, 36%, 0.66); -} diff --git a/cloud/web/src/ui/style/token/font.css b/cloud/web/src/ui/style/token/font.css deleted file mode 100644 index 24b2db3f28..0000000000 --- a/cloud/web/src/ui/style/token/font.css +++ /dev/null @@ -1,20 +0,0 @@ -:root { - --font-size-2xs: 0.6875rem; - --font-size-xs: 0.75rem; - --font-size-sm: 0.8125rem; - --font-size-md: 0.9375rem; - --font-size-lg: 1.125rem; - --font-size-xl: 1.25rem; - --font-size-2xl: 1.5rem; - --font-size-3xl: 1.875rem; - --font-size-4xl: 2.25rem; - --font-size-5xl: 3rem; - --font-size-6xl: 3.75rem; - --font-size-7xl: 4.5rem; - --font-size-8xl: 6rem; - --font-size-9xl: 8rem; - --font-mono: IBM Plex Mono, monospace; - --font-sans: Rubik, sans-serif; - - --font-line-height: 1.75; -} diff --git a/cloud/web/src/ui/style/token/reset.css b/cloud/web/src/ui/style/token/reset.css deleted file mode 100644 index f4aa1a0a9a..0000000000 --- a/cloud/web/src/ui/style/token/reset.css +++ /dev/null @@ -1,212 +0,0 @@ -* { - margin: 0; - padding: 0; - font: inherit; -} - -*, -*::before, -*::after { - box-sizing: border-box; - border-width: 0; - border-style: solid; - border-color: var(--global-color-border, currentColor); -} - -html { - line-height: 1.5; - --font-fallback: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, - "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, - "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - -webkit-text-size-adjust: 100%; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -moz-tab-size: 4; - tab-size: 4; - font-family: var(--global-font-body, var(--font-fallback)); -} - -hr { - height: 0; - color: inherit; - border-top-width: 1px; -} - -body { - height: 100%; - line-height: inherit; -} - -img { - border-style: none; -} - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; - vertical-align: middle; -} - -img, -video { - max-width: 100%; - height: auto; -} - -p, -h1, -h2, -h3, -h4, -h5, -h6 { - overflow-wrap: break-word; -} - -ol, -ul { - list-style: none; -} - -code, -kbd, -pre, -samp { - font-size: 1em; -} - -button, -[type="button"], -[type="reset"], -[type="submit"] { - -webkit-appearance: button; - background-color: transparent; - background-image: none; -} - -button, -input, -optgroup, -select, -textarea { - color: inherit; -} - -button, -select { - text-transform: none; -} - -table { - text-indent: 0; - border-color: inherit; - border-collapse: collapse; -} - -input::placeholder, -textarea::placeholder { - opacity: 1; - color: var(--global-color-placeholder, #9ca3af); -} - -textarea { - resize: vertical; -} - -summary { - display: list-item; -} - -small { - font-size: 80%; -} - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -dialog { - padding: 0; -} - -a { - color: inherit; - text-decoration: inherit; -} - -abbr:where([title]) { - text-decoration: underline dotted; -} - -b, -strong { - font-weight: bolder; -} - -code, -kbd, -samp, -pre { - font-size: 1em; - --font-mono-fallback: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, - "Liberation Mono", "Courier New"; - font-family: var(--global-font-mono, var(--font-fallback)); -} - -input[type="text"], -input[type="email"], -input[type="search"], -input[type="password"] { - -webkit-appearance: none; - -moz-appearance: none; -} - -input[type="search"] { - -webkit-appearance: textfield; - outline-offset: -2px; -} - -::-webkit-search-decoration, -::-webkit-search-cancel-button { - -webkit-appearance: none; -} - -::-webkit-file-upload-button { - -webkit-appearance: button; - font: inherit; -} - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -input[type="number"] { - -moz-appearance: textfield; -} - -:-moz-ui-invalid { - box-shadow: none; -} - -:-moz-focusring { - outline: auto; -} diff --git a/cloud/web/src/ui/style/token/space.css b/cloud/web/src/ui/style/token/space.css deleted file mode 100644 index 4a061d7561..0000000000 --- a/cloud/web/src/ui/style/token/space.css +++ /dev/null @@ -1,39 +0,0 @@ -:root { - --space-0: 0; - --space-px: 1px; - --space-0-5: 0.125rem; - --space-1: 0.25rem; - --space-1-5: 0.375rem; - --space-2: 0.5rem; - --space-2-5: 0.625rem; - --space-3: 0.75rem; - --space-3-5: 0.875rem; - --space-4: 1rem; - --space-4-5: 1.125rem; - --space-5: 1.25rem; - --space-6: 1.5rem; - --space-7: 1.75rem; - --space-8: 2rem; - --space-9: 2.25rem; - --space-10: 2.5rem; - --space-11: 2.75rem; - --space-12: 3rem; - --space-14: 3.5rem; - --space-16: 4rem; - --space-18: 4.5rem; - --space-20: 5rem; - --space-24: 6rem; - --space-28: 7rem; - --space-32: 8rem; - --space-36: 9rem; - --space-40: 10rem; - --space-44: 11rem; - --space-48: 12rem; - --space-52: 13rem; - --space-56: 14rem; - --space-60: 15rem; - --space-64: 16rem; - --space-72: 18rem; - --space-80: 20rem; - --space-96: 24rem; -} diff --git a/cloud/web/src/ui/svg/icons.tsx b/cloud/web/src/ui/svg/icons.tsx deleted file mode 100644 index c09bbc47ad..0000000000 --- a/cloud/web/src/ui/svg/icons.tsx +++ /dev/null @@ -1,1292 +0,0 @@ -import { JSX } from "solid-js" - -export function IconPencilSquare(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconHome(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconPlus(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconDocument(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconChat(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconBell(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconCheck(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconChevronDown(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconChevronUp(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconChevronLeft(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconChevronRight(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconTrash(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconUser(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconCog(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconExclamationCircle( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconInformationCircle( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconArrowPath(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowUpRight(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconEllipsisVertical( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconEllipsisHorizontal( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconXMark(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconAcademicCap(props: JSX.SvgSVGAttributes) { - return ( - - - - - - ) -} - -export function IconBolt(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconCalendar(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconCamera(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconClock(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconCloud(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconCreditCard(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconEnvelope(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconEye(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconFlag(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconFolder(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconGlobe(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconHeart(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconKey(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconLink(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconLock(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconMap(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconMicrophone(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconPhone(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconPhoto(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconQuestionMarkCircle( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconMagnifyingGlass( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconShieldCheck(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconShoppingCart(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconStar(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconTag(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconUserCircle(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconVideoCamera(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconWifi(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconAdjustmentsVertical( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconArchiveBox(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconArrowDown(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowLeft(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowLongDown(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowLongLeft(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowLongRight(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowLongUp(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowRight(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowSmallDown(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconArrowSmallLeft(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconArrowSmallRight( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - - ) -} - -export function IconArrowSmallUp(props: JSX.SvgSVGAttributes) { - return ( - - - - - ) -} - -export function IconArrowTopRightOnSquare( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconArrowTrendingDown( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - - ) -} - -export function IconArrowTrendingUp( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconArrowUp(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowUpCircle(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowUpLeft(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowUpOnSquare( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - - ) -} - -export function IconArrowUpTray(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconArrowsPointingIn( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconArrowsPointingOut( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconArrowsRightLeft( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} - -export function IconBars3BottomLeft( - props: JSX.SvgSVGAttributes, -) { - return ( - - - - ) -} diff --git a/cloud/web/src/ui/svg/index.tsx b/cloud/web/src/ui/svg/index.tsx deleted file mode 100644 index 23dd74c6e2..0000000000 --- a/cloud/web/src/ui/svg/index.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { JSX } from "solid-js" - -export function IconLogomark(props: JSX.SvgSVGAttributes) { - return ( - - - - ) -} - -export function IconLogo(props: JSX.SvgSVGAttributes) { - return ( - - - - - - - - - - - - - - - ) -} diff --git a/cloud/web/src/util/context.tsx b/cloud/web/src/util/context.tsx deleted file mode 100644 index d1c6f4e7f7..0000000000 --- a/cloud/web/src/util/context.tsx +++ /dev/null @@ -1,26 +0,0 @@ -import { ParentProps, Show, createContext, useContext } from "solid-js" - -export function createInitializedContext< - Name extends string, - T extends { ready: boolean }, ->(name: Name, cb: () => T) { - const ctx = createContext() - - return { - use: () => { - const context = useContext(ctx) - if (!context) throw new Error(`No ${name} context`) - return context - }, - provider: (props: ParentProps) => { - const value = cb() - return ( - - - {props.children} - - - ) - }, - } -} diff --git a/cloud/web/sst-env.d.ts b/cloud/web/sst-env.d.ts deleted file mode 100644 index b6a7e9066e..0000000000 --- a/cloud/web/sst-env.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -/* This file is auto-generated by SST. Do not edit. */ -/* tslint:disable */ -/* eslint-disable */ -/* deno-fmt-ignore-file */ - -/// - -import "sst" -export {} \ No newline at end of file diff --git a/cloud/web/tsconfig.json b/cloud/web/tsconfig.json deleted file mode 100644 index 98d5b9cea0..0000000000 --- a/cloud/web/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "$schema": "https://json.schemastore.org/tsconfig", - "extends": "@tsconfig/node22/tsconfig.json", - "compilerOptions": { - "jsx": "preserve", - "jsxImportSource": "solid-js", - "module": "esnext", - "moduleResolution": "bundler", - "lib": ["ESNext", "DOM", "DOM.Iterable"], - "types": ["vite/client"] - } -} diff --git a/cloud/web/vite.config.ts b/cloud/web/vite.config.ts deleted file mode 100644 index 8a569641ed..0000000000 --- a/cloud/web/vite.config.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { defineConfig } from "vite" -import solidPlugin from "vite-plugin-solid" -import pages from "vite-plugin-pages" -import fs from "fs" -import path from "path" -import { generateHydrationScript, getAssets } from "solid-js/web" - -export default defineConfig({ - plugins: [ - pages({ - exclude: ["**/~*", "**/components/*"], - }), - solidPlugin({ ssr: true }), - { - name: "vite-plugin-solid-ssr-render", - apply: (config, env) => { - return env.command === "build" && !config.build?.ssr - }, - closeBundle: async () => { - console.log("Pre-rendering pages...") - const dist = path.resolve("dist") - try { - const serverEntryPath = path.join(dist, "server/entry-server.js") - const serverEntry = await import(serverEntryPath + "?t=" + Date.now()) - - const template = fs.readFileSync( - path.join(dist, "client/index.html"), - "utf-8", - ) - fs.writeFileSync(path.join(dist, "client/fallback.html"), template) - - const routes = ["/"] - for (const route of routes) { - const { app } = await serverEntry.render({ url: route }) - const html = template - .replace("", app) - .replace("", generateHydrationScript()) - .replace("", getAssets()) - const filePath = path.join( - dist, - `client${route === "/" ? "/index" : route}.html`, - ) - fs.mkdirSync(path.dirname(filePath), { - recursive: true, - }) - fs.writeFileSync(filePath, html) - - console.log(`Pre-rendered: ${filePath}`) - } - } catch (error) { - console.error("Error during pre-rendering:", error) - } - }, - }, - ], - server: { - port: 3000, - host: "0.0.0.0", - }, - build: { - target: "esnext", - }, -}) diff --git a/infra/cloud.ts b/infra/cloud.ts index 542aef96d3..b7b75938a3 100644 --- a/infra/cloud.ts +++ b/infra/cloud.ts @@ -46,7 +46,7 @@ export const auth = new sst.cloudflare.Worker("AuthApi", { //////////////// export const stripeWebhook = new WebhookEndpoint("StripeWebhook", { - url: $interpolate`https://api.gateway.${domain}/stripe/webhook`, + url: $interpolate`https://console.${domain}/stripe/webhook`, enabledEvents: [ "checkout.session.async_payment_failed", "checkout.session.async_payment_succeeded", @@ -123,13 +123,3 @@ export const console = new sst.cloudflare.x.SolidStart("Console", { VITE_AUTH_URL: auth.url.apply((url) => url!), }, }) - -//new sst.x.DevCommand("Solid", { -// dev: { -// directory: "cloud/app", -// command: "bun dev", -// }, -// environment: { -// VITE_AUTH_URL: auth.url.apply((url) => url!), -// }, -//}) From f821b555140cc41f68c7c034bb82ae0cb07d7321 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 30 Aug 2025 00:58:22 -0400 Subject: [PATCH 102/112] ignore: cloud resource --- bun.lock | 11 +++ cloud/app/package.json | 2 +- cloud/app/src/global.d.ts | 1 - cloud/app/src/routes/debug/index.ts | 9 ++ .../src/routes/gateway/v1/chat/completions.ts | 2 +- cloud/app/src/routes/stripe/webhook.ts | 2 +- cloud/app/tsconfig.json | 12 ++- cloud/core/drizzle.config.ts | 2 +- cloud/core/package.json | 1 + cloud/core/src/billing.ts | 2 +- cloud/core/src/drizzle/index.ts | 2 +- cloud/core/src/util/env.cloudflare.ts | 0 cloud/function/src/auth.ts | 2 +- cloud/function/src/gateway.ts | 2 +- cloud/resource/bun.lock | 13 +++ cloud/resource/package.json | 15 +++ .../resource.cloudflare.ts} | 13 +-- cloud/resource/resource.node.ts | 2 + cloud/resource/sst-env.d.ts | 92 +++++++++++++++++++ cloud/resource/tsconfig.json | 12 +++ 20 files changed, 180 insertions(+), 17 deletions(-) create mode 100644 cloud/app/src/routes/debug/index.ts create mode 100644 cloud/core/src/util/env.cloudflare.ts create mode 100644 cloud/resource/bun.lock create mode 100644 cloud/resource/package.json rename cloud/{core/src/util/resource.ts => resource/resource.cloudflare.ts} (61%) create mode 100644 cloud/resource/resource.node.ts create mode 100644 cloud/resource/sst-env.d.ts create mode 100644 cloud/resource/tsconfig.json diff --git a/bun.lock b/bun.lock index 743c2cb05c..dc231b6355 100644 --- a/bun.lock +++ b/bun.lock @@ -29,6 +29,7 @@ "version": "0.5.28", "dependencies": { "@aws-sdk/client-sts": "3.782.0", + "@opencode/cloud-resource": "workspace:*", "drizzle-orm": "0.41.0", "postgres": "3.4.7", "stripe": "18.0.0", @@ -58,6 +59,12 @@ "typescript": "catalog:", }, }, + "cloud/resource": { + "name": "@opencode/cloud-resource", + "dependencies": { + "@cloudflare/workers-types": "^4.20250830.0", + }, + }, "packages/function": { "name": "@opencode/function", "version": "0.5.28", @@ -652,6 +659,8 @@ "@opencode/cloud-function": ["@opencode/cloud-function@workspace:cloud/function"], + "@opencode/cloud-resource": ["@opencode/cloud-resource@workspace:cloud/resource"], + "@opencode/function": ["@opencode/function@workspace:packages/function"], "@opencode/web": ["@opencode/web@workspace:packages/web"], @@ -3034,6 +3043,8 @@ "@openauthjs/openauth/jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="], + "@opencode/cloud-resource/@cloudflare/workers-types": ["@cloudflare/workers-types@4.20250830.0", "", {}, "sha512-uAGZFqEBFnCiwIokxMnrrtjIkT8qyGT1LACSScEUyW7nKmtD0Viykp9QZWrIlssyEp/MDB6XsdALF8y6upxpcg=="], + "@opentelemetry/instrumentation-grpc/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], "@oslojs/jwt/@oslojs/encoding": ["@oslojs/encoding@0.4.1", "", {}, "sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q=="], diff --git a/cloud/app/package.json b/cloud/app/package.json index 3a236e09b8..7e6eaf4b54 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -3,7 +3,7 @@ "type": "module", "scripts": { "dev": "vinxi dev --host 0.0.0.0", - "dev:remote": "bun sst shell --target=Solid --stage=dev bun dev", + "dev:remote": "bun sst shell --target=Console --stage=dev bun dev", "build": "vinxi build", "start": "vinxi start", "version": "0.5.28" diff --git a/cloud/app/src/global.d.ts b/cloud/app/src/global.d.ts index a44606d2e4..dc6f10c226 100644 --- a/cloud/app/src/global.d.ts +++ b/cloud/app/src/global.d.ts @@ -1,2 +1 @@ /// -declare module "cloudflare:workers" diff --git a/cloud/app/src/routes/debug/index.ts b/cloud/app/src/routes/debug/index.ts new file mode 100644 index 0000000000..1753cf59d4 --- /dev/null +++ b/cloud/app/src/routes/debug/index.ts @@ -0,0 +1,9 @@ +import type { APIEvent } from "@solidjs/start/server" +import { Resource } from "@opencode/cloud-resource" +import { json } from "@solidjs/router" + +export async function GET(evt: APIEvent) { + return json({ + data: Resource.Database.host, + }) +} diff --git a/cloud/app/src/routes/gateway/v1/chat/completions.ts b/cloud/app/src/routes/gateway/v1/chat/completions.ts index 95c2c268d3..671b589c5f 100644 --- a/cloud/app/src/routes/gateway/v1/chat/completions.ts +++ b/cloud/app/src/routes/gateway/v1/chat/completions.ts @@ -1,4 +1,4 @@ -import { Resource } from "@opencode/cloud-core/util/resource.js" +import { Resource } from "@opencode/cloud-resource" import { Billing } from "@opencode/cloud-core/billing.js" import type { APIEvent } from "@solidjs/start/server" import { Database, eq, sql } from "@opencode/cloud-core/drizzle/index.js" diff --git a/cloud/app/src/routes/stripe/webhook.ts b/cloud/app/src/routes/stripe/webhook.ts index 29f0f24843..61d14a645b 100644 --- a/cloud/app/src/routes/stripe/webhook.ts +++ b/cloud/app/src/routes/stripe/webhook.ts @@ -5,7 +5,7 @@ import { BillingTable, PaymentTable } from "@opencode/cloud-core/schema/billing. import { Identifier } from "@opencode/cloud-core/identifier.js" import { centsToMicroCents } from "@opencode/cloud-core/util/price.js" import { Actor } from "@opencode/cloud-core/actor.js" -import { Resource } from "@opencode/cloud-core/util/resource.js" +import { Resource } from "@opencode/cloud-resource" export async function POST(input: APIEvent) { const body = await Billing.stripe().webhooks.constructEventAsync( diff --git a/cloud/app/tsconfig.json b/cloud/app/tsconfig.json index 7d5871a07a..2a2352179e 100644 --- a/cloud/app/tsconfig.json +++ b/cloud/app/tsconfig.json @@ -1,5 +1,9 @@ { + "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { + "customConditions": [ + "workers" + ], "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", @@ -10,10 +14,14 @@ "allowJs": true, "strict": true, "noEmit": true, - "types": ["vinxi/types/client"], + "types": [ + "vinxi/types/client" + ], "isolatedModules": true, "paths": { - "~/*": ["./src/*"] + "~/*": [ + "./src/*" + ] } } } diff --git a/cloud/core/drizzle.config.ts b/cloud/core/drizzle.config.ts index 82c487834e..fdecb6c566 100644 --- a/cloud/core/drizzle.config.ts +++ b/cloud/core/drizzle.config.ts @@ -1,5 +1,5 @@ +import { Resource } from "@opencode/cloud-resource" import { defineConfig } from "drizzle-kit" -import { Resource } from "./src/util/resource" export default defineConfig({ out: "./migrations/", diff --git a/cloud/core/package.json b/cloud/core/package.json index 0078252d2c..cf80a06105 100644 --- a/cloud/core/package.json +++ b/cloud/core/package.json @@ -6,6 +6,7 @@ "type": "module", "dependencies": { "@aws-sdk/client-sts": "3.782.0", + "@opencode/cloud-resource": "workspace:*", "drizzle-orm": "0.41.0", "postgres": "3.4.7", "stripe": "18.0.0", diff --git a/cloud/core/src/billing.ts b/cloud/core/src/billing.ts index 705999c265..620a72212e 100644 --- a/cloud/core/src/billing.ts +++ b/cloud/core/src/billing.ts @@ -7,7 +7,7 @@ import { z } from "zod" import { Identifier } from "./identifier" import { centsToMicroCents } from "./util/price" import { User } from "./user" -import { Resource } from "./util/resource" +import { Resource } from "@opencode/cloud-resource" export namespace Billing { export const stripe = () => diff --git a/cloud/core/src/drizzle/index.ts b/cloud/core/src/drizzle/index.ts index 894f578f88..aa5e3658c1 100644 --- a/cloud/core/src/drizzle/index.ts +++ b/cloud/core/src/drizzle/index.ts @@ -1,5 +1,5 @@ import { drizzle } from "drizzle-orm/postgres-js" -import { Resource } from "../util/resource" +import { Resource } from "@opencode/cloud-resource" export * from "drizzle-orm" import postgres from "postgres" diff --git a/cloud/core/src/util/env.cloudflare.ts b/cloud/core/src/util/env.cloudflare.ts new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cloud/function/src/auth.ts b/cloud/function/src/auth.ts index 79d7805de6..17c3fa8eac 100644 --- a/cloud/function/src/auth.ts +++ b/cloud/function/src/auth.ts @@ -9,7 +9,7 @@ import { CloudflareStorage } from "@openauthjs/openauth/storage/cloudflare" import { Account } from "@opencode/cloud-core/account.js" import { Workspace } from "@opencode/cloud-core/workspace.js" import { Actor } from "@opencode/cloud-core/actor.js" -import { Resource } from "@opencode/cloud-core/util/resource.js" +import { Resource } from "@opencode/cloud-resource" type Env = { AuthStorage: KVNamespace diff --git a/cloud/function/src/gateway.ts b/cloud/function/src/gateway.ts index aed02b4d45..ffbcc1b891 100644 --- a/cloud/function/src/gateway.ts +++ b/cloud/function/src/gateway.ts @@ -1,5 +1,4 @@ import { Hono, MiddlewareHandler } from "hono" -import { Resource } from "@opencode/cloud-core/util/resource.js" import { type ProviderMetadata, type LanguageModelUsage } from "ai" import { createAnthropic } from "@ai-sdk/anthropic" import { createOpenAI } from "@ai-sdk/openai" @@ -10,6 +9,7 @@ import { Actor } from "@opencode/cloud-core/actor.js" import { Database, eq, sql } from "@opencode/cloud-core/drizzle/index.js" import { KeyTable } from "@opencode/cloud-core/schema/key.sql.js" import { Billing } from "@opencode/cloud-core/billing.js" +import { Resource } from "@opencode/cloud-resource" type Env = {} diff --git a/cloud/resource/bun.lock b/cloud/resource/bun.lock new file mode 100644 index 0000000000..56bdf44ca0 --- /dev/null +++ b/cloud/resource/bun.lock @@ -0,0 +1,13 @@ +{ + "lockfileVersion": 1, + "workspaces": { + "": { + "dependencies": { + "@cloudflare/workers-types": "^4.20250830.0", + }, + }, + }, + "packages": { + "@cloudflare/workers-types": ["@cloudflare/workers-types@4.20250830.0", "", {}, "sha512-uAGZFqEBFnCiwIokxMnrrtjIkT8qyGT1LACSScEUyW7nKmtD0Viykp9QZWrIlssyEp/MDB6XsdALF8y6upxpcg=="], + } +} diff --git a/cloud/resource/package.json b/cloud/resource/package.json new file mode 100644 index 0000000000..fd9fa6f343 --- /dev/null +++ b/cloud/resource/package.json @@ -0,0 +1,15 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "name": "@opencode/cloud-resource", + "dependencies": { + "@cloudflare/workers-types": "^4.20250830.0" + }, + "exports": { + ".": { + "production": { + "import": "./resource.cloudflare.ts" + }, + "import": "./resource.node.ts" + } + } +} diff --git a/cloud/core/src/util/resource.ts b/cloud/resource/resource.cloudflare.ts similarity index 61% rename from cloud/core/src/util/resource.ts rename to cloud/resource/resource.cloudflare.ts index 1543145dcd..ad3fbe2a8a 100644 --- a/cloud/core/src/util/resource.ts +++ b/cloud/resource/resource.cloudflare.ts @@ -1,14 +1,15 @@ -import { env } from "cloudflare:workers"; +import { env } from "cloudflare:workers" export const Resource = new Proxy( {}, { get(_target, prop: string) { if (prop in env) { - const value = env[prop]; - return typeof value === "string" ? JSON.parse(value) : value; + // @ts-expect-error + const value = env[prop] + return typeof value === "string" ? JSON.parse(value) : value } - throw new Error(`"${prop}" is not linked in your sst.config.ts`); + throw new Error(`"${prop}" is not linked in your sst.config.ts (cloudflare)`) }, - } -) as Record; + }, +) as Record diff --git a/cloud/resource/resource.node.ts b/cloud/resource/resource.node.ts new file mode 100644 index 0000000000..a131021983 --- /dev/null +++ b/cloud/resource/resource.node.ts @@ -0,0 +1,2 @@ +console.log(process.env) +export { Resource } from "sst" diff --git a/cloud/resource/sst-env.d.ts b/cloud/resource/sst-env.d.ts new file mode 100644 index 0000000000..9c4f5cc0d3 --- /dev/null +++ b/cloud/resource/sst-env.d.ts @@ -0,0 +1,92 @@ +/* This file is auto-generated by SST. Do not edit. */ +/* tslint:disable */ +/* eslint-disable */ +/* deno-fmt-ignore-file */ + +import "sst" +declare module "sst" { + export interface Resource { + "ANTHROPIC_API_KEY": { + "type": "sst.sst.Secret" + "value": string + } + "AUTH_API_URL": { + "type": "sst.sst.Linkable" + "value": string + } + "Console": { + "type": "sst.cloudflare.SolidStart" + "url": string + } + "DATABASE_PASSWORD": { + "type": "sst.sst.Secret" + "value": string + } + "DATABASE_USERNAME": { + "type": "sst.sst.Secret" + "value": string + } + "Database": { + "database": string + "host": string + "password": string + "port": number + "type": "sst.sst.Linkable" + "username": string + } + "GITHUB_APP_ID": { + "type": "sst.sst.Secret" + "value": string + } + "GITHUB_APP_PRIVATE_KEY": { + "type": "sst.sst.Secret" + "value": string + } + "GITHUB_CLIENT_ID_CONSOLE": { + "type": "sst.sst.Secret" + "value": string + } + "GITHUB_CLIENT_SECRET_CONSOLE": { + "type": "sst.sst.Secret" + "value": string + } + "GOOGLE_CLIENT_ID": { + "type": "sst.sst.Secret" + "value": string + } + "OPENAI_API_KEY": { + "type": "sst.sst.Secret" + "value": string + } + "STRIPE_SECRET_KEY": { + "type": "sst.sst.Secret" + "value": string + } + "STRIPE_WEBHOOK_SECRET": { + "type": "sst.sst.Linkable" + "value": string + } + "Web": { + "type": "sst.cloudflare.Astro" + "url": string + } + "ZHIPU_API_KEY": { + "type": "sst.sst.Secret" + "value": string + } + } +} +// cloudflare +import * as cloudflare from "@cloudflare/workers-types"; +declare module "sst" { + export interface Resource { + "Api": cloudflare.Service + "AuthApi": cloudflare.Service + "AuthStorage": cloudflare.KVNamespace + "Bucket": cloudflare.R2Bucket + "GatewayApi": cloudflare.Service + } +} + +import "sst" +export {} \ No newline at end of file diff --git a/cloud/resource/tsconfig.json b/cloud/resource/tsconfig.json new file mode 100644 index 0000000000..829dbad010 --- /dev/null +++ b/cloud/resource/tsconfig.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "@tsconfig/node22/tsconfig.json", + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "bundler", + "types": [ + "@cloudflare/workers-types", + "node" + ] + } +} From 52b3eddeee0091d72f24b17b9ae61796f54afbe5 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 30 Aug 2025 01:06:48 -0400 Subject: [PATCH 103/112] ignore: fix dev remote --- cloud/app/package.json | 2 +- cloud/app/src/context/auth.ts | 1 + cloud/app/tsconfig.json | 3 --- cloud/resource/resource.node.ts | 1 - 4 files changed, 2 insertions(+), 5 deletions(-) diff --git a/cloud/app/package.json b/cloud/app/package.json index 7e6eaf4b54..cac35a9211 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -3,7 +3,7 @@ "type": "module", "scripts": { "dev": "vinxi dev --host 0.0.0.0", - "dev:remote": "bun sst shell --target=Console --stage=dev bun dev", + "dev:remote": "VITE_AUTH_URL=https://auth.dev.opencode.ai bun sst shell --stage=dev bun dev", "build": "vinxi build", "start": "vinxi start", "version": "0.5.28" diff --git a/cloud/app/src/context/auth.ts b/cloud/app/src/context/auth.ts index 9a5606a44e..5b7d3f54b5 100644 --- a/cloud/app/src/context/auth.ts +++ b/cloud/app/src/context/auth.ts @@ -17,6 +17,7 @@ export const AuthClient = createClient({ export const getActor = query(async (): Promise => { "use server" const evt = getRequestEvent() + console.log(evt?.request.url) const url = new URL(evt!.request.headers.get("referer") ?? evt!.request.url) const auth = await useAuthSession() const splits = url.pathname.split("/").filter(Boolean) diff --git a/cloud/app/tsconfig.json b/cloud/app/tsconfig.json index 2a2352179e..2907fdbb31 100644 --- a/cloud/app/tsconfig.json +++ b/cloud/app/tsconfig.json @@ -1,9 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", "compilerOptions": { - "customConditions": [ - "workers" - ], "target": "ESNext", "module": "ESNext", "moduleResolution": "bundler", diff --git a/cloud/resource/resource.node.ts b/cloud/resource/resource.node.ts index a131021983..d7dbb6c6d3 100644 --- a/cloud/resource/resource.node.ts +++ b/cloud/resource/resource.node.ts @@ -1,2 +1 @@ -console.log(process.env) export { Resource } from "sst" From b54aa65f5f0f1eba6890843df010642ce25ee7d8 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 30 Aug 2025 01:19:03 -0400 Subject: [PATCH 104/112] ignore: fix stuff --- cloud/app/src/context/auth.ts | 4 ++-- cloud/app/src/routes/workspace/[id].tsx | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/cloud/app/src/context/auth.ts b/cloud/app/src/context/auth.ts index 5b7d3f54b5..a167dd3d40 100644 --- a/cloud/app/src/context/auth.ts +++ b/cloud/app/src/context/auth.ts @@ -17,8 +17,8 @@ export const AuthClient = createClient({ export const getActor = query(async (): Promise => { "use server" const evt = getRequestEvent() - console.log(evt?.request.url) - const url = new URL(evt!.request.headers.get("referer") ?? evt!.request.url) + if (!evt) throw new Error("No request event") + const url = new URL(evt.request.headers.has("x-server-id") ? evt.request.headers.get("referer")! : evt.request.url) const auth = await useAuthSession() const splits = url.pathname.split("/").filter(Boolean) if (splits[0] !== "workspace") { diff --git a/cloud/app/src/routes/workspace/[id].tsx b/cloud/app/src/routes/workspace/[id].tsx index 65b2a38874..81013dc920 100644 --- a/cloud/app/src/routes/workspace/[id].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -167,7 +167,7 @@ const dummyApiKeyData = [ }, ] -export default function() { +export default function () { const actor = createAsync(() => getActor()) onMount(() => { console.log("MOUNTED", actor()) @@ -351,7 +351,7 @@ export default function() {
- {/* Mobile top bar */} - - - {/* Backdrop for mobile sidebar - closes sidebar when clicked */} - {sidebarOpen() &&
setSidebarOpen(false)}>
} - - - - {/* Main Content */} -
{props.children}
-
0} + when={keys()?.length} fallback={

Create an opencode Gateway API key

@@ -368,7 +368,7 @@ export default function() { - + {/* Real data: keys() */} {(key) => ( From 48e01cfee793a9cfc4d17794abf808f71a35c888 Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 30 Aug 2025 01:36:25 -0400 Subject: [PATCH 105/112] ignore: sync --- .../src/routes/{workspace => }/workspace.css | 5 ++++- cloud/app/src/routes/workspace.tsx | 22 ++++++++++++++++--- .../routes/workspace/{index.css => [id].css} | 0 cloud/app/src/routes/workspace/[id].tsx | 6 ++--- 4 files changed, 26 insertions(+), 7 deletions(-) rename cloud/app/src/routes/{workspace => }/workspace.css (95%) rename cloud/app/src/routes/workspace/{index.css => [id].css} (100%) diff --git a/cloud/app/src/routes/workspace/workspace.css b/cloud/app/src/routes/workspace.css similarity index 95% rename from cloud/app/src/routes/workspace/workspace.css rename to cloud/app/src/routes/workspace.css index 3390fbea68..e18b410ee1 100644 --- a/cloud/app/src/routes/workspace/workspace.css +++ b/cloud/app/src/routes/workspace.css @@ -52,7 +52,10 @@ color: var(--color-text-muted); } - a { + a, + button { + border: none; + padding: 0; color: var(--color-text); text-decoration: underline; text-underline-offset: var(--space-0-75); diff --git a/cloud/app/src/routes/workspace.tsx b/cloud/app/src/routes/workspace.tsx index 864fab4d35..920276e8c1 100644 --- a/cloud/app/src/routes/workspace.tsx +++ b/cloud/app/src/routes/workspace.tsx @@ -1,6 +1,20 @@ +import { useAuthSession } from "~/context/auth.session" import { IconLogo } from "../component/icon" -import "./workspace/workspace.css" -import { RouteSectionProps } from "@solidjs/router" +import "./workspace.css" +import { action, redirect, RouteSectionProps } from "@solidjs/router" + +const logout = action(async () => { + "use server" + const auth = await useAuthSession() + const current = auth.data.current + if (current) + await auth.update((val) => { + delete val.account[current] + return val + }) + + return redirect("/") +}) export default function WorkspaceLayout(props: RouteSectionProps) { return ( @@ -13,7 +27,9 @@ export default function WorkspaceLayout(props: RouteSectionProps) {
name@example.com - Logout +
+ +
{props.children}
diff --git a/cloud/app/src/routes/workspace/index.css b/cloud/app/src/routes/workspace/[id].css similarity index 100% rename from cloud/app/src/routes/workspace/index.css rename to cloud/app/src/routes/workspace/[id].css diff --git a/cloud/app/src/routes/workspace/[id].tsx b/cloud/app/src/routes/workspace/[id].tsx index 81013dc920..416128867d 100644 --- a/cloud/app/src/routes/workspace/[id].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -1,11 +1,11 @@ import { Billing } from "@opencode/cloud-core/billing.js" import { Key } from "@opencode/cloud-core/key.js" -import { action, createAsync, revalidate, query, useAction, useSubmission, json } from "@solidjs/router" -import { createEffect, createSignal, For, onMount, Show } from "solid-js" +import { action, createAsync, query, useAction, useSubmission, json } from "@solidjs/router" +import { createSignal, For, onMount, Show } from "solid-js" import { getActor } from "~/context/auth" import { withActor } from "~/context/auth.withActor" import { IconCopy, IconCheck } from "~/component/icon" -import "./index.css" +import "./[id].css" import { User } from "@opencode/cloud-core/user.js" import { Actor } from "@opencode/cloud-core/actor.js" From 0c7a887dbc22525bc8fc9530e3e7b7edd805b7cb Mon Sep 17 00:00:00 2001 From: opencode Date: Sat, 30 Aug 2025 06:00:39 +0000 Subject: [PATCH 106/112] release: v0.5.29 --- cloud/app/package.json | 2 +- cloud/core/package.json | 2 +- cloud/function/package.json | 2 +- packages/function/package.json | 2 +- packages/opencode/package.json | 2 +- packages/plugin/package.json | 2 +- packages/sdk/js/package.json | 2 +- packages/web/package.json | 2 +- sdks/vscode/package.json | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cloud/app/package.json b/cloud/app/package.json index cac35a9211..d8b9f22a62 100644 --- a/cloud/app/package.json +++ b/cloud/app/package.json @@ -6,7 +6,7 @@ "dev:remote": "VITE_AUTH_URL=https://auth.dev.opencode.ai bun sst shell --stage=dev bun dev", "build": "vinxi build", "start": "vinxi start", - "version": "0.5.28" + "version": "0.5.29" }, "dependencies": { "@ibm/plex": "6.4.1", diff --git a/cloud/core/package.json b/cloud/core/package.json index cf80a06105..477af4f2ef 100644 --- a/cloud/core/package.json +++ b/cloud/core/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode/cloud-core", - "version": "0.5.28", + "version": "0.5.29", "private": true, "type": "module", "dependencies": { diff --git a/cloud/function/package.json b/cloud/function/package.json index f61f0a731a..3cc2928eab 100644 --- a/cloud/function/package.json +++ b/cloud/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/cloud-function", - "version": "0.5.28", + "version": "0.5.29", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/function/package.json b/packages/function/package.json index f9a29310cf..0acfb440ad 100644 --- a/packages/function/package.json +++ b/packages/function/package.json @@ -1,6 +1,6 @@ { "name": "@opencode/function", - "version": "0.5.28", + "version": "0.5.29", "$schema": "https://json.schemastore.org/package.json", "private": true, "type": "module", diff --git a/packages/opencode/package.json b/packages/opencode/package.json index 43908b8d31..e41fd55a79 100644 --- a/packages/opencode/package.json +++ b/packages/opencode/package.json @@ -1,6 +1,6 @@ { "$schema": "https://json.schemastore.org/package.json", - "version": "0.5.28", + "version": "0.5.29", "name": "opencode", "type": "module", "private": true, diff --git a/packages/plugin/package.json b/packages/plugin/package.json index 887b0a735c..1f5fcf88e1 100644 --- a/packages/plugin/package.json +++ b/packages/plugin/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/plugin", - "version": "0.5.28", + "version": "0.5.29", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/sdk/js/package.json b/packages/sdk/js/package.json index 3f9815017f..b6793d1add 100644 --- a/packages/sdk/js/package.json +++ b/packages/sdk/js/package.json @@ -1,7 +1,7 @@ { "$schema": "https://json.schemastore.org/package.json", "name": "@opencode-ai/sdk", - "version": "0.5.28", + "version": "0.5.29", "type": "module", "scripts": { "typecheck": "tsc --noEmit" diff --git a/packages/web/package.json b/packages/web/package.json index 3a36c74b97..128b920cde 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,7 +1,7 @@ { "name": "@opencode/web", "type": "module", - "version": "0.5.28", + "version": "0.5.29", "scripts": { "dev": "astro dev", "dev:remote": "sst shell --stage=dev --target=Web astro dev", diff --git a/sdks/vscode/package.json b/sdks/vscode/package.json index 8a14a27914..636f3f4d0d 100644 --- a/sdks/vscode/package.json +++ b/sdks/vscode/package.json @@ -2,7 +2,7 @@ "name": "opencode", "displayName": "opencode", "description": "opencode for VS Code", - "version": "0.5.28", + "version": "0.5.29", "publisher": "sst-dev", "repository": { "type": "git", From 0c30a6f3030d755b406aaf4c8059c4e6d11570e2 Mon Sep 17 00:00:00 2001 From: Anton Date: Fri, 29 Aug 2025 22:55:20 -0700 Subject: [PATCH 107/112] Use a single rust LSP server instance for entire cargo workspace (#2292) --- packages/opencode/src/lsp/server.ts | 30 ++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/lsp/server.ts b/packages/opencode/src/lsp/server.ts index 2636df9670..da743628d6 100644 --- a/packages/opencode/src/lsp/server.ts +++ b/packages/opencode/src/lsp/server.ts @@ -515,7 +515,35 @@ export namespace LSPServer { export const RustAnalyzer: Info = { id: "rust", - root: NearestRoot(["Cargo.toml", "Cargo.lock"]), + root: async (file, app) => { + const crateRoot = await NearestRoot(["Cargo.toml", "Cargo.lock"])(file, app) + if (crateRoot === undefined) { + return undefined + } + let currentDir = crateRoot + + while (currentDir !== path.dirname(currentDir)) { + // Stop at filesystem root + const cargoTomlPath = path.join(currentDir, "Cargo.toml") + try { + const cargoTomlContent = await Bun.file(cargoTomlPath).text() + if (cargoTomlContent.includes("[workspace]")) { + return currentDir + } + } catch (err) { + // File doesn't exist or can't be read, continue searching up + } + + const parentDir = path.dirname(currentDir) + if (parentDir === currentDir) break // Reached filesystem root + currentDir = parentDir + + // Stop if we've gone above the app root + if (!currentDir.startsWith(app.path.root)) break + } + + return crateRoot + }, extensions: [".rs"], async spawn(_, root) { const bin = Bun.which("rust-analyzer") From 70db3cffb099ad863cdb6faf06759dc5c10d35bf Mon Sep 17 00:00:00 2001 From: GitHub Action Date: Sat, 30 Aug 2025 12:03:53 +0000 Subject: [PATCH 108/112] ignore: update download stats 2025-08-30 --- STATS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/STATS.md b/STATS.md index d977fcb68b..62990eb5d6 100644 --- a/STATS.md +++ b/STATS.md @@ -63,3 +63,4 @@ | 2025-08-27 | 248,409 (+5,626) | 205,242 (+0) | 453,651 (+5,626) | | 2025-08-28 | 252,796 (+4,387) | 205,242 (+0) | 458,038 (+4,387) | | 2025-08-29 | 256,045 (+3,249) | 211,075 (+5,833) | 467,120 (+9,082) | +| 2025-08-30 | 258,863 (+2,818) | 212,397 (+1,322) | 471,260 (+4,140) | From 924e84b0deeebfb31384f221abbafa35cc0bc93b Mon Sep 17 00:00:00 2001 From: Roderik van der Veer Date: Sat, 30 Aug 2025 16:44:27 +0200 Subject: [PATCH 109/112] =?UTF-8?q?fix:=20change=20command=20selection=20t?= =?UTF-8?q?o=20prefer=20exact=20matches=20over=20fuzzy=20sear=E2=80=A6=20(?= =?UTF-8?q?#2314)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/tui/internal/completions/commands.go | 36 ++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/packages/tui/internal/completions/commands.go b/packages/tui/internal/completions/commands.go index 2ffe3ea94b..72e261f82b 100644 --- a/packages/tui/internal/completions/commands.go +++ b/packages/tui/internal/completions/commands.go @@ -92,7 +92,41 @@ func (c *CommandCompletionProvider) GetChildEntries( } matches := fuzzy.RankFindFold(query, commandNames) - sort.Sort(matches) + + // Custom sort to prioritize exact matches + sort.Slice(matches, func(i, j int) bool { + // Check for exact match (case-insensitive) + iExact := strings.EqualFold(matches[i].Target, query) + jExact := strings.EqualFold(matches[j].Target, query) + + // Exact matches come first + if iExact && !jExact { + return true + } + if !iExact && jExact { + return false + } + + // Check for prefix match (case-insensitive) + iPrefix := strings.HasPrefix(strings.ToLower(matches[i].Target), strings.ToLower(query)) + jPrefix := strings.HasPrefix(strings.ToLower(matches[j].Target), strings.ToLower(query)) + + // Prefix matches come before fuzzy matches + if iPrefix && !jPrefix { + return true + } + if !iPrefix && jPrefix { + return false + } + + // Otherwise, sort by fuzzy match score (lower distance is better) + if matches[i].Distance != matches[j].Distance { + return matches[i].Distance < matches[j].Distance + } + + // If distances are equal, sort by original index (stable sort) + return matches[i].OriginalIndex < matches[j].OriginalIndex + }) // Convert matches to completion items, deduplicating by command name items := []CompletionSuggestion{} From 3625766ad4d7e96d4cecfe4adbe13dd2c407df63 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Sat, 30 Aug 2025 10:39:28 -0500 Subject: [PATCH 110/112] tweak: ensure run command doesn't send request if no prompt present (#2332) --- packages/opencode/src/cli/cmd/run.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/opencode/src/cli/cmd/run.ts b/packages/opencode/src/cli/cmd/run.ts index 4272378cee..181d8c1e73 100644 --- a/packages/opencode/src/cli/cmd/run.ts +++ b/packages/opencode/src/cli/cmd/run.ts @@ -64,6 +64,11 @@ export const RunCommand = cmd({ if (!process.stdin.isTTY) message += "\n" + (await Bun.stdin.text()) + if (message.trim().length === 0) { + UI.error("Message cannot be empty") + return + } + await bootstrap({ cwd: process.cwd() }, async () => { const session = await (async () => { if (args.continue) { From dac821229eba42d8680895db068c3ce1632d046c Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Sat, 30 Aug 2025 10:56:00 -0500 Subject: [PATCH 111/112] fix: resolve [pasted lines] when passing paste as arguments for command (#2333) --- packages/tui/internal/components/chat/editor.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/packages/tui/internal/components/chat/editor.go b/packages/tui/internal/components/chat/editor.go index 0c52ca84ca..7100497077 100644 --- a/packages/tui/internal/components/chat/editor.go +++ b/packages/tui/internal/components/chat/editor.go @@ -489,11 +489,22 @@ func (m *editorComponent) Submit() (tea.Model, tea.Cmd) { var cmds []tea.Cmd if strings.HasPrefix(value, "/") { - value = value[1:] - commandName := strings.Split(value, " ")[0] + // Expand attachments in the value to get actual content + expandedValue := value + attachments := m.textarea.GetAttachments() + for _, att := range attachments { + if att.Type == "text" && att.Source != nil { + if textSource, ok := att.Source.(*attachment.TextSource); ok { + expandedValue = strings.Replace(expandedValue, att.Display, textSource.Value, 1) + } + } + } + + expandedValue = expandedValue[1:] // Remove the "/" + commandName := strings.Split(expandedValue, " ")[0] command := m.app.Commands[commands.CommandName(commandName)] if command.Custom { - args := strings.TrimPrefix(value, command.PrimaryTrigger()+" ") + args := strings.TrimPrefix(expandedValue, command.PrimaryTrigger()+" ") cmds = append( cmds, util.CmdHandler(app.SendCommand{Command: string(command.Name), Args: args}), From c676f12306b58a87006e0f2114f5c7f2cb25a49d Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Sat, 30 Aug 2025 15:20:40 -0400 Subject: [PATCH 112/112] wip: cloud --- cloud/app/src/context/auth.withActor.ts | 9 +++++++++ cloud/app/src/routes/workspace.tsx | 2 +- cloud/app/src/routes/workspace/[id].tsx | 13 +++++++------ 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/cloud/app/src/context/auth.withActor.ts b/cloud/app/src/context/auth.withActor.ts index a61b728ef2..ca38be89b1 100644 --- a/cloud/app/src/context/auth.withActor.ts +++ b/cloud/app/src/context/auth.withActor.ts @@ -1,7 +1,16 @@ import { Actor } from "@opencode/cloud-core/actor.js" import { getActor } from "./auth" +import { query } from "@solidjs/router" export async function withActor(fn: () => T) { const actor = await getActor() return Actor.provide(actor.type, actor.properties, fn) } + +export function actorQuery(cb: () => T, name: string) { + "use server" + return query(async () => { + const actor = await getActor() + return withActor(cb) + }, name) +} diff --git a/cloud/app/src/routes/workspace.tsx b/cloud/app/src/routes/workspace.tsx index 920276e8c1..6876ae962f 100644 --- a/cloud/app/src/routes/workspace.tsx +++ b/cloud/app/src/routes/workspace.tsx @@ -1,6 +1,6 @@ +import "./workspace.css" import { useAuthSession } from "~/context/auth.session" import { IconLogo } from "../component/icon" -import "./workspace.css" import { action, redirect, RouteSectionProps } from "@solidjs/router" const logout = action(async () => { diff --git a/cloud/app/src/routes/workspace/[id].tsx b/cloud/app/src/routes/workspace/[id].tsx index 416128867d..ccdfe42f52 100644 --- a/cloud/app/src/routes/workspace/[id].tsx +++ b/cloud/app/src/routes/workspace/[id].tsx @@ -13,26 +13,27 @@ import { Actor } from "@opencode/cloud-core/actor.js" // Keys related queries and actions ///////////////////////////////////// -const listKeys = query(async () => { + +const listKeys = query(() => { "use server" return withActor(() => Key.list()) -}, "keys") +}, "key.list") const createKey = action(async (name: string) => { "use server" return json( withActor(() => Key.create({ name })), - { revalidate: "keys" }, + { revalidate: listKeys.key }, ) -}, "createKey") +}, "key.create") const removeKey = action(async (id: string) => { "use server" return json( withActor(() => Key.remove({ id })), - { revalidate: "keys" }, + { revalidate: listKeys.key }, ) -}, "removeKey") +}, "key.remove") ///////////////////////////////////// // Billing related queries and actions
- logo + opencode logo light + opencode logo dark

The AI coding agent built for the terminal.

@@ -145,24 +147,30 @@ export default function Home() {
-
-
opencode TUI with tokyonight theme
-
- opencode TUI with tokyonight theme -
+
-
-
-
opencode in VS Code
-
- opencode in VS Code -
+
+
+
+
opencode in VS Code
+ + opencode in VS Code + +
-
-
opencode in GitHub
-
- opencode in GitHub -
+
+
+
opencode in GitHub
+ + opencode in GitHub + +
diff --git a/cloud/app/src/style/base.css b/cloud/app/src/style/base.css index 2c95cdbb76..853b3c3865 100644 --- a/cloud/app/src/style/base.css +++ b/cloud/app/src/style/base.css @@ -1,6 +1,6 @@ html { - color-scheme: dark; line-height: 1; + background-color: var(--color-bg); } body { diff --git a/cloud/app/src/style/token/color.css b/cloud/app/src/style/token/color.css index 5382321e33..35846acd95 100644 --- a/cloud/app/src/style/token/color.css +++ b/cloud/app/src/style/token/color.css @@ -1,53 +1,8 @@ -body { +:root { --color-white: #ffffff; --color-black: #000000; -} -[data-color-mode="dark"] { - /* OpenCode theme colors */ - --color-bg: #0c0c0e; - --color-bg-surface: #161618; - --color-bg-elevated: #1c1c1f; - - --color-text: #ffffff; - --color-text-muted: #a1a1a6; - --color-text-disabled: #68686f; - - --color-accent: #007aff; - --color-accent-hover: #0056b3; - --color-accent-active: #004085; - - --color-success: #30d158; - --color-warning: #ff9f0a; - --color-danger: #ff453a; - - --color-border: #38383a; - --color-border-muted: #2c2c2e; - - /* Button colors */ - --color-primary: var(--color-accent); - --color-primary-hover: var(--color-accent-hover); - --color-primary-active: var(--color-accent-active); - --color-primary-text: #ffffff; - - --color-danger: #ff453a; - --color-danger-hover: #d70015; - --color-danger-active: #a50011; - --color-danger-text: #ffffff; - - --color-warning: #ff9f0a; - --color-warning-hover: #cc7f08; - --color-warning-active: #995f06; - --color-warning-text: #000000; - - /* Surface colors */ - --color-surface: var(--color-bg-surface); - --color-surface-hover: var(--color-bg-elevated); - --color-border: var(--color-border); -} - -[data-color-mode="light"] { - /* OpenCode light theme colors */ + /* Default light theme colors */ --color-bg: #ffffff; --color-bg-surface: #f5f5f7; --color-bg-elevated: #ffffff; @@ -88,3 +43,48 @@ body { --color-surface-hover: var(--color-bg-elevated); --color-border: var(--color-border); } + +@media (prefers-color-scheme: dark) { + :root { + /* OpenCode dark theme colors */ + --color-bg: #0c0c0e; + --color-bg-surface: #161618; + --color-bg-elevated: #1c1c1f; + + --color-text: #ffffff; + --color-text-muted: #a1a1a6; + --color-text-disabled: #68686f; + + --color-accent: #007aff; + --color-accent-hover: #0056b3; + --color-accent-active: #004085; + + --color-success: #30d158; + --color-warning: #ff9f0a; + --color-danger: #ff453a; + + --color-border: #38383a; + --color-border-muted: #2c2c2e; + + /* Button colors */ + --color-primary: var(--color-accent); + --color-primary-hover: var(--color-accent-hover); + --color-primary-active: var(--color-accent-active); + --color-primary-text: #ffffff; + + --color-danger: #ff453a; + --color-danger-hover: #d70015; + --color-danger-active: #a50011; + --color-danger-text: #ffffff; + + --color-warning: #ff9f0a; + --color-warning-hover: #cc7f08; + --color-warning-active: #995f06; + --color-warning-text: #000000; + + /* Surface colors */ + --color-surface: var(--color-bg-surface); + --color-surface-hover: var(--color-bg-elevated); + --color-border: var(--color-border); + } +} From 8749c0c707330550489a2928802f5e994660a424 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Wed, 27 Aug 2025 15:27:49 -0500 Subject: [PATCH 047/112] feat: file list api --- packages/opencode/src/cli/cmd/debug/file.ts | 19 +++++++++++- packages/opencode/src/file/index.ts | 34 +++++++++++++++++++++ packages/opencode/src/server/server.ts | 32 ++++++++++++++++--- packages/sdk/js/src/gen/sdk.gen.ts | 14 ++++++++- packages/sdk/js/src/gen/types.gen.ts | 26 +++++++++++++++- packages/sdk/stainless/stainless.yml | 7 +++-- 6 files changed, 122 insertions(+), 10 deletions(-) diff --git a/packages/opencode/src/cli/cmd/debug/file.ts b/packages/opencode/src/cli/cmd/debug/file.ts index f773dbd9cf..74fb19361c 100644 --- a/packages/opencode/src/cli/cmd/debug/file.ts +++ b/packages/opencode/src/cli/cmd/debug/file.ts @@ -29,8 +29,25 @@ const FileStatusCommand = cmd({ }, }) +const FileListCommand = cmd({ + command: "list ", + builder: (yargs) => + yargs.positional("path", { + type: "string", + demandOption: true, + description: "File path to list", + }), + async handler(args) { + await bootstrap({ cwd: process.cwd() }, async () => { + const files = await File.list(args.path) + console.log(JSON.stringify(files, null, 2)) + }) + }, +}) + export const FileCommand = cmd({ command: "file", - builder: (yargs) => yargs.command(FileReadCommand).command(FileStatusCommand).demandCommand(), + builder: (yargs) => + yargs.command(FileReadCommand).command(FileStatusCommand).command(FileListCommand).demandCommand(), async handler() {}, }) diff --git a/packages/opencode/src/file/index.ts b/packages/opencode/src/file/index.ts index b99f35e1fb..7613e920d8 100644 --- a/packages/opencode/src/file/index.ts +++ b/packages/opencode/src/file/index.ts @@ -24,6 +24,17 @@ export namespace File { export type Info = z.infer + export const Node = z + .object({ + name: z.string(), + path: z.string(), + type: z.enum(["file", "directory"]), + }) + .openapi({ + ref: "FileNode", + }) + export type Node = z.infer + export const Event = { Edited: Bus.event( "file.edited", @@ -120,4 +131,27 @@ export namespace File { } return { type: "raw", content } } + + export async function list(dir?: string) { + const ignore = [".git", ".DS_Store"] + const app = App.info() + const resolved = dir ? path.join(app.path.cwd, dir) : app.path.cwd + const nodes: Node[] = [] + for (const entry of await fs.promises.readdir(resolved, { withFileTypes: true })) { + if (ignore.includes(entry.name)) continue + const fullPath = path.join(resolved, entry.name) + const relativePath = path.relative(app.path.cwd, fullPath) + nodes.push({ + name: entry.name, + path: relativePath, + type: entry.isDirectory() ? "directory" : "file", + }) + } + return nodes.sort((a, b) => { + if (a.type !== b.type) { + return a.type === "directory" ? -1 : 1 + } + return a.name.localeCompare(b.name) + }) + } } diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts index 631c9ab4ab..27d4aa9214 100644 --- a/packages/opencode/src/server/server.ts +++ b/packages/opencode/src/server/server.ts @@ -937,6 +937,34 @@ export namespace Server { ) .get( "/file", + describeRoute({ + description: "List files and directories", + operationId: "file.list", + responses: { + 200: { + description: "Files and directories", + content: { + "application/json": { + schema: resolver(File.Node.array()), + }, + }, + }, + }, + }), + zValidator( + "query", + z.object({ + path: z.string(), + }), + ), + async (c) => { + const path = c.req.valid("query").path + const content = await File.list(path) + return c.json(content) + }, + ) + .get( + "/file/content", describeRoute({ description: "Read a file", operationId: "file.read", @@ -965,10 +993,6 @@ export namespace Server { async (c) => { const path = c.req.valid("query").path const content = await File.read(path) - log.info("read file", { - path, - content: content.content, - }) return c.json(content) }, ) diff --git a/packages/sdk/js/src/gen/sdk.gen.ts b/packages/sdk/js/src/gen/sdk.gen.ts index f900c24f06..a50f5e1423 100644 --- a/packages/sdk/js/src/gen/sdk.gen.ts +++ b/packages/sdk/js/src/gen/sdk.gen.ts @@ -59,6 +59,8 @@ import type { FindFilesResponses, FindSymbolsData, FindSymbolsResponses, + FileListData, + FileListResponses, FileReadData, FileReadResponses, FileStatusData, @@ -457,12 +459,22 @@ class Find extends _HeyApiClient { } class File extends _HeyApiClient { + /** + * List files and directories + */ + public list(options: Options) { + return (options.client ?? this._client).get({ + url: "/file", + ...options, + }) + } + /** * Read a file */ public read(options: Options) { return (options.client ?? this._client).get({ - url: "/file", + url: "/file/content", ...options, }) } diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts index 1c4fc5b358..5043f96887 100644 --- a/packages/sdk/js/src/gen/types.gen.ts +++ b/packages/sdk/js/src/gen/types.gen.ts @@ -1138,6 +1138,12 @@ export type Symbol = { } } +export type FileNode = { + name: string + path: string + type: "file" | "directory" +} + export type File = { path: string added: number @@ -1804,7 +1810,7 @@ export type FindSymbolsResponses = { export type FindSymbolsResponse = FindSymbolsResponses[keyof FindSymbolsResponses] -export type FileReadData = { +export type FileListData = { body?: never path?: never query: { @@ -1813,6 +1819,24 @@ export type FileReadData = { url: "/file" } +export type FileListResponses = { + /** + * Files and directories + */ + 200: Array +} + +export type FileListResponse = FileListResponses[keyof FileListResponses] + +export type FileReadData = { + body?: never + path?: never + query: { + path: string + } + url: "/file/content" +} + export type FileReadResponses = { /** * File content diff --git a/packages/sdk/stainless/stainless.yml b/packages/sdk/stainless/stainless.yml index 3dd34a413d..f829e22804 100644 --- a/packages/sdk/stainless/stainless.yml +++ b/packages/sdk/stainless/stainless.yml @@ -48,7 +48,6 @@ resources: app: models: app: App - logLevel: LogLevel provider: Provider model: Model agent: Agent @@ -61,7 +60,6 @@ resources: find: models: - match: Match symbol: Symbol methods: text: get /find @@ -71,8 +69,11 @@ resources: file: models: file: File + fileNode: FileNode + methods: - read: get /file + list: get /file + read: get /file/content status: get /file/status config: From 2d794ed03d2baacf5da829dccc65047c08d7aa04 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 27 Aug 2025 15:59:33 -0500 Subject: [PATCH 048/112] fix: ensure / commands dont try to resolve @ references from cmd outputs (#2282) --- packages/opencode/src/session/index.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index 7cb244001c..4a9a6785de 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -1183,6 +1183,10 @@ export namespace Session { let template = command.template.replace("$ARGUMENTS", input.arguments) + // intentionally doing match regex doing bash regex replacements + // this is because bash commands can output "@" references + const fileMatches = template.matchAll(fileRegex) + const bash = Array.from(template.matchAll(bashRegex)) if (bash.length > 0) { const results = await Promise.all( @@ -1205,10 +1209,9 @@ export namespace Session { }, ] as ChatInput["parts"] - const matches = template.matchAll(fileRegex) const app = App.info() - for (const match of matches) { + for (const match of fileMatches) { const file = path.join(app.path.cwd, match[1]) parts.push({ type: "file", From d984dbd8768d30f46e7206c86a202d7acb2c1bc3 Mon Sep 17 00:00:00 2001 From: Jay V Date: Wed, 27 Aug 2025 17:53:04 -0400 Subject: [PATCH 049/112] ignore: cloud --- cloud/app/public/favicon.ico | Bin 664 -> 0 bytes cloud/app/public/favicon.svg | 5 +++++ cloud/app/public/social-share.png | Bin 0 -> 17520 bytes cloud/app/src/entry-server.tsx | 4 +++- 4 files changed, 8 insertions(+), 1 deletion(-) delete mode 100644 cloud/app/public/favicon.ico create mode 100644 cloud/app/public/favicon.svg create mode 100644 cloud/app/public/social-share.png diff --git a/cloud/app/public/favicon.ico b/cloud/app/public/favicon.ico deleted file mode 100644 index fb282da0719ef6ab4c1732df93be6216b0d85520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 664 zcmV;J0%!e+P)m9ebk1R zejT~~6f_`?;`cEd!+`7(hw@%%2;?RN8gX-L?z6cM( zKoG@&w+0}f@Pfvwc+deid)qgE!L$ENKYjViZC_Zcr>L(`2oXUT8f0mRQ(6-=HN_Ai zeBBEz3WP+1Cw`m!49Wf!MnZzp5bH8VkR~BcJ1s-j90TAS2Yo4j!J|KodxYR%3Numw zA?gq6e`5@!W~F$_De3yt&uspo&2yLb$(NwcPPI-4LGc!}HdY%jfq@AFs8LiZ4k(p} zZ!c9o+qbWYs-Mg zgdyTALzJX&7QXHdI_DPTFL33;w}88{e6Zk)MX0kN{3DX9uz#O_L58&XRH$Nvvu;fO zf&)7@?C~$z1K<>j0ga$$MIg+5xN;eQ?1-CA=`^Y169@Ab6!vcaNP=hxfKN%@Ly^R* zK1iv*s1Yl6_dVyz8>ZqYhz6J4|3fQ@2LQeX@^%W(B~8>=MoEmBEGGD1;gHXlpX>!W ym)!leA2L@`cpb^hy)P75=I!`pBYxP7<2VfQ3j76qLgzIA0000 + + + + diff --git a/cloud/app/public/social-share.png b/cloud/app/public/social-share.png new file mode 100644 index 0000000000000000000000000000000000000000..97f67994dd8e44d35b5cd6abf757fb2127584b9e GIT binary patch literal 17520 zcmeHvXH-+$+HL?50Ts6jO1ErOI*2rBDmFww=_M4U2_dx5L$e@mrKpt9V1Tc7ut`RkVT zwS8hTVjvJ`pT+gdwjj{18W2b@YR_)qip>Q$7&wTAUUz|kK;nmXJ_4YEqNBh?0hsNz zOCZdk+$?ai%m1R)MG&YqQ+)G|FbH&6*y8d<`xpT>-R3=XI>C&e6H==F?cnhgRj`;q zsn4y?caG1tzqoW}SHxYNkHvfToquvt{qh-uFE3J5_RD?Ud+_uhg2g}22uq&-I&@Lw zkAssB_K(RtIj63^zTUcJ;zys3BYW@|hDaibB`iy177-~P+ejv{#LQFX@ua>GFdoq1 z)$N@LfX>`Z2F3%r5Fn_wb9&>DmjH0MRR9tP4#`8ioOiBfpK2Eb4zJD$NbQ`KiUJY< zZngUNt^XA5cOJ@dR0H*+qT$~w5?erfA-g8s^b3CPzT)T@r30< zhTM1}k3D&SzfrxtL1xk9!wcnYGq#F^mE}65V_;OmXX`>?`OD4+uYPt#l#qc=xtzbajdSm9Q-K0brn5% zYdn5=V3N|tU%fRz4QVsk{CUkxMrC7KGs)22KDLm!BQOGwnZ#$-vDOhu>j=C@>T_?k z9#>sMO=Rp${_8hSsp82^yPRoaHY&T%cy7%(RbNidfg%r77Bq8Oc{g@BD<-Vm{>1il znTAGv1gTCYc7a$QB+TRze}7QiU*!~A=$-;n6}a(@jr=u7+TJ9kn#VAUqaQz22}uHt zJl1%$<5K=lJ7+JD%74ka0F9fbCvfQ>oLZN1UKf~celU~6Jg6#TC&exhm?e|t3vG&N;Q6x6gY1UFG)}r8SD>aQhob z^>uWY_gY0G3)9>iybY{HlCrdy!?>SQ2Zz7F$))q1COr@!R*sX0w93Xpben3spqH-u zo}FO#uMx+Zy+Mtg{2jw1i-QKg02*l!zhibP8$Ysac7vQPlZC+nfGSo?z7jBiwEgbV z+zm2_Y&x(LnE#u?^_aYn(>QYT6LN3TW>1o_J*-FGY3f%$Zu_m-#@p8gm33QfYuM_4 z_@7%}Y!a8UUccG?owf#zixeTkEZKx0?*^!vH}cF@<-$QrmgJ-Ktbk(vUfQ% z_-pvor{l5AVgV3&DCGbk*#G7PD5?hpt^l0Z55VDWZBW`2_A60YOtbCv_BgQRS((Zo;N?I5c^dU!a$o<>VgFMxH5l!-9s|6)J}r{s{-G8KU2QUnYxT%| z5XAO4oU@Pm(f>z1StELW$Ib7D4un_ELHmCHe480eT#Nh(ErAw86QBMg4#+ZocZULD zAaOGO`l~y)wu(H@Q)c}tmLlrH1 zTtf1jJyMwqA~5RIXXf%ta}S7wFJ)=Wl=3a1*AW)S3muL&j&O;ja?GOB6j)-w zedOyj>_UjEo6! zK)Mv}N70~m+gi(bS&(iSUILMUHvoiH$YB^=&2$(vx|$y`sKHbX#TG$K-v~<;kjk0zGiEc;GCAAV=&GGKaR5=IR@t{%F?ha!Fa+n5Of7B8n2;M@MOu}U!p zm+wW7))DOjES1_*5cHS*kvEyN!LVj@ zRIopC+Q6`DLhIseX40lNH}yey8q=Ai$~(Z`5Wnw{XBcLPl*d2W|;=+&W1 z{#kaIeh=KP>#1TOx0?E^YY-K+)aM-JYU4e`A0_f*R~(KGADp?xGdieHa`)9iNRzxe z_Oq)h_2(`3BG=CePkZ79hwV%pF$J_fxI08(0z7*u=DR8X_mqRXL9rW0kmFd>X z@Z{I|;gl)+=376|R&kVuglccJI7wUN zNicmoZp_(0+Sr(Sih7LWGR9ahd=!$ZpgMP=ir~Sf>Yl&YZrfK$fEo4muhXeB>#?RV zigqA*ybv+oRtXLnT3z{^JIE|2u$wq~Cd6t%_E$#bIOpjUAtR_NB+?(v%)v)MhUSqp(Gt68eR*(>r6w_=GCYe*a@en@ zjxUQIxRNWfB(2koq{GWUSRJ@oXi+3?;URLG9%@4Xw6)P>rjyZZDKw@-B9y+>vW zaIE=fmh_o8X4H?PBs~r>38`H=*4nyPl%5$@<>OXm$bml$KHX^2bs)+jBi+ikX6?XR zuGXJDUaQM-v(BdYrP;AM>kuzq+Uw{*NWS$5qe^A)z zCz$1-q`33e`!#MOE4#?JdGpD~%P6&CQ46;v}g1iN!h#Q{bS)EjX87*cwW z0(o5vb;5cGzjOM;jx_3L2I-)jt7Yw2agl1G?s1Yl?-c(dlg>H3@vzTE!Ew1wk4tRN zXmj1+>NQb@xd_a|)bn^7^>cE=VwJgaT+6BJ0__gR+8^j>9q}ktx+>PZ&H?*6>UT!Q z<$N#gy=dnC}NF^^EOgvbL{f( z1Zx-sQ|is#hjRz3-3Qqo_hM8gJ0ps*o#*9uuk4UlIr&6V>}!dS}PQ`SnCt)lB@&#R?7VV{+55iO@9*kO*} zXtmm=%>7@|Yw!a))CrBap7ruakEKZ=H&m-!X9gKG2>_V`OZpvu1kCGFnj7?8o&HuK z8GEH8+NFAFRD6$~g;M;09!Fh&_yy+;Hvuj{KRzIzbObwZZea<$?Oix>dHw+N^J{K& z(;tIa+WDO21dTMAYMahC0Y|8Mhgf4$Pg70thd{m)+;Y3o8TB9qMdteUE-cf)ZL$2* z;`t+9>?JK>kaZ47+?ob1|<-@+v<>XM^)r-j)!afXBYzj}v_byv$ zT~<#2pyxy&nfA7`s2PZJWq8FXI>XS^Mz?4%s@RBMMrj}f7g2XPQ!ws@Tk9I?a#Pv( z*kSQNVP{0hLJVm!>Iq8%R3zrUXY%jW?lu`#q_&pqWC8Z=PDZo&6W^o*ZrXOrl=#y1Keo#7WvfIWQ1qhG9+>!BMv?V$)YX zTp_&~GtE=1kd)f?UntPi*KkOT!nnWXv@8!6bM6>gb47J$T<=Vee<>WurcXN;%UWtu zdZYHPxK^N=E2O@Hz`BBJ8Q<$f60IgRZPcP)l#y&qR=Wr*nSKjySDHyAr`Zkh+F*1&{X@zVo%320^G0 zSCyq<$e4EXRsXYTF!6oNhF4LvPAk=_z8p4k!nk@K8L@h<(G=vAevvkL89Mw8m0!6B z7yPLGJX+~*=SpxLlHgcsNom-Dw#3c)T1T)v`L>)_fii*$fkT38S-d1y`?ig_O8+l) zl0Ypd`0VY-TDg~I+UPg1Fbr)comqw_=9a85qhUGo_G{MY6i`{I)2H*_7Oun4HA5$Q ztGt?7Db|)0)FZb5N!=XQlrrAhqOXn+8q9`Eyry3(qx&v%(mMX;hofWWYkT~X5YS?l zpX*^%=`_v6tgSBwnQ6vv#1wm#v5Nd=6tv)W^;V+H^O88q&;A(lUs1AmG7>Jb!>}54 zu}W!H(#jOXY;8%BxTHX%3Xps}h;#R`ZQq);Nje`?iA@H)Uxr5w>?u8ZsTj`SWvh0; za(GhRo_`avKNF6G|Jcx?oGq^-q#h;cvBRw(?r$ZCin*NtE)%~r-+g#q7;A_tNmv`b z|18VfkZMfdU3O3fwOZ!r3@S46_UaHl-<{{s-7z*;+aqrnksO(?{%UBzcd(rFE(fYl znY)9it%(|C#M(gapGzoqy%L3xmee0Tx1X#*ZNU?5!V0T(^_RVHXn1#*+nj5GMn5QY zVP^^%i`m;ieW3XJjYnw&U??im`oXl{osf-KVy;EA2L8wi_sin%J)Zws>`{~`3l5&? zaBsSdw0qX4573jw|WzgmT^Pl=*?CB8c-z3 zM}0Bs&XEN*o&my~HW8y&o`zPxJhKHuz93&LfB(ykcw+%0nT%C`?TUC8aNx@t9j9KV zp?bMj`x`uv0kH@TtlPINBa%gZ+;6GA00^|~tL>X;ld*HjJmVY0zV2{(T3s;n+%p#yF0Uc2 zpI`FWYXHYHio5UI71ooB34pYP;HV9fU^T24OP<$!Gw=nsh~*q&)zr7<`aC==u4e`O z^j+VTQFsu+u!fUe248E>v_G#wXMWIl^h^I#&A7;9Amaa)7zBC zFq{b<@n8%VSbSDrO6rLJ?48R^&7|1vEv|o3E0jeDU^QDIB|tquK5*z|ascLT6I7ti zDa`T;Desi$S8+Gn7tU^91{kZZ_gYrTZuMq1&r%7!98~DNCffMCeNROij;v)#SE>(Y z`Z3sqhPL6m;XvBMC<4afkrI!%5vG~uT2PF}lW>OkVU==x8myA0c;daUej!GPs4+@} zKrtkUc~y}(b6ip`dH9w1aeoL>dDQN&s^4E*xIZEhf<7vaFeCyA6+03&inHXDkLOhF z^D?Hqd^>O~@98gET*Hk^Aq@2tL&M#NN(LO>)%QQTtl74?G|vyAa}@wg2#sj|F=)go zq9fG7R*(WK_q4M=*JWH%Jy`kinb1~GIbKVNtT;s0l4nHK2a4)ZT4G;RuXe!}o$4p) zMwH(u&^ywu8JX@e=5L5!UM}*6p*!@7y=x(e`O>MFbZ-R~FACvnWVrv}OO0YGp@jRO zYty)gLla7g_e(5+EYY?qg$d2HHWceK%!RTP&u^u-Mi%dCj1g2Dv=uX{ZsTv%R5m<` z<*zeS1817X)FL0cyyW&fWa|&?#<6hjaU`HZc0B)g;P6LoiDTL76%TZZrK&S`H%*cH zHSo0LguTa%>1ngRL+fOEg?e;(;is|bHRJUkS$L1;-f)USwaXw4v|(v`oFy#gvS4Rp zqANGtn!~f=8PQ|H%Pv9PKwV#uw&5G=WY$iQ}x^({U&&2ov;K4vrg_%xnV7K@DQ=^G-> z9Pn*OAk|h(UrvUd2K4KTxKdPt;7E5`zEp<3l}VC=lJiH?>#B$n-JG%7h9{%;pZZO2 z{Cs&MqWZ*eVHdiL@{~DJM}vx-G}AQBPjU6cV@SgI}<=$|g~v_-7u7 z>7Wnp50HA0NgCn#^h(CMnr6?8EusTTss$rR>&_H0mKM$g!SwMA3ariZHs%&SYfTbp ze=RK}Zhg7>IaSsyAbtGRm+p=N?vSOXe3h)@nwx1zy3_@^H#uXzkFJaQ4hc@sK2-WK zR&V}(A$2bGr(o1aZ{}y5d|F)kxGvQ0`tyXS_u7+n+bX*sr~0T>_2Jo(t91*WpwR1p zpZkL-CC^Li_zdS@(AO{z4v*OdjOc>zJ6vox^$DV_6e7TTGel8aVOW$KD@M^y-k4!AOE?>LnqOS6qCfPCr9Z9 zx__@gw!v8Sth_`k4iQovFnchk%|i8Sk@u0vVC0)BmMPuW<#dlzGle-eR)~&3gA13W zk0fjhCY%2r@~>v>^`Dp-D8z5^Hda|e?N_dMH4bz}v&XO`k+eZo$qakrj6Y@?!oJka zkB6r`XTIG>E=d^o`x(gN4cnLzv2BOsJidMYb#!d4^(RbLqt}<-1~S0F2Cn_j&btqaMVCHnjT3B1rou1sQ^B?74-XCb)s(2PA5RRbum3;FBedOBdwHciU|=c z9pGp5Nuc@Hyvl*Hn_69h-T39PJN?jS&)GWk(?oVLJI~uk)=+P$U@W4_!Kgd49G{+X zoH=nNDYMkK8`HC4%B#a;n&qZmc>#Ps>SUzIn3d6Iq4C&yC%`mvT^bz$6%5A{R<@v)KN+%^rP&b=*4_@|;zs)o~56-qH*U{{09!XoPZrc(?tqrJ8x@YcR z#$4m=zRzC9h22IgWhzrXK5IF}jo)Hhc|x<~G!6Sm6@*R&I*!^f*cZy(C--xpJ|>_zQZ#lPr4YsO9RiZWdmUh3i8IZfHi ztpkZoXsiIaRsBIO22L_w?w^ljBmuKMZb-iHG2nHMuYVNAkoi@359TG<>0pD}Knb2jNB}ah>WyaD(e?xt zbj^N4o$oTEHp65;(b<^?=P3|S^785SyP8DD{j+BqqvjUv_26{R40q*Eb#Szl{ga6Z zrFRP{Q`9tn-CVCgyC?NCA=bAayn9yS<&9Btb0tk!(2AYCuQMth}#HV9=?p8xL z-Z*_}d2+*|T9ORdyAi0YQa{*ERy-uDCHj2HILZqylQEE@UKUv1#n$e}`mnI=fpnl9 zY~Tqzg)FOPnDY!O60?x5j}2&FHP4g%MO2qHaJLkitln3Hn%qF$N|1SDU$plwng9v! zKGm`ZraoGyN&QnE#;~e%0p@e6{jNU|1VKoNz|`dnyv-auW!@9@El-5Xm;&ZGimVo` z3FrHJ{aVyLL3ukKd1p*T_kQ0MiHM}@0mbL{fieyCCP%{OzVc1VLbvoq@6L zQpDfrjh4NMRYUov4o3lT1b9|}Qo*Z04X}+f>VjI{ag9>esrvdHi|L0Q(vHz(cFyYRG{FbNKhaPWvUbvK#HuvUiNS58hDnk;c~) zC?r8!P_R8UWBo}}kwNI14DD_TSR7B#m{}iert;$ZznAdk&*Jf+Bx56K9}yTOYzk*ga3GOt@YP3 zSbT7O9FUlUXbmRWy+_reG8XxS-rv5KY*BD zq$nWee_CC0O&Y0`Ljqhm6clLTwKR<6M~pahW|Wo01&(xq^*bL;4&OTM%I#Q-X5Pg} zI%2TH+MR3Kl!VY0lO7cBU4VD??A1M>P>;Re_n#E4jzUieMq+;jQgd^rKy&nH29X_& ze)j!bgds(v94$$9zSPwaW0Xw@MiQk(yqj#^q~G2RYLERQD9%rko|-8|cr1NQw47S7 zg_L$(4w3+S`nF0@IZdV^ zLEjKpw}o5m*CEL@+(mL;QJGyg3_``2{q-c%=8*^fvQRZtn11I@n8US=>RvaIblHA{ zn7YWSmmd;?Fkqn=-UQ0!5|vX%$s&*hK@$x-Yv=8-02gqSUHM)2?#ckTvcLoXvX9@| zex5M1()qrK3ZuMDFkhSH4f{fAf&p<>1Tl1CxLN*SQ_K@bXP8hU=lp^TkXe%+iURK7 zc>9|)k1H^$*lm?OV*5hZ5ziv@pT5VwL*4!mIHF2YRr@#jePAr-4?OTenU zVe|kJTKtZW$#70+3y}*=iToMd^&<54jy;<0{XRGt=Ply9`@Q>$ie_q%e9jF@(M{o` z3`wg-l{j=#xCe97G@G0rI!K6Clq;l;2c%#j&+y)Rn@pifz=8!F@~W+Gh{>ymBu4_> z*+Ks1^M^rY-$!{Z1hQ; z7k2TM*cjDO254_3l=&e8b4Ub?hV+MNK;LANhqEAE5szE^7_~Jsxv-t&Iw>lrNkR`$ z*H(2}99=}`;g2zqql8qSv=8O(3h(V-Od06lGL$~wxSm%#fw6sN21@>%^1N6*UAW#V z<&@1hJc+?N*ib#rM0M71s(jn0Eh=9brYeZD)|p7flDN5Yl4noe?CRlpqh+uDNX47t zZ=tS?8IN;ZlY>FU-*ruTSm#<~`aZmMZ)ORBiU4#JJ}Z2&{9Ki2t!-@#&=zkJdaqc? zx>h~(&2LE1+U`>3c;tsyHd0nIbc9AX)_72KB*YXb4U!wxrIY06}d*P$PI!03MrcUDr) zhGaz?qWd5F4eef(ajWmQTTl=M)rbRAfv-;^{CgDsGF}G?nC`ISrYXy%z1I9Fidc^; zOz6NhNJ^wb^RD7I^VJEiC*O&WILIc$Jz-M}=v0S@qFja&?`$>Uz_Hhns|m%dS=^n^ zL;UNnqUTvIxwU=TUkVdK5uc2J!W;_*0&=wI;?glc#pVnLEQ&g1DsUFmt_-A}#L}~k z<>D492h{s}A>|XrH?HpHm_$|P5dtO(30~p`@T~1iPEeR8IP0)o%LACuSY`9!$ky4BI*{8`z9JBz~sHluA1{rLvpV1DX!Y^oE z-<)_T@z|ZnTWJ2E*H@uZ4-O8mvakk$fF5O-mT2ukQ}$T6%4>(Fa3JgdglXt}uv{uh z?s65|$6RTWSb$0VRByvqRV;=2&R(=m#9LA>gOcq|wSRwQ`^tLHH`&GnYZW=sR)wU^ zMa$WPUn+OqOA#&uknm@C;EQlTTS9V8`fU|=989uNZs?EtNQ}TJIVv>$hz5b22L3my zLSuZnmQQX6z~SLK3ZJOn<%R?-5xqTQ(JVay^780T3#wl|^-9NF161>gFmv)Br0-;% zFwFXs|2t&De-U!se@b=vH>>?WC;$Hk{|exrZqwE{08$eJ5U@avH!$waQPeh0<5b3^ z+`aq%Y#YH?Y{VnER)d*u|6pxR1UAPm&p@{wO@UO9-mnSN_*bF}|M%`@h~5iA0=PUp zc#FHk$VO9q2>_Kfn5e;ngW4S?$Bn9U(g9}B+dEFFzxRUpnILhgc%~6US^;2lyKN&M z^oVP=)codhfqd=P--m4C`J5dF&GG{;)6+=2<2ZtwIbC0$R?2Mw8Y~}-I4$)RuU3A2 zkdTltS^116-R!`wkCGDgTGnR@KLBhj>Q)hya+-?ay11;J%rp*X@fsd@xFM_hBoco; zT!8mbe*i#4(<%|(w-d~Qx3)zT0}oEAQY17O(KQmd1;Sagzyo5H9) zCO>W}T|YR%PePOC%=n9$Aqfma^s&#pDm5n18EbL4VD&`LY0pShLfn!eP)B?Za(>Cl zhZZ<><{S>6X@&3<*3(KstOE@02swx{KXrHnkO7Xz1TceEHUmH(1;{Vs7gpfv4lh9l zEsy>rkTQh|PEq)dC7(?EG}J~>#zW0X)mufikIaTS=M$3>8RF)8>Xjy5z>2?=AX+yvvzdMWTi6D-r>^ zbq@kwLx=4;cY?z5Hd3li!&Pk0RIY}%@~sSUL3F8|$5f4qaQWfCGaL@&iB~VV+iDd` z%>~mM7gH{gXiVrvq1_Pf3fu~BL5`$-=N#@gaj{ksNq+W%x2;1mhEa(L3*%J5VyNr& zflpiTLMbY5#NQCsVb{E!fvxKUkKWS&74p((TpaYc?$&<7w&&Lj5h{1!(AU}FkDFGB<3B{l z8;sn^I>;l#m4rUonrVUn&fxKI!OYxoR7}sd`neYX^G0 z(C&p+*x0+ICab!TB_DV|LOoJ1a=5TH38Q*ZwLzaqjy0J&{ochxb(3ik!BIX7O4V(3 z!cU5IbCP31v9jLm& zsaKc;gkw~|{oCSRGrd>W)50!fk**t}6PUC9Kj1Sa#M~*DC@Kc(d9(SbUo#5dj)LE- z?i#rw8*K!gP9}ec&+?|Dr^2UEOHaaR6Y&A}g=N#+Y}M1bS{lE9oN6k6r4{Tl42Pc7 zXB{5dNgSxbv|%ZWsZNJnZ71iO202>g`4C+lsQkID)2&1w-xHy z#JPEkS7#TN^eL-w3k-Wbjn>w~&0REUrTiF-XE)M>NEz|Ys<`V8Rv~Mxs(XjP6M0o!QN{ZFK4$xorfjL^F6kdd{f7R$bU`Dl&htMrW(}TzW{gx$F^KT{@z5IimY@iK7<{ zFX_0p7}0DWsB~`MZ5v-y@nRN5FU$61yP!eqA~AaS18(ud+u08_SkzRYg587Hj@>Rm z>o7mDx^y9Rn1S`ZY35xnXRt-rc!;)1yy-qzgu`9fK?RMp`4O3zBjo?kDoCt{R=g-`&O}z0s_Ktbk0c^zi+6gSuwk9in8(W zj#r!c)Y7Ti9%hwl|cjE0ls0pEV%WG;dMCW*f*180M zdEpp%vNgIUr!%NKHgHPy2d`TCLuExnXW*Srw25WNk57JU+=%4$XA2dGY5!#M4A8`E z!3LuRUv2^EIys_jWHrVOBG-f!WW~IEL>B&D_rVji-+!|v(2npO*c=rjE6}$pTkyJiv<1;f%yu_Z@o-FJNEfAK^CrCgFvS&T^DSZf9c=O`!xU^0(_< zp~5{iUZo9J15;`j(_;z+ZujV=sPG~tAv#~xOv>dXhQ^ypeTgWc0MxC5HhEHv9lcS~ zv30vV?T~Ix1{VXP=A61xQs}NGpjGnWGzl#^&CIfBUMb*Ntfj{l}0VT|_67FO?kL zjjFGx!iH4l9|m;~)bu>eWzMt>L54wUEhedFs6j?&c*l3+8GiA# z*`k`Pi{p(-9)-sDf@tCwEQ7ob0UGtSNyJ*DP!8YT^zmu*Zhxfd?VzbWe};U3$_axKq)_QYFggA9af9Bp_`+`oiKTv2&wg$4cF6xOBVv+m}Wo z%1}S7N5lACJ5@}#5S64L@v_b8de*Ub>fXa3l-+2?sN;GF&aNx;UR7YSuEu)}D|OQn zNuBMaih3_W`&{1T=JDVrZbnku;pgBeRYu8ds34KoyE0BVx8E*NzXV)rGE&IjLXnPA zrxW!R+`@y`dtUnD7M&;!a|MHGbRKW9X-`cupy(r)g30Q8EVRyQth~dLd~XPxwYi{= z?d;`-9H$Ire;qzupPKme{CJeQT7fFaM%*kQ7UxJdq58%l7Y27sXoSF4ABm`da<75wp=mfHyG5WaZU4bkBmtYP)@N zs{BtKC|CyeZ6%IZfB{ALv@M(bty?&q*4|??sd9J$rNd5Z^VHEeqtrhq`LkO+cdXGe z^=nC*MgoF7pR~CQ71v$oK|d59UMRD<&csdoTHFuaOvtEB+J8sJR3o8hF(!CQDjFm= z7}4^#aaH~}e3=t=A^c-)xyD#S)fb%wK|^AXo@hxodZbK3gA#u=QIDTyb*L&0yAU~? zfFnKsgL*Hk``r5esfBD9kld91mC-F>SBCBbbvFPiQTm47nI84f>P!Q4a&nd8>A9I; z8e%L&mjSqOC>_#G+K5f#<|u|?LmWj;}I>>jixK@<-@^3 zh26ITY)X5w{se^@5HK_2)CC4w?sL;atcb)EJcQ3b@#p+VMD^IY4@*UR%W7s}%b=Qp zg`H+-qr>AsbUjMK=kCS@G*^1P6GT7$tjO-)0J4uJ!KQ10H3ezVvy96 zjGu27EpBMA@d2uh0haS>@BsOPjTwD=Nv6D@_1B8YbilV+iaMk2d>pbXE%7#S@7hP0oRR}3297A#E79z!2_9f=0N zeA-p85JlZfhM$1|HrxmgZm>8AGN_{IpwJ)P@SWu}Z;d%uV|iK&SD)Iu)oe94l*NNz z%G`B)>f!>NJNW4CaO&ChG~+5+{PQ`iZJ>m*evWGH0zLNE3b5lu0wVXOKYtn9!@fC27UOhi;B;HIBFeY0G%`=YsOQWuNcZQZJ#Gbs4rR7ij2KYxt32^w+cO`t zaHXA>#SV%h$Wj?m*x6>Ege4OkG+l2i4O%eEY)(TOaE4?Soa;28LDlhPy;GN~5|(6! zrCco~_kq^3;630y!#_-&w-oBrbw7x{qh&>Ui22sJpUtqVrcrvuiKKhJ4e{L?>b*VO zZBEiQ@5qLiIyLnC8q0P)I$qIp`Bk)Wc6)>5u?x%p+a@osdO~mjLig?6!f&;buC}+D z`cF-ubMpOuhBjqOc)6$wHNZK(qzZ6HL(o^(1JFZ9t<2u0zm1!tPt{wi-xQiVPgw%0 zWRQVduLw{ ( - + + + {assets} From ad8ea82611ff4db6c671f896c9dd127f49bbea2a Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 27 Aug 2025 17:41:24 -0500 Subject: [PATCH 050/112] add synthetic user message before bash execution (when using !) (#2283) --- packages/opencode/src/session/index.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts index 4a9a6785de..41f85b6ea8 100644 --- a/packages/opencode/src/session/index.ts +++ b/packages/opencode/src/session/index.ts @@ -1035,6 +1035,25 @@ export namespace Session { export type ShellInput = z.infer export async function shell(input: ShellInput) { using abort = lock(input.sessionID) + const userMsg: MessageV2.User = { + id: Identifier.ascending("message"), + sessionID: input.sessionID, + time: { + created: Date.now(), + }, + role: "user", + } + await updateMessage(userMsg) + const userPart: MessageV2.Part = { + type: "text", + id: Identifier.ascending("part"), + messageID: userMsg.id, + sessionID: input.sessionID, + text: "The following tool was executed by the user", + synthetic: true, + } + await updatePart(userPart) + const msg: MessageV2.Assistant = { id: Identifier.ascending("message"), sessionID: input.sessionID, From 87cf08a9e797958fc54505448b408893f38f2815 Mon Sep 17 00:00:00 2001 From: Aiden Cline <63023139+rekram1-node@users.noreply.github.com> Date: Wed, 27 Aug 2025 18:14:27 -0500 Subject: [PATCH 051/112] docs: add copy button to user messages too (#2285) --- bun.lock | 4 +--- packages/web/src/components/share/content-text.tsx | 2 ++ packages/web/src/components/share/copy-button.module.css | 1 - packages/web/src/components/share/part.module.css | 6 ++++++ 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/bun.lock b/bun.lock index 62b2e88fc4..82f35ef8d4 100644 --- a/bun.lock +++ b/bun.lock @@ -494,7 +494,7 @@ "@hey-api/json-schema-ref-parser": ["@hey-api/json-schema-ref-parser@1.0.6", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.0", "lodash": "^4.17.21" } }, "sha512-yktiFZoWPtEW8QKS65eqKwA5MTKp88CyiL8q72WynrBs/73SAaxlSWlA2zW/DZlywZ5hX1OYzrCC0wFdvO9c2w=="], - "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.80.1", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-AC478kg36vmmrseLZNFonZ/cmXXmDzW5yWz4PVg1S8ebJsRtVRJ/QU+mtnXfzf9avN2P0pz/AO4WAe4jyFY2gA=="], + "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="], "@hono/zod-validator": ["@hono/zod-validator@0.4.2", "", { "peerDependencies": { "hono": ">=3.9.0", "zod": "^3.19.1" } }, "sha512-1rrlBg+EpDPhzOV4hT9pxr5+xDVmKuz6YJl+la7VCwK6ass5ldyKm5fD+umJdV2zhHD6jROoCCv8NbTwyfhT0g=="], @@ -3210,8 +3210,6 @@ "@openauthjs/solid/@openauthjs/openauth": ["@openauthjs/openauth@0.4.2", "", { "dependencies": { "@standard-schema/spec": "1.0.0-beta.3", "aws4fetch": "1.0.20", "jose": "5.9.6" }, "peerDependencies": { "arctic": "^2.2.2", "hono": "^4.0.0" } }, "sha512-8+Bia559iffrZXfQ0LWXrVVVriochS88pDtB8indyQ1S+40MQgDBu8aBzKt+fgSrTmoQGCTT+wlOXgbjc9qIcw=="], - "@opencode-ai/sdk/@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.81.0", "", { "dependencies": { "@hey-api/json-schema-ref-parser": "1.0.6", "ansi-colors": "4.1.3", "c12": "2.0.1", "color-support": "1.1.3", "commander": "13.0.0", "handlebars": "4.7.8", "js-yaml": "4.1.0", "open": "10.1.2", "semver": "7.7.2" }, "peerDependencies": { "typescript": "^5.5.3" }, "bin": { "openapi-ts": "bin/index.cjs" } }, "sha512-PoJukNBkUfHOoMDpN33bBETX49TUhy7Hu8Sa0jslOvFndvZ5VjQr4Nl/Dzjb9LG1Lp5HjybyTJMA6a1zYk/q6A=="], - "@opencode/cloud-web/solid-js": ["solid-js@1.9.5", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "^1.1.0", "seroval-plugins": "^1.1.0" } }, "sha512-ogI3DaFcyn6UhYhrgcyRAMbu/buBJitYQASZz5WzfQVPP10RD2AbCoRZ517psnezrasyCbWzIxZ6kVqet768xw=="], "@opentelemetry/instrumentation-grpc/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], diff --git a/packages/web/src/components/share/content-text.tsx b/packages/web/src/components/share/content-text.tsx index c52e0dfcc7..5db12a537b 100644 --- a/packages/web/src/components/share/content-text.tsx +++ b/packages/web/src/components/share/content-text.tsx @@ -1,6 +1,7 @@ import style from "./content-text.module.css" import { createSignal } from "solid-js" import { createOverflow } from "./common" +import { CopyButton } from "./copy-button" interface Props { text: string @@ -30,6 +31,7 @@ export function ContentText(props: Props) { {expanded() ? "Show less" : "Show more"} )} +