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 d674cc70d..6a661521c 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 e6ad10162..a886cd312 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 51d835a6d..1527a1b08 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 f5833afcb..b17ac694a 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 e918f2af1..7cb244001 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 ecf95ff98..b293e5b0b 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 cbe35f615..08014cf2c 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 7076b2d4d..8466141b0 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 8466141b0..baeca558b 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 70705f02e..2d20771ce 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 af30fafc3..666017fe5 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 8d6005d04..99ab3f0dd 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 bc604aa5e..8d6bb43c5 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 d03c3e59e..d91b1acb2 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 4f7e6c261..e7ced0791 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 5024f2466..b7c735df5 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 2437a1f98..4d67ba1ca 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 8b9cd1d2c..488a7ce05 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 e69839c88..14147d140 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 baeca558b..33ddeff05 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 2d20771ce..6cd59e147 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 666017fe5..f39696891 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 99ab3f0dd..d245c4cef 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 8d6bb43c5..65ab3452f 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 d91b1acb2..555f3ec75 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 e7ced0791..e1af08bbb 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 b7c735df5..739a5609e 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 4d67ba1ca..2d8af21bf 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 488a7ce05..fd8a3c4fd 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 14147d140..61deee06c 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 3869ea8a4..621cf8720 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 b17ac694a..a8d536d95 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 208b3dd95..000000000 --- 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 800731d84..000000000 --- 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 f7ce7982b..b0d169e0b 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 1e16bde8c..b844c497e 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 d73d1d3a4..ad6b47f92 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 b0d169e0b..9ca0e0172 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 3a5287ca3..ae34f4b52 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 ae34f4b52..d552b78ec 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 6cd59e147..e47a166b0 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 f39696891..69773a852 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 d245c4cef..d3f0658d8 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 65ab3452f..66bf05f23 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 555f3ec75..3d9f7e754 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 e1af08bbb..1ead404f6 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 739a5609e..25013388c 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 2d8af21bf..bcf389988 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 fd8a3c4fd..4f9cb0f80 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 61deee06c..c003b3d60 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 9ca0e0172..d1001f794 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 e47a166b0..63c415887 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 69773a852..207148452 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 d3f0658d8..5554c70c2 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 66bf05f23..8a9d82257 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 3d9f7e754..1f9d43af8 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 1ead404f6..eef479e43 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 25013388c..602ec7dc3 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 bcf389988..47791c5ac 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 4f9cb0f80..14239f153 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 c003b3d60..d1cadc02c 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 d1001f794..e40748535 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 63c415887..2030d0541 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 207148452..2198794a9 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 5554c70c2..8b763de4f 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 8a9d82257..46893f965 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 1f9d43af8..3547ec0c1 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 eef479e43..29ac2931a 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 602ec7dc3..9985b6541 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 47791c5ac..01fd7938b 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 14239f153..e338eae24 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 d1cadc02c..82e9c607b 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 25d917e14..4272378ce 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 3703284e7..678f60218 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 46c52ec45..2636df967 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 a8d536d95..28f665af3 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 ce78347e0..342073b9b 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 9d7b808c8..de1cf8b39 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 f707d35ff..2041ac35f 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 621cf8720..59c9536ac 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 06eb6ee7d..045bc596c 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 a886cd312..113bad697 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 e40748535..d1001f794 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 2030d0541..98eb67ef3 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 2198794a9..0078252d2 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 8b763de4f..f61f0a731 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 46893f965..1d0184131 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 3547ec0c1..f9a29310c 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 29ac2931a..6f5b6fc57 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 9985b6541..9ef1a2a82 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 01fd7938b..ad54199c3 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 8e9662ad5..1c4fc5b35 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 e338eae24..a1b55ad4d 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 82e9c607b..8a14a2791 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 861efc6cd..207b328b3 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 207b328b3..0ceeb47a3 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 88654ff07..b6ba0db64 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 28f665af3..918bf6458 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 e06ab0eab..efebc5cb4 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 2cd807f31..62b2e88fc 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 9ef1a2a82..887b0a735 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 ad54199c3..3f9815017 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 8346fd8a2..29b9de906 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 46a62694c..34a8d0bec 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 ce89a34cc..06f21e3d8 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 f3b116bae..db8e544cf 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 84648c855..209bfbe8e 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 e496d4557..bc7b230f4 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 8a4a13410..066061605 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 0a09619d1..68ad1a778 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 1e27c8d18..96be3bc5a 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 000000000..8f7fac549 --- /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 3a12e74c6..16408b2d0 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 000000000..be18c608a --- /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 b00216b83..f900c24f0 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 6002d135a..7ce7d3903 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 000000000..22de6f2a8 --- /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 000000000..f1baac30a --- /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 eb8aea1e8..4482a6fa4 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 9b0c7009e..579649961 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 057ddb49e..15b3990d4 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 9da67a1ba..31013fc08 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 85c3cc9b9..45310a0b2 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 bbea41540..5d7c852cb 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 22dcb2b6d..edeb35790 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 98eb67ef3..100377666 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 100377666..0eb3ec6c2 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 918bf6458..b6ed1d56e 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 82f35ef8d..921a11ec9 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 6f5b6fc57..5e80b480b 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 7613e920d..40e0c2cfc 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 5043f9688..c6e7fedb2 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 b293e5b0b..53272bf90 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 a299d65af..b3074bb54 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 d1001f794..71e5b9f71 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 be38c0eba..eb2eb19b7 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 664111fb2..2ac8fb7a3 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 88d3214c1..d6c5887c8 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 46fe93ac4..1d448bbe0 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 504318995..bea9a3664 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 d6c5887c8..90db24d21 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 15b3990d4..fcc83abac 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 90db24d21..afcd3feae 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 fc7f49cb9..b54c08936 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 000000000..ee5b038d5 --- /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 265296f5b..d7fbc8fb5 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 c6e7fedb2..434606d86 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 579649961..a2fa654d2 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 fcc83abac..349d3952b 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 349d3952b..2b7678d0b 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 2b7678d0b..7f8433e7e 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 706a64323..98d03753f 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 35846acd9..31d11e2dd 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 1a7bb2946..94ba23b83 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 000000000..cf4f6e410 --- /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 000000000..7914926ff --- /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 98d03753f..1afcc979e 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 bea9a3664..f86960dc0 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 afcd3feae..59fbff6e6 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 7f8433e7e..7a43f2624 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 1afcc979e..00e61a0c7 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 7a43f2624..3474a9931 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 000000000..e2ecb182b --- /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 1d448bbe0..bbf3f4cd7 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 f86960dc0..54bb6f4a3 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 bbf3f4cd7..f35ce0a34 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 e2ecb182b..214d80c1b 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 000000000..843e634f8 --- /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 853b3c386..a4847ed43 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 31d11e2dd..35846acd9 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 000000000..f69feade1 --- /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 000000000..258ebe413 --- /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 d1ffb51e0..13fb27683 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 000000000..cbfcccf51 --- /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 5a565ab9a..d73c178bc 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 214d80c1b..d0678ef83 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 843e634f8..66ae46ed4 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 35846acd9..675ffdde2 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 1852af5b0..4d20e324c 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 41f85b6ea..5cd76124f 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 40e0c2cfc..ea3f2d211 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 33e3deb81..025b3707b 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 921a11ec9..432aaf37f 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 5e80b480b..43908b8d3 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 53272bf90..cbf12e504 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 b6ed1d56e..d977fcb68 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 5cd76124f..e4a3162a6 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 e4a3162a6..a0b3be3c1 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 432aaf37f..fe4d984a9 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 0eb3ec6c2..3a236e09b 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 000000000..c4b3940aa --- /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 59fbff6e6..9a5606a44 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 000000000..a61b728ef --- /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 00e61a0c7..f507b5152 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 1d0184131..95757e091 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 4e99177c5..162df1b95 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 a1b55ad4d..3a36c74b9 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 ac1bac7c1..4d864db4a 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 fe4d984a9..251e00710 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 162df1b95..2ba768078 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 358891fdf..5715d2ea9 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 d0678ef83..0724dd7f4 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 f507b5152..abada1c89 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 000000000..8d1006fca --- /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 66ae46ed4..7ea96aed2 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 675ffdde2..f1a097d2f 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 7ce7d3903..3b4353d82 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 3474a9931..b9344bc55 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 abada1c89..bfeb06884 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 8d1006fca..81bdff5b7 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 7ea96aed2..f4a8b2af2 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 dcd871c5f..7e1a1b397 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 0724dd7f4..865e76519 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 bfeb06884..6000228dc 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 81bdff5b7..90ef8ccaf 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 f4a8b2af2..3390fbea6 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 6000228dc..8e6a0ee65 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 8e6a0ee65..e3eac121b 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 6746313e3..0d04ea25b 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 251e00710..9c136e28c 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 0ffa557f9..4dd799edc 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 dc6f10c22..a44606d2e 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 edeb35790..4e38df07e 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 f69feade1..95c2c268d 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 b9344bc55..5a4e07978 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 258ebe413..29f0f2484 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 c65363cb8..82c487834 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 94ba23b83..705999c26 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 f35ce0a34..894f578f8 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 000000000..1543145dc --- /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 5d7c852cb..79d7805de 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 2f498276f..c8b39990f 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 f60ec81a0..9c4f5cc0d 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 13fb27683..542aef96d 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 2ba768078..a38d1b613 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 f60ec81a0..9c4f5cc0d 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 5715d2ea9..8725b4568 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 e3eac121b..07f4fc0d0 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 000000000..166466ef8 --- /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 532b22963..8646362a2 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 07f4fc0d0..cf6c0bdd2 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 0d04ea25b..887469e33 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 a0b3be3c1..4b66cdee3 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 cf6c0bdd2..65b2a3887 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 9c136e28c..743c2cb05 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 865e76519..864fab4d3 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 c8b39990f..aed02b4d4 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 76add878f..000000000 --- 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 55c54c1f1..000000000 --- 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 07b0649fe..000000000 --- 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 95757e091..000000000 --- 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 9b707ea49..000000000 --- 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 5e7cf124f..000000000 --- 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 5ccb35ff1..000000000 --- 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 aae71ddde..000000000 --- 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 e6aabafd3..000000000 --- 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 bd6a45dd1..000000000 --- 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 7800aeca0..000000000 --- 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 169e45a1e..000000000 --- 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 5dd33a149..000000000 --- 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 c7481cb0d..000000000 --- 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 5e58892a5..000000000 --- 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 88bef5800..000000000 --- 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 6afd2e04d..000000000 --- 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 3958e322d..000000000 --- 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 0037d97ff..000000000 --- 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 50c58ee30..000000000 --- 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 4ae2989be..000000000 --- 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 e5b192a2b..000000000 --- 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 0a348f48f..000000000 --- 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 6bad39840..000000000 --- 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 c64faa18e..000000000 --- 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 711ed8fc2..000000000 --- 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 116ed156c..000000000 --- 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 251e243fb..000000000 --- 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 fee4e3cd3..000000000 --- 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 3bf759316..000000000 --- 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 e1ee6f753..000000000 --- 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 889102dda..000000000 --- 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 f1bc93250..000000000 --- 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 4a99ef027..000000000 --- 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 087b94411..000000000 --- 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 af2174786..000000000 --- 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 101f23d2b..000000000 --- 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 9604f9865..000000000 --- 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 59867818f..000000000 --- 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 59535d763..000000000 --- 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 e0dd5fef4..000000000 --- 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 7ee32bfdc..000000000 --- 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 117f596d0..000000000 --- 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 a8edfeff5..000000000 --- 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 af0c46f3b..000000000 --- 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 24b2db3f2..000000000 --- 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 f4aa1a0a9..000000000 --- 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 4a061d756..000000000 --- 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 c09bbc47a..000000000 --- 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 23dd74c6e..000000000 --- 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 d1c6f4e7f..000000000 --- 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 b6a7e9066..000000000 --- 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 98d5b9cea..000000000 --- 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 8a569641e..000000000 --- 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 542aef96d..b7b75938a 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 743c2cb05..dc231b635 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 3a236e09b..7e6eaf4b5 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 a44606d2e..dc6f10c22 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 000000000..1753cf59d --- /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 95c2c268d..671b589c5 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 29f0f2484..61d14a645 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 7d5871a07..2a2352179 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 82c487834..fdecb6c56 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 0078252d2..cf80a0610 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 705999c26..620a72212 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 894f578f8..aa5e3658c 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 000000000..e69de29bb diff --git a/cloud/function/src/auth.ts b/cloud/function/src/auth.ts index 79d7805de..17c3fa8ea 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 aed02b4d4..ffbcc1b89 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 000000000..56bdf44ca --- /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 000000000..fd9fa6f34 --- /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 1543145dc..ad3fbe2a8 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 000000000..a13102198 --- /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 000000000..9c4f5cc0d --- /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 000000000..829dbad01 --- /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 7e6eaf4b5..cac35a921 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 9a5606a44..5b7d3f54b 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 2a2352179..2907fdbb3 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 a13102198..d7dbb6c6d 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 5b7d3f54b..a167dd3d4 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 65b2a3887..81013dc92 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 3390fbea6..e18b410ee 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 864fab4d3..920276e8c 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 81013dc92..416128867 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 cac35a921..d8b9f22a6 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 cf80a0610..477af4f2e 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 f61f0a731..3cc2928ea 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 f9a29310c..0acfb440a 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 43908b8d3..e41fd55a7 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 887b0a735..1f5fcf88e 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 3f9815017..b6793d1ad 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 3a36c74b9..128b920cd 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 8a14a2791..636f3f4d0 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 2636df967..da743628d 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 d977fcb68..62990eb5d 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 2ffe3ea94..72e261f82 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 4272378ce..181d8c1e7 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 0c52ca84c..710049707 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 a61b728ef..ca38be89b 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 920276e8c..6876ae962 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 416128867..ccdfe42f5 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 2c95cdbb7..853b3c386 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 5382321e3..35846acd9 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 f773dbd9c..74fb19361 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 b99f35e1f..7613e920d 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 631c9ab4a..27d4aa921 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 f900c24f0..a50f5e142 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 1c4fc5b35..5043f9688 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 3dd34a413..f829e2280 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 7cb244001..4a9a6785d 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 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 ( - + + + {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 4a9a6785d..41f85b6ea 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 62b2e88fc..82f35ef8d 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 c52e0dfcc..5db12a537 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"} )} +