From 15dfacaa2488c8efa0ad6a0aa8540883e55d6bd0 Mon Sep 17 00:00:00 2001 From: P-Theo Date: Sat, 19 Sep 2026 20:21:43 +0300 Subject: [PATCH 1/2] chore: remove decorative and redundant comments --- scripts/check-compatibility.mjs | 3 --- src/debug.ts | 3 --- src/options.ts | 3 --- src/plugin.tsx | 3 --- src/tracker.ts | 10 +++------- tests/plugin.test.ts | 3 +-- 6 files changed, 4 insertions(+), 21 deletions(-) diff --git a/scripts/check-compatibility.mjs b/scripts/check-compatibility.mjs index cd2cd25..2661fd9 100644 --- a/scripts/check-compatibility.mjs +++ b/scripts/check-compatibility.mjs @@ -1,6 +1,3 @@ -// Verifies the OpenCode 2 compatibility pin in package.json and the floor -// stated in the README. The pinned beta is the build and test baseline: move -// it in the same pull request as the fix or feature that needs it. import { execFileSync } from "node:child_process" import { readFileSync } from "node:fs" import { resolve } from "node:path" diff --git a/src/debug.ts b/src/debug.ts index 254af38..f3b2b28 100644 --- a/src/debug.ts +++ b/src/debug.ts @@ -2,9 +2,6 @@ import { appendFileSync, lstatSync, mkdirSync, mkdtempSync } from "node:fs" import { tmpdir } from "node:os" import { join } from "node:path" -// --------------------------------------------------------------------------- -// debug -// // Off unless asked for: an unconfigured install must never touch disk. // // The log goes inside an owner-only directory instead of straight into the diff --git a/src/options.ts b/src/options.ts index d6efdac..26c2b08 100644 --- a/src/options.ts +++ b/src/options.ts @@ -1,6 +1,3 @@ -// --------------------------------------------------------------------------- -// options -// // `ctx.options` is host-supplied JSON (Record), so this is a real // parsing boundary: every value is validated and clamped, and anything invalid // falls back to the default rather than propagating NaN into the arithmetic. diff --git a/src/plugin.tsx b/src/plugin.tsx index 38cc501..69c22d8 100644 --- a/src/plugin.tsx +++ b/src/plugin.tsx @@ -5,9 +5,6 @@ import { configureDebug, isEnvEnabled, mark } from "./debug.js" import { TpsTracker } from "./tracker.js" import { formatLabel, resolveOptions } from "./options.js" -// --------------------------------------------------------------------------- -// plugin - // Event payloads are taken from the SDK's own union (via the non-generic // `data.listen` signature) rather than restated structurally: handlers are // contravariant, so hand-written shapes keep typechecking after a field rename. diff --git a/src/tracker.ts b/src/tracker.ts index f950d8d..820ffe5 100644 --- a/src/tracker.ts +++ b/src/tracker.ts @@ -1,9 +1,6 @@ -// --------------------------------------------------------------------------- -// tracker (UI-free) -// -// Measures the rate of the observable model stream: bytes to a rolling -// estimate while output arrives, exact step usage once the host reports it, -// and a frozen average after the run ends. +// Measures the rate of the observable model stream (UI-free by design): bytes +// to a rolling estimate while output arrives, exact step usage once the host +// reports it, and a frozen average after the run ends. import { mark } from "./debug.js" @@ -14,7 +11,6 @@ export interface TpsConfig { export const DEFAULT_CONFIG: TpsConfig = { bytesPerToken: 4.75, } -// The frozen final average stays visible until the next prompt starts a new run. export const BYTES_PER_TOKEN_MIN = 1 diff --git a/tests/plugin.test.ts b/tests/plugin.test.ts index ee70360..208ed7f 100644 --- a/tests/plugin.test.ts +++ b/tests/plugin.test.ts @@ -6,8 +6,7 @@ import { DEBUG_DIR_PREFIX } from "../src/debug.ts" import type { TpsOptionsInput } from "../src/options.ts" import definition from "../src/plugin.tsx" -// --------------------------------------------------------------------------- -// setup wiring: the reactive path cannot be rendered headlessly, but the parts +// Setup wiring: the reactive path cannot be rendered headlessly, but the parts // that matter (which events are subscribed, and when the render timer runs) are // observable through a fake context and a patched setInterval. From 53f85f0654cdf55d54ac63a0a64dbbdc940a9fff Mon Sep 17 00:00:00 2001 From: P-Theo Date: Sat, 19 Sep 2026 20:21:56 +0300 Subject: [PATCH 2/2] fix: support OpenCode 2.0.10 The current theme API exposes text.muted instead of text.subdued. Update the indicator and pin the development baseline to 2.0.10, including the renamed CLI executable used by CI. Document the white-text fallback observed with older themes. --- .github/workflows/ci.yml | 2 +- README.md | 4 +- docs/release.md | 2 +- package-lock.json | 852 ++++++++++++++------------------ package.json | 6 +- scripts/check-compatibility.mjs | 14 +- src/plugin.tsx | 2 +- tests/entrypoint.test.tsx | 4 +- tests/plugin.test.ts | 4 +- 9 files changed, 393 insertions(+), 497 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 40124bd..66608f1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,7 +30,7 @@ jobs: # The compatibility check needs the CLI, but running its postinstall would # restore dependency lifecycle-script execution. The runner is Linux x64. - name: Prepare the OpenCode CLI - run: install -m 755 node_modules/@opencode/cli-linux-x64/bin/opencode2 node_modules/@opencode/cli/bin/opencode2.exe + run: install -m 755 node_modules/@opencode/cli-linux-x64/bin/opencode node_modules/@opencode/cli/bin/opencode.exe - run: npm run check:compatibility diff --git a/README.md b/README.md index cd338f0..a42eb56 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,9 @@ When OpenCode reports terminal usage, the token count becomes exact while TPS re ## Install -Built against the OpenCode 2 preview. The earliest known compatible beta is `0.0.0-beta-17595`. The TUI plugin API is still moving, so a much newer or older build may drop the indicator without an error. If the figure never appears, check your version first, then [open an issue](https://github.com/P-Theo/opencode2-tps/issues). +Built against the OpenCode 2 preview. The earliest known compatible beta is `0.0.0-beta-17595`. If the figure never appears, check your version first, then [open an issue](https://github.com/P-Theo/opencode2-tps/issues). + +The current plugin release targets the theme API in OpenCode `2.0.10`, using `ctx.theme.text.muted` in place of the old `ctx.theme.text.subdued` field. On older versions that only provide `subdued`, the indicator falls back to pure white (`#ffffff`) instead of the muted theme color. Install it with the CLI's plugin command, which adds the entry to `~/.config/opencode/cli.json` for you: diff --git a/docs/release.md b/docs/release.md index 6db36e5..41a0532 100644 --- a/docs/release.md +++ b/docs/release.md @@ -4,7 +4,7 @@ Maintainer runbook. A path entry loads the `tui.tsx` source through the host's transform; an installed package loads the pre-built `dist/tui.js` through the `exports` subpath. Those are two different code paths, so the bundle gets tested before it goes out. -The pinned `@opencode/*` beta is the build and test baseline. Move it in the same pull request as the fix or feature that needs it; CI validates the pin format, the README compatibility floor, and that the installed CLI reports the pinned version. +The pinned `@opencode/*` version is the build and test baseline. Move it in the same pull request as the fix or feature that needs it; CI validates the pin format, the README compatibility floor, and that the installed CLI reports the pinned version. A docs-only release skips steps 1 to 5. The bundle is unchanged, and CI already packs and imports the artifact on every push to `main`. Go straight to step 6. A README change that matters on the package page needs a patch release to reach it, because npmjs.com only refreshes the rendered README when a new version is published. diff --git a/package-lock.json b/package-lock.json index 3ba96f4..37faf06 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,9 +11,9 @@ "devDependencies": { "@babel/core": "^7.29.7", "@babel/preset-typescript": "^7.29.7", - "@opencode/cli": "0.0.0-beta-19381", - "@opencode/plugin": "0.0.0-beta-19381", - "@opencode/theme": "0.0.0-beta-19381", + "@opencode/cli": "2.0.10", + "@opencode/plugin": "2.0.10", + "@opencode/theme": "2.0.10", "@opentui/core": "^0.5.10", "@opentui/solid": "^0.5.10", "@oxlint/plugins": "^1.78.0", @@ -197,9 +197,9 @@ } }, "node_modules/@aws-sdk/core": { - "version": "3.977.9", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.977.9.tgz", - "integrity": "sha512-reqPFEQrZxDZpeGj4PFMepBeR5LGYHRqq/L0motTzgFkCRBA4rFdaVXDSLYyGHhxVz7sT2PDnPN9CluGSfgyJA==", + "version": "3.978.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.978.0.tgz", + "integrity": "sha512-2yX9LUmxPklVjSGTb8dfnWRJSiFQ3TeH2nn7G1mdKHTfnabzF0+gfrS8rYfLWmZrQ8A3mEcxMJjRc51dL5KWaA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -217,13 +217,13 @@ } }, "node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.972.69", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.69.tgz", - "integrity": "sha512-vpsh9VWmQVC/nsdzf72F2yUMBOFT1aq+hoLseYV03zjVXVHkjqSNJskFRKPFxc3MRFrHNbSSmOwsbYE15u9ecw==", + "version": "3.972.70", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.972.70.tgz", + "integrity": "sha512-KlU89w6Hmb4oZB5zFz/MNIhPOBQGVE7KrDr3BTPCwC4W+q566YH8tGNsAML781LKATtqmNCGFry8XvsJ2XPusg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/nested-clients": "^3.997.44", + "@aws-sdk/nested-clients": "^3.997.45", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", @@ -234,13 +234,13 @@ } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.70", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.70.tgz", - "integrity": "sha512-H404B7dJl2mCrBqahDEYsanB0xhdDp6tXnXcTUnXmmpy2Q3J0Ho0bUajZ2jr/RdwzCyS59Gi8xXIFwPLGBl6Uw==", + "version": "3.972.71", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.71.tgz", + "integrity": "sha512-JN+JHruYZw3GUZB8YGAlDk4wTDPOEAEEdEzj5nS0xodWR4smzHsN7PnK2j6IeOsDIj2aqua5DSbhXl9Gtf90FQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.977.9", + "@aws-sdk/core": "^3.978.0", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", @@ -251,13 +251,13 @@ } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.72", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.72.tgz", - "integrity": "sha512-X98zYOrVOeuosCX+6ktf29FC2N2GHPLia7qv6mzPzTc+RPAuHWCDS++Z6JK7eGYqb/v6uaW7bAXaOvDBfol+0w==", + "version": "3.972.73", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.73.tgz", + "integrity": "sha512-uyYYnJOnlis8uQzaYGPd7N1JoioCoNpXgnkXYixsWJXHXgXyYi8WXJSDfofxJeWfQIGWLe2Nwyq60Uc7MZdVOg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.977.9", + "@aws-sdk/core": "^3.978.0", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/fetch-http-handler": "^5.7.2", @@ -270,20 +270,20 @@ } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.973.15", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.15.tgz", - "integrity": "sha512-Rykg6s5ceBuynMOGWgoowO4N+27JfnqXAnVaSunZl0hOO1XodSrxGNz6sCEbnmS0lAfQZDKyb3fbr46gSuv6Sg==", + "version": "3.973.16", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.973.16.tgz", + "integrity": "sha512-i++ly+0Uxa+u3ebSSyr0S/3CFhFJDxCXT3+Zj+mW2bXenEx5bKGCdTIKFu39SgXBNhWDjex/8cXUx9MUTMCrTw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.977.9", - "@aws-sdk/credential-provider-env": "^3.972.70", - "@aws-sdk/credential-provider-http": "^3.972.72", - "@aws-sdk/credential-provider-login": "^3.972.77", - "@aws-sdk/credential-provider-process": "^3.972.70", - "@aws-sdk/credential-provider-sso": "^3.973.14", - "@aws-sdk/credential-provider-web-identity": "^3.972.76", - "@aws-sdk/nested-clients": "^3.997.44", + "@aws-sdk/core": "^3.978.0", + "@aws-sdk/credential-provider-env": "^3.972.71", + "@aws-sdk/credential-provider-http": "^3.972.73", + "@aws-sdk/credential-provider-login": "^3.972.78", + "@aws-sdk/credential-provider-process": "^3.972.71", + "@aws-sdk/credential-provider-sso": "^3.973.15", + "@aws-sdk/credential-provider-web-identity": "^3.972.77", + "@aws-sdk/nested-clients": "^3.997.45", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/credential-provider-imds": "^4.4.16", @@ -295,14 +295,14 @@ } }, "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.77", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.77.tgz", - "integrity": "sha512-Jb59xfEISoN5mmbnA+HYqdtrSX3CgCtJoof+V5D8/TgUI56W63GEEd5Y58WijU3Ou6+WEgaLD1feVzaRXV5IDQ==", + "version": "3.972.78", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.78.tgz", + "integrity": "sha512-eUtswnXu0+Ii9ieRK+0L7aPFV3Z/dnW2VntJzjBP9xs8s+8p5nBNuymIXtXwZ+5r5+XJP3e32nMkuZ/r0HozEA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.977.9", - "@aws-sdk/nested-clients": "^3.997.44", + "@aws-sdk/core": "^3.978.0", + "@aws-sdk/nested-clients": "^3.997.45", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", @@ -313,18 +313,18 @@ } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.82", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.82.tgz", - "integrity": "sha512-znDkEOGXB8W3kG1LJUKP3foBZY/9qLM0eil/DxWXSp37XsdsRLQHE/d/OaCGGVgKpA6znR38h/+INk8do1FjiA==", + "version": "3.972.83", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.83.tgz", + "integrity": "sha512-jdso7ejzfRnatxMUZK4S/U6KbaDPCvfIV4XL+IQAPFDBt5rj5Fq595euqlK8Le4lNCMFR9oUpt+1l0aMgaayOQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.70", - "@aws-sdk/credential-provider-http": "^3.972.72", - "@aws-sdk/credential-provider-ini": "^3.973.15", - "@aws-sdk/credential-provider-process": "^3.972.70", - "@aws-sdk/credential-provider-sso": "^3.973.14", - "@aws-sdk/credential-provider-web-identity": "^3.972.76", + "@aws-sdk/credential-provider-env": "^3.972.71", + "@aws-sdk/credential-provider-http": "^3.972.73", + "@aws-sdk/credential-provider-ini": "^3.973.16", + "@aws-sdk/credential-provider-process": "^3.972.71", + "@aws-sdk/credential-provider-sso": "^3.973.15", + "@aws-sdk/credential-provider-web-identity": "^3.972.77", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/credential-provider-imds": "^4.4.16", @@ -336,13 +336,13 @@ } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.70", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.70.tgz", - "integrity": "sha512-2ry03fGRJr4sV3jI+ocjj5JqALnFD6ymM5KiNCDZMvq8bX2GSbE0vji4aM43TVCl2nXqqLRZaUxdq/KeWRAY4Q==", + "version": "3.972.71", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.71.tgz", + "integrity": "sha512-lYmXJa4gvq4xN1lrT5NiP5vIYYKcGWAdj8y+8o6dlcateB5eF3Dn8DtmjjHKfMBrTPAMr2pebIiX/UOj8c1/UA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.977.9", + "@aws-sdk/core": "^3.978.0", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", @@ -353,15 +353,15 @@ } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.973.14", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.14.tgz", - "integrity": "sha512-jkhg/8ocAAoc0RFyLMhCw+/zZh7gystQgd4F4hznNa8P4Cc501PQmxd+jGLiMHodPJ+7Zv/3znM62gZojyasmA==", + "version": "3.973.15", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.973.15.tgz", + "integrity": "sha512-6Jhcf4v0pSFdjk1EW2kvzuEBKD+UZ2uNcHUIglKKLndD20YhvkL2kdmDOV5/j4mYuWWwe/a1FQ1aomU86/Cg5Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.977.9", - "@aws-sdk/nested-clients": "^3.997.44", - "@aws-sdk/token-providers": "3.1116.0", + "@aws-sdk/core": "^3.978.0", + "@aws-sdk/nested-clients": "^3.997.45", + "@aws-sdk/token-providers": "3.1129.0", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", @@ -372,14 +372,14 @@ } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.76", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.76.tgz", - "integrity": "sha512-d3AGyVu759PGr35mEB2s22xxlNEA5rpdxtSPJthfPFJvoQ8dt357iVPECqWfUxXp1toJAvKmbtcIYVGigaGsCA==", + "version": "3.972.77", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.77.tgz", + "integrity": "sha512-uylIQSUWpfLuH2LovxEEfwzJGM/SabLOfLMg6YXu/E8jJEKUdpdILCVCQCdFvHyu/7dLJOHPMfrSwduxO56NkQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.977.9", - "@aws-sdk/nested-clients": "^3.997.44", + "@aws-sdk/core": "^3.978.0", + "@aws-sdk/nested-clients": "^3.997.45", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", @@ -419,13 +419,13 @@ } }, "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.44", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.44.tgz", - "integrity": "sha512-NhEgryjlBF9w38ZXqGymQV28IhkYa1mKhlbYnqIis57AYwWGVYfUPgg/qC2rLRqOUfblxx++irvju10kVTa8Vw==", + "version": "3.997.45", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.45.tgz", + "integrity": "sha512-mooq9Q+jLa18VoM7HouczmslZU60iiB0aKc/Ztnq/luIL1ud0z4DnYprLR/ZO1gp331S9tJctM1HZr7u6YKBXQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.977.9", + "@aws-sdk/core": "^3.978.0", "@aws-sdk/signature-v4-multi-region": "^3.996.46", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", @@ -455,14 +455,14 @@ } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.1116.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1116.0.tgz", - "integrity": "sha512-ygIivKqh8aHzNkucOCXHyIBgBpLPfrSI0mCqXF+vLBsPTUKqj0VSqAY0GFPe7lQl4HntjOcQ+KSyS7oUV2C54Q==", + "version": "3.1129.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1129.0.tgz", + "integrity": "sha512-Sbl3rpzQdsG4ZK2zh0JWUYyZPKKorJlVOddA2T0DVbKJFrsW8J6wgnslxxUH04+WaBMr4A1HzJZvZX0xUvkniA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.977.9", - "@aws-sdk/nested-clients": "^3.997.44", + "@aws-sdk/core": "^3.978.0", + "@aws-sdk/nested-clients": "^3.997.45", "@aws-sdk/types": "^3.974.5", "@smithy/core": "^3.33.3", "@smithy/types": "^4.17.2", @@ -956,6 +956,90 @@ "node": ">=6.9.0" } }, + "node_modules/@effect/opentelemetry": { + "version": "4.0.0-rc.112", + "resolved": "https://registry.npmjs.org/@effect/opentelemetry/-/opentelemetry-4.0.0-rc.112.tgz", + "integrity": "sha512-OTRv1DxTHUmnakgJ6XVM8wVgF1KgZH4UXnOemwSLUwUjXO+RCikzF8oR/rlVmOGq81KtQzj1URM4M4nchlQOuQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <2.0.0", + "@opentelemetry/api-logs": ">=0.203.0 <0.300.0", + "@opentelemetry/resources": ">=2.0.0 <3.0.0", + "@opentelemetry/sdk-logs": ">=0.203.0 <0.300.0", + "@opentelemetry/sdk-metrics": ">=2.0.0 <3.0.0", + "@opentelemetry/sdk-trace-base": ">=2.0.0 <3.0.0", + "@opentelemetry/sdk-trace-node": ">=2.0.0 <3.0.0", + "@opentelemetry/sdk-trace-web": ">=2.0.0 <3.0.0", + "@opentelemetry/semantic-conventions": ">=1.33.0 <2.0.0", + "effect": "^4.0.0-rc.112" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@opentelemetry/api-logs": { + "optional": true + }, + "@opentelemetry/resources": { + "optional": true + }, + "@opentelemetry/sdk-logs": { + "optional": true + }, + "@opentelemetry/sdk-metrics": { + "optional": true + }, + "@opentelemetry/sdk-trace-base": { + "optional": true + }, + "@opentelemetry/sdk-trace-node": { + "optional": true + }, + "@opentelemetry/sdk-trace-web": { + "optional": true + } + } + }, + "node_modules/@effect/platform-node": { + "version": "4.0.0-rc.112", + "resolved": "https://registry.npmjs.org/@effect/platform-node/-/platform-node-4.0.0-rc.112.tgz", + "integrity": "sha512-/BMAcdNGQQskLmI0Zoa95KfTZkr9HV9N4NSxaSrusG6GeW6Ulp9KvZ+Rlaiw8lnOt43CXjFLdfll5/k5rxL4hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@effect/platform-node-shared": "^4.0.0-rc.112", + "mime": "^4.1.0", + "undici": "^8.10.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "effect": "^4.0.0-rc.112", + "redis": ">=5.0.0 <7.0.0" + } + }, + "node_modules/@effect/platform-node-shared": { + "version": "4.0.0-rc.112", + "resolved": "https://registry.npmjs.org/@effect/platform-node-shared/-/platform-node-shared-4.0.0-rc.112.tgz", + "integrity": "sha512-ttjz0xKamFN7vL8pNDYVwddJLjZvqKePc05djlz2VcdaKbLsnYbtMnL1rbOfHgEnIUSHGh7FkjaN4DM1Ov81sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ws": "^8.18.1", + "ws": "^8.21.3" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "effect": "^4.0.0-rc.112" + } + }, "node_modules/@gar/promise-retry": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz", @@ -1191,9 +1275,9 @@ } }, "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -1259,9 +1343,9 @@ } }, "node_modules/@npmcli/arborist/node_modules/brace-expansion": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1272,9 +1356,9 @@ } }, "node_modules/@npmcli/arborist/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -1389,20 +1473,10 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" - } - }, "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -1422,22 +1496,6 @@ "node": ">=10" } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", - "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^4.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, "node_modules/@npmcli/installed-package-contents": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-4.0.0.tgz", @@ -1482,9 +1540,9 @@ } }, "node_modules/@npmcli/map-workspaces/node_modules/brace-expansion": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1513,9 +1571,9 @@ } }, "node_modules/@npmcli/map-workspaces/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -1645,9 +1703,9 @@ } }, "node_modules/@npmcli/package-json/node_modules/brace-expansion": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1676,9 +1734,9 @@ } }, "node_modules/@npmcli/package-json/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -1754,32 +1812,6 @@ "node": "^20.17.0 || >=22.9.0" } }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", - "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^4.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, "node_modules/@npmcli/query": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/@npmcli/query/-/query-5.0.0.tgz", @@ -1821,14 +1853,14 @@ } }, "node_modules/@opencode/ai": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/ai/-/ai-0.0.0-beta-19381.tgz", - "integrity": "sha512-22V30RSke8NUKWYuDNwkKnO1mpzO1ouIqpOq70lUYB5A1a/UCLHNvAS76/2B+rdiVl0Y8jIPMkZ1BdV6VdZ+SA==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/ai/-/ai-2.0.10.tgz", + "integrity": "sha512-2cTzFtglMeAip/GyS3TPnJ9yO0FPy4zvTEXFKOXTksDL4SOoipKhykRFQy9b7pjncTlpDukQKlNbvLcG/1HPMA==", "dev": true, "license": "MIT", "dependencies": { "@aws-sdk/credential-providers": "3.1057.0", - "@opencode/schema": "0.0.0-beta-19381", + "@opencode/schema": "2.0.10", "@smithy/eventstream-codec": "4.2.14", "@smithy/util-utf8": "4.2.2", "aws4fetch": "1.0.20", @@ -1836,21 +1868,10 @@ "google-auth-library": "10.5.0" } }, - "node_modules/@opencode/ai/node_modules/effect": { - "version": "4.0.0-rc.112", - "resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-rc.112.tgz", - "integrity": "sha512-wXxwuh1Ywnv4cPRM3Wfa0vDwuOHnZ1TsTgHJkG9XgzND6inhBH9n1vBxhg3iIXOia/OrpmvVmd3lrD4vq6bF3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-check": "^4.9.0", - "msgpackr": "^2.0.5" - } - }, "node_modules/@opencode/cli": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli/-/cli-0.0.0-beta-19381.tgz", - "integrity": "sha512-Gr7uLcwMXSmufxYFkaP95aHG2huLKRrQlgtiSGineIhxJjr5XRELUpPy6QuQiPHVOK/LPG7lS+xIyoskb/vHcA==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli/-/cli-2.0.10.tgz", + "integrity": "sha512-WYHnl1o1hfXKvrr54TsXTKQUrONYbEr8c7m7E0jMFe1Z+LBnwaNu5JaTpgAEIaO03DEws2ifCUhjS7A+ge2q1Q==", "cpu": [ "arm64", "x64" @@ -1864,27 +1885,28 @@ "win32" ], "bin": { - "opencode2": "bin/opencode2.exe" + "opencode": "bin/opencode.exe", + "opencode2": "bin/opencode.exe" }, "optionalDependencies": { - "@opencode/cli-darwin-arm64": "0.0.0-beta-19381", - "@opencode/cli-darwin-x64": "0.0.0-beta-19381", - "@opencode/cli-darwin-x64-baseline": "0.0.0-beta-19381", - "@opencode/cli-linux-arm64": "0.0.0-beta-19381", - "@opencode/cli-linux-arm64-musl": "0.0.0-beta-19381", - "@opencode/cli-linux-x64": "0.0.0-beta-19381", - "@opencode/cli-linux-x64-baseline": "0.0.0-beta-19381", - "@opencode/cli-linux-x64-baseline-musl": "0.0.0-beta-19381", - "@opencode/cli-linux-x64-musl": "0.0.0-beta-19381", - "@opencode/cli-windows-arm64": "0.0.0-beta-19381", - "@opencode/cli-windows-x64": "0.0.0-beta-19381", - "@opencode/cli-windows-x64-baseline": "0.0.0-beta-19381" + "@opencode/cli-darwin-arm64": "2.0.10", + "@opencode/cli-darwin-x64": "2.0.10", + "@opencode/cli-darwin-x64-baseline": "2.0.10", + "@opencode/cli-linux-arm64": "2.0.10", + "@opencode/cli-linux-arm64-musl": "2.0.10", + "@opencode/cli-linux-x64": "2.0.10", + "@opencode/cli-linux-x64-baseline": "2.0.10", + "@opencode/cli-linux-x64-baseline-musl": "2.0.10", + "@opencode/cli-linux-x64-musl": "2.0.10", + "@opencode/cli-windows-arm64": "2.0.10", + "@opencode/cli-windows-x64": "2.0.10", + "@opencode/cli-windows-x64-baseline": "2.0.10" } }, "node_modules/@opencode/cli-darwin-arm64": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-darwin-arm64/-/cli-darwin-arm64-0.0.0-beta-19381.tgz", - "integrity": "sha512-RXz/EmI+919+0M8/quWWWcuE3uw1utBurYRX+TRf2YHoW62Fpcr1OOQMjsrWcS23uoJrW9hUxZoZCHA10nDBnA==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-darwin-arm64/-/cli-darwin-arm64-2.0.10.tgz", + "integrity": "sha512-rLL4TmDEeiQ31jFsFzJQ+go/avasnlXa33U4mW9J2E1vN2MiLGOeaQzlOYQ4gE72Bbkrp2Pl/JUx1JJCiK2l3Q==", "cpu": [ "arm64" ], @@ -1896,9 +1918,9 @@ ] }, "node_modules/@opencode/cli-darwin-x64": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-darwin-x64/-/cli-darwin-x64-0.0.0-beta-19381.tgz", - "integrity": "sha512-+k5JtJ1BGnQjohxld/LCsPyBHvhAOzi2HgQY7unQG2NBFgMgT5MHO53hlDYxeKXaOcBUAqmOEIWMGu76aEAOuQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-darwin-x64/-/cli-darwin-x64-2.0.10.tgz", + "integrity": "sha512-Za7RHOuiOJZWETC17IfI3dLpAda0AN56PNz0zVW5GXr9XpRTkNwzKhoVmWzDToi9jD1iW9eCq8SkzOxZ+QIlWg==", "cpu": [ "x64" ], @@ -1910,9 +1932,9 @@ ] }, "node_modules/@opencode/cli-darwin-x64-baseline": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-darwin-x64-baseline/-/cli-darwin-x64-baseline-0.0.0-beta-19381.tgz", - "integrity": "sha512-mTgS5sgnGBct7EnbI4OABfnj6x5d5zwwO2ZVjGLo8LQK30a28uMwxACFd5SL6sKdawKkY2QWaT8Du7IMZWn7Wg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-darwin-x64-baseline/-/cli-darwin-x64-baseline-2.0.10.tgz", + "integrity": "sha512-tsRo4XFz0hbE+nA1BuhoDuLeQGAAYilnypzUcW4/mRS8ur/go17xZjSOdxV1e0NzsS0qGuQqe5ykC1vWRzH8WQ==", "cpu": [ "x64" ], @@ -1924,9 +1946,9 @@ ] }, "node_modules/@opencode/cli-linux-arm64": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-linux-arm64/-/cli-linux-arm64-0.0.0-beta-19381.tgz", - "integrity": "sha512-heNFpG4ADKAVsAy7gfBz+Hmm5JbMHVAT1ViwaDChpQWsYnGMLCvyXzxvgu9kEPZKP1d31ry1nDUoGewvy3PlqA==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-linux-arm64/-/cli-linux-arm64-2.0.10.tgz", + "integrity": "sha512-hNX2+FFfjFkszz1yvYzqmsFqGj0wW9Hk2mteQPsePFx11N0/2Fga2o6PV+3+P6GHZrgCmLAv/3JfYRZS2cTMpA==", "cpu": [ "arm64" ], @@ -1938,9 +1960,9 @@ ] }, "node_modules/@opencode/cli-linux-arm64-musl": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-linux-arm64-musl/-/cli-linux-arm64-musl-0.0.0-beta-19381.tgz", - "integrity": "sha512-Wo2eJVwgWpXHHSAi6V6Dmng/3n94LimVsDHLkznKPtMnoTD0vFl3n0Z81x2gdiV814aFB1S4Ga6AYrDMHUwZDQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.0.10.tgz", + "integrity": "sha512-0nqan991GzKhQcDhhKjV61S/CEKNNoEaIQo0SjkXIKBmRD2j1r5B6c/h1ATLJrL7/J/XPv+Nbm8T5O7Oms7Hzg==", "cpu": [ "arm64" ], @@ -1952,9 +1974,9 @@ ] }, "node_modules/@opencode/cli-linux-x64": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-linux-x64/-/cli-linux-x64-0.0.0-beta-19381.tgz", - "integrity": "sha512-COoB8ng1LO09lb3Ep4mJ2B1n4ybckVFnsUEfUjlfhkuLa1g0JuAwMlOiBrSku0iKG7+GIeRCNxgVN3we/49dWQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-linux-x64/-/cli-linux-x64-2.0.10.tgz", + "integrity": "sha512-HEpZUlm4VcjlS9xV1B6/5tDoFsqMO0aQ8SvycpHMjEvuBUtXNuCPM96eF1WEVLv4dSeLkha1nJdwMA7ubOSyPQ==", "cpu": [ "x64" ], @@ -1966,9 +1988,9 @@ ] }, "node_modules/@opencode/cli-linux-x64-baseline": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-linux-x64-baseline/-/cli-linux-x64-baseline-0.0.0-beta-19381.tgz", - "integrity": "sha512-f8UNECSrBcGT0wIPYNpIS5pEnU33agzYYIMf1EHHct4Ql0fllqeJqX4q8NceYf7E+7uT2ht2aQDDez0uCkPZFQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-linux-x64-baseline/-/cli-linux-x64-baseline-2.0.10.tgz", + "integrity": "sha512-f+sZBhT7WkWZlkOYo+AQabPCogBy2TKfy0ynIasHuGHVgbNvU1J82NOm2sEVoAmnvuEGj6E5hE731FMb8Zu5xQ==", "cpu": [ "x64" ], @@ -1980,9 +2002,9 @@ ] }, "node_modules/@opencode/cli-linux-x64-baseline-musl": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-linux-x64-baseline-musl/-/cli-linux-x64-baseline-musl-0.0.0-beta-19381.tgz", - "integrity": "sha512-HjFDCy2QVvTQXLEIUuk78wcbOBkqjYV1qpy4YcpUQ4Q9ZKSpWLe9i9KBY1P7oEGd33I4WvyJFrS0ZpZXyKFv3g==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-linux-x64-baseline-musl/-/cli-linux-x64-baseline-musl-2.0.10.tgz", + "integrity": "sha512-7mdY390dRQKYy7oITJ4x7EL+bzUIGglKNAycF16kfLEtXavh5sqqB9PBus5Nxxw6XazxWR2Z8YnwVVivOSPs7A==", "cpu": [ "x64" ], @@ -1994,9 +2016,9 @@ ] }, "node_modules/@opencode/cli-linux-x64-musl": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-linux-x64-musl/-/cli-linux-x64-musl-0.0.0-beta-19381.tgz", - "integrity": "sha512-6TDba09UZo0kBlS2gB5bM+dlQeMv9fj0BwLwbcKCs8XzcMRWJlmK3ad7erwI4KR90NiyU+7EC7nd/vq+OK6LVA==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-linux-x64-musl/-/cli-linux-x64-musl-2.0.10.tgz", + "integrity": "sha512-qgJvcdxyAubB6uwZi6kpSIZZyV22YI51QVRSE2Oswjh+RtRJOngOpjeRXQkEBTe+eau2xTrDJX21ogdnSErlPA==", "cpu": [ "x64" ], @@ -2008,9 +2030,9 @@ ] }, "node_modules/@opencode/cli-windows-arm64": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-windows-arm64/-/cli-windows-arm64-0.0.0-beta-19381.tgz", - "integrity": "sha512-Xas1LJn9PAa3veUktyg1n5qOJc61sOvbXRFgBENNmnggvsoFjsQxAelEtm6NlviFJp2i+g2PJnegjfoLazUS8w==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-windows-arm64/-/cli-windows-arm64-2.0.10.tgz", + "integrity": "sha512-RAaBLSxE6bCf0I92q+utq/WDPiet3OaHrhyVI+PVbplPIDmRU5d1EgKiQluzQxMGvhSztWbvCFCrIxd5N2Fu0g==", "cpu": [ "arm64" ], @@ -2022,9 +2044,9 @@ ] }, "node_modules/@opencode/cli-windows-x64": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-windows-x64/-/cli-windows-x64-0.0.0-beta-19381.tgz", - "integrity": "sha512-EFS147FIEgeOsXQ2tMcbxbw+A8dMali99vDHTGOfVg719aKe4WKrkxIn8rAzBPHEpT9QHEwxGvKr6j1dLvOO6A==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-windows-x64/-/cli-windows-x64-2.0.10.tgz", + "integrity": "sha512-oUPT8mpyhIXZYQtx1yHPebEqzCUNzy8lvNqZJoQoJu6l7nz2N/XZSpiOP5HjYjY+CY6uUeIDYcY7cGN7HF+LEg==", "cpu": [ "x64" ], @@ -2036,9 +2058,9 @@ ] }, "node_modules/@opencode/cli-windows-x64-baseline": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/cli-windows-x64-baseline/-/cli-windows-x64-baseline-0.0.0-beta-19381.tgz", - "integrity": "sha512-tDw357bOzIsZUXSEiyjZvK6abv01soIWmnmsiw24+KlkgNNtKAAtu+1T2xmB9S7JKd7/+g6nHStdGEmwU0yFVg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/cli-windows-x64-baseline/-/cli-windows-x64-baseline-2.0.10.tgz", + "integrity": "sha512-e7j3rqDXe5pzKe+Ql36E3IZZZJGT6+KM5SlzsJLNq9QHmZpZRh6ZTmtQIp2iJLAmAVn+329aEIhFfkbUrMKpSA==", "cpu": [ "x64" ], @@ -2049,37 +2071,22 @@ "win32" ] }, - "node_modules/@opencode/plugin": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/plugin/-/plugin-0.0.0-beta-19381.tgz", - "integrity": "sha512-xs71eTix7Y16bob6PQvgW7XS5FqhKWeHnuChpMYh4gxhUG91MiuqwP/zOUxpny+JIYetslT/T76ua92mqMhBDg==", + "node_modules/@opencode/client": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/client/-/client-2.0.10.tgz", + "integrity": "sha512-Pz4FD6jVtfZYX97AghVTM+cedi3HfI+U6gg/we5Luf08L85TewKsSXR4jHOZTCvggl0vACTquz1/hOjsJWE0Sg==", "dev": true, "license": "MIT", "dependencies": { - "@ai-sdk/provider": "3.0.8", - "@opencode/ai": "0.0.0-beta-19381", - "@opencode/client": "0.0.0-beta-19381", - "@opencode/protocol": "0.0.0-beta-19381", - "@opencode/schema": "0.0.0-beta-19381", - "@opencode/util": "0.0.0-beta-19381", - "@standard-schema/spec": "1.1.0", - "effect": "4.0.0-rc.112", - "zod": "4.1.8" + "@opencode/protocol": "2.0.10", + "@opencode/schema": "2.0.10" }, "peerDependencies": { - "@opencode/theme": "0.0.0-beta-19381", - "@opentui/core": ">=0.5.10", - "@opentui/solid": ">=0.5.10", + "effect": "4.0.0-rc.112", "solid-js": ">=1.9.0" }, "peerDependenciesMeta": { - "@opencode/theme": { - "optional": true - }, - "@opentui/core": { - "optional": true - }, - "@opentui/solid": { + "effect": { "optional": true }, "solid-js": { @@ -2087,22 +2094,37 @@ } } }, - "node_modules/@opencode/plugin/node_modules/@opencode/client": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/client/-/client-0.0.0-beta-19381.tgz", - "integrity": "sha512-VIJstFeUC/XceLqQK5Mt3tHEl5OlsUF/M+wkhkhbLMpFx5F1J5pwc7jdMaXBJVMJzF6MFy233SzHH2vI8ALBjQ==", + "node_modules/@opencode/plugin": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/plugin/-/plugin-2.0.10.tgz", + "integrity": "sha512-9CQDhp9fZW01VOkQnnAdricS3efGG6bQULa82lc4RF3kGQ9ifeDsyIoDSxMrUoWPBLDdRQMqZ/CMw9sKVal0kw==", "dev": true, "license": "MIT", "dependencies": { - "@opencode/protocol": "0.0.0-beta-19381", - "@opencode/schema": "0.0.0-beta-19381" + "@ai-sdk/provider": "3.0.8", + "@opencode/ai": "2.0.10", + "@opencode/client": "2.0.10", + "@opencode/protocol": "2.0.10", + "@opencode/schema": "2.0.10", + "@opencode/util": "2.0.10", + "@standard-schema/spec": "1.1.0", + "effect": "4.0.0-rc.112", + "zod": "4.1.8" }, "peerDependencies": { - "effect": "4.0.0-rc.112", + "@opencode/theme": "2.0.10", + "@opentui/core": ">=0.5.10", + "@opentui/solid": ">=0.5.10", "solid-js": ">=1.9.0" }, "peerDependenciesMeta": { - "effect": { + "@opencode/theme": { + "optional": true + }, + "@opentui/core": { + "optional": true + }, + "@opentui/solid": { "optional": true }, "solid-js": { @@ -2110,43 +2132,21 @@ } } }, - "node_modules/@opencode/plugin/node_modules/effect": { - "version": "4.0.0-rc.112", - "resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-rc.112.tgz", - "integrity": "sha512-wXxwuh1Ywnv4cPRM3Wfa0vDwuOHnZ1TsTgHJkG9XgzND6inhBH9n1vBxhg3iIXOia/OrpmvVmd3lrD4vq6bF3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-check": "^4.9.0", - "msgpackr": "^2.0.5" - } - }, "node_modules/@opencode/protocol": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/protocol/-/protocol-0.0.0-beta-19381.tgz", - "integrity": "sha512-e1iHI2IUDiIuzMsVMU7I77xlzwwD+69r4xEdfVtr4FZQvNYIHv771rgFpBIjeuE1e/GtP6gx0wa/zvf7fAJo6w==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/protocol/-/protocol-2.0.10.tgz", + "integrity": "sha512-cHr0aSK39Q9c3JwPDvG45FFlE6rU/ntTFDSaqm4LRl74tki88G4WpzKk6Q56G06K6hKIONrezcPdXtDKtnZzyw==", "dev": true, "license": "MIT", "dependencies": { - "@opencode/schema": "0.0.0-beta-19381", + "@opencode/schema": "2.0.10", "effect": "4.0.0-rc.112" } }, - "node_modules/@opencode/protocol/node_modules/effect": { - "version": "4.0.0-rc.112", - "resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-rc.112.tgz", - "integrity": "sha512-wXxwuh1Ywnv4cPRM3Wfa0vDwuOHnZ1TsTgHJkG9XgzND6inhBH9n1vBxhg3iIXOia/OrpmvVmd3lrD4vq6bF3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-check": "^4.9.0", - "msgpackr": "^2.0.5" - } - }, "node_modules/@opencode/schema": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/schema/-/schema-0.0.0-beta-19381.tgz", - "integrity": "sha512-wrVyp4RcwMHglc+OIev/WeR1tUo1WfUkOKh8AbE/sY5NubnOa16zKDqrYC419ruU2x1A3H7octb1atNdwRtCBg==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/schema/-/schema-2.0.10.tgz", + "integrity": "sha512-RpRhRZFH1YFnM+OcrxOZc2ObIW3RQ63z/LkcHrZKa47kWF0OiaZVkbAOITeAoAoofcnS3O5ekZBvgT/7kBwRUA==", "dev": true, "license": "MIT", "dependencies": { @@ -2154,21 +2154,10 @@ "effect": "4.0.0-rc.112" } }, - "node_modules/@opencode/schema/node_modules/effect": { - "version": "4.0.0-rc.112", - "resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-rc.112.tgz", - "integrity": "sha512-wXxwuh1Ywnv4cPRM3Wfa0vDwuOHnZ1TsTgHJkG9XgzND6inhBH9n1vBxhg3iIXOia/OrpmvVmd3lrD4vq6bF3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-check": "^4.9.0", - "msgpackr": "^2.0.5" - } - }, "node_modules/@opencode/theme": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/theme/-/theme-0.0.0-beta-19381.tgz", - "integrity": "sha512-JQ4K0lotgB2TF/NR/4TaVJ/UpvTOcH30Q8L1atFeHBIucxiEM62L2hVF1mk6ZP3jSBeplZgSv9cAAFOA4v/IoA==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/theme/-/theme-2.0.10.tgz", + "integrity": "sha512-gFh8TGM2oI2lllqc0g3pyEDNZNTll8+lYzWzncIZocoADcep6cmsRE3Lndx6biGvCfdtzL02akImttdbAGJ+Yw==", "dev": true, "license": "MIT", "dependencies": { @@ -2176,21 +2165,10 @@ "effect": "4.0.0-rc.112" } }, - "node_modules/@opencode/theme/node_modules/effect": { - "version": "4.0.0-rc.112", - "resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-rc.112.tgz", - "integrity": "sha512-wXxwuh1Ywnv4cPRM3Wfa0vDwuOHnZ1TsTgHJkG9XgzND6inhBH9n1vBxhg3iIXOia/OrpmvVmd3lrD4vq6bF3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-check": "^4.9.0", - "msgpackr": "^2.0.5" - } - }, "node_modules/@opencode/util": { - "version": "0.0.0-beta-19381", - "resolved": "https://registry.npmjs.org/@opencode/util/-/util-0.0.0-beta-19381.tgz", - "integrity": "sha512-DEm0InxoUwHV7U8xE2gw8tmU+J5wOON3A2Ht/REWI5KWtLpMq2z88x4gmgvUo4Ac6+c0s9/KQB4+6201Vg/hRQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@opencode/util/-/util-2.0.10.tgz", + "integrity": "sha512-uvExiMxpHDyTuJwH1UnKO3UXJjicxHo4hpXCSH/TMYR6G0YHpqLGZGY9+u6gHMIuk+vlRAitY7wuXOlxPQcaWw==", "dev": true, "license": "MIT", "dependencies": { @@ -2213,90 +2191,6 @@ "pacote": "21.5.1" } }, - "node_modules/@opencode/util/node_modules/@effect/opentelemetry": { - "version": "4.0.0-rc.112", - "resolved": "https://registry.npmjs.org/@effect/opentelemetry/-/opentelemetry-4.0.0-rc.112.tgz", - "integrity": "sha512-OTRv1DxTHUmnakgJ6XVM8wVgF1KgZH4UXnOemwSLUwUjXO+RCikzF8oR/rlVmOGq81KtQzj1URM4M4nchlQOuQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.9.0 <2.0.0", - "@opentelemetry/api-logs": ">=0.203.0 <0.300.0", - "@opentelemetry/resources": ">=2.0.0 <3.0.0", - "@opentelemetry/sdk-logs": ">=0.203.0 <0.300.0", - "@opentelemetry/sdk-metrics": ">=2.0.0 <3.0.0", - "@opentelemetry/sdk-trace-base": ">=2.0.0 <3.0.0", - "@opentelemetry/sdk-trace-node": ">=2.0.0 <3.0.0", - "@opentelemetry/sdk-trace-web": ">=2.0.0 <3.0.0", - "@opentelemetry/semantic-conventions": ">=1.33.0 <2.0.0", - "effect": "^4.0.0-rc.112" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@opentelemetry/api-logs": { - "optional": true - }, - "@opentelemetry/resources": { - "optional": true - }, - "@opentelemetry/sdk-logs": { - "optional": true - }, - "@opentelemetry/sdk-metrics": { - "optional": true - }, - "@opentelemetry/sdk-trace-base": { - "optional": true - }, - "@opentelemetry/sdk-trace-node": { - "optional": true - }, - "@opentelemetry/sdk-trace-web": { - "optional": true - } - } - }, - "node_modules/@opencode/util/node_modules/@effect/platform-node": { - "version": "4.0.0-rc.112", - "resolved": "https://registry.npmjs.org/@effect/platform-node/-/platform-node-4.0.0-rc.112.tgz", - "integrity": "sha512-/BMAcdNGQQskLmI0Zoa95KfTZkr9HV9N4NSxaSrusG6GeW6Ulp9KvZ+Rlaiw8lnOt43CXjFLdfll5/k5rxL4hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@effect/platform-node-shared": "^4.0.0-rc.112", - "mime": "^4.1.0", - "undici": "^8.10.0" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "effect": "^4.0.0-rc.112", - "redis": ">=5.0.0 <7.0.0" - } - }, - "node_modules/@opencode/util/node_modules/@effect/platform-node-shared": { - "version": "4.0.0-rc.112", - "resolved": "https://registry.npmjs.org/@effect/platform-node-shared/-/platform-node-shared-4.0.0-rc.112.tgz", - "integrity": "sha512-ttjz0xKamFN7vL8pNDYVwddJLjZvqKePc05djlz2VcdaKbLsnYbtMnL1rbOfHgEnIUSHGh7FkjaN4DM1Ov81sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ws": "^8.18.1", - "ws": "^8.21.3" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "effect": "^4.0.0-rc.112" - } - }, "node_modules/@opencode/util/node_modules/balanced-match": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", @@ -2308,9 +2202,9 @@ } }, "node_modules/@opencode/util/node_modules/brace-expansion": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2320,17 +2214,6 @@ "node": "20 || >=22" } }, - "node_modules/@opencode/util/node_modules/effect": { - "version": "4.0.0-rc.112", - "resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-rc.112.tgz", - "integrity": "sha512-wXxwuh1Ywnv4cPRM3Wfa0vDwuOHnZ1TsTgHJkG9XgzND6inhBH9n1vBxhg3iIXOia/OrpmvVmd3lrD4vq6bF3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-check": "^4.9.0", - "msgpackr": "^2.0.5" - } - }, "node_modules/@opencode/util/node_modules/glob": { "version": "13.0.5", "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.5.tgz", @@ -2350,9 +2233,9 @@ } }, "node_modules/@opencode/util/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -2402,16 +2285,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@opencode/util/node_modules/undici": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.2.tgz", - "integrity": "sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=22.19.0" - } - }, "node_modules/@opentelemetry/api": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", @@ -3555,13 +3428,13 @@ } }, "node_modules/@smithy/core": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.33.3.tgz", - "integrity": "sha512-CsOeKq/9kA3y6VJHt+/+VTCtBaxJ4OTFpgrjIUhPpDIKxBci1k2bJaQASF2h/ELWrulGp+t97DZ0mevfAD8idg==", + "version": "3.34.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.34.1.tgz", + "integrity": "sha512-dLcOUxz8YCv1RZUMKq6GbyUf95pLbrqh34bPvpCZ1+CByFF31BEAFewZjsGCnVsZTKdThNENfGyAgk2TJqVwSw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.17.2", + "@smithy/types": "^4.18.0", "tslib": "^2.6.2" }, "engines": { @@ -3754,9 +3627,9 @@ } }, "node_modules/@tufjs/models/node_modules/brace-expansion": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4107,9 +3980,9 @@ } }, "node_modules/cacache/node_modules/brace-expansion": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4138,9 +4011,9 @@ } }, "node_modules/cacache/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -4324,6 +4197,29 @@ "node": ">= 8" } }, + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -4410,6 +4306,17 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/effect": { + "version": "4.0.0-rc.112", + "resolved": "https://registry.npmjs.org/effect/-/effect-4.0.0-rc.112.tgz", + "integrity": "sha512-wXxwuh1Ywnv4cPRM3Wfa0vDwuOHnZ1TsTgHJkG9XgzND6inhBH9n1vBxhg3iIXOia/OrpmvVmd3lrD4vq6bF3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-check": "^4.9.0", + "msgpackr": "^2.0.5" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.408", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.408.tgz", @@ -4482,9 +4389,9 @@ "license": "MIT" }, "node_modules/fast-check": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-4.9.0.tgz", - "integrity": "sha512-7ms6T7SybUev/PQITciI0yLM2pOSFy5zpG8Ty7tQofcVaQUvrMXp6CBwqF6fThLCLOrfBtuHAtwq6Yu4XPCllg==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-4.10.1.tgz", + "integrity": "sha512-sB5Vghiu8MyCyToHoBVGsT0baZg3sZWNIY+a6Ct2EDrQJlT4YdH6MC1BSLNe3kX1k5i5g0q1O52XFgcKK/rGHg==", "dev": true, "funding": [ { @@ -4815,9 +4722,9 @@ } }, "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "11.5.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", - "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.3.tgz", + "integrity": "sha512-U4N8FgzmWxc8k1VH8Kr6lQg18U7Fjvby6wXHVRX/ZZ7IwWbRMgrRbP0Wrb5q5NVinryp4SQampHKdvtecItxUg==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -4908,9 +4815,9 @@ } }, "node_modules/ignore-walk/node_modules/brace-expansion": { - "version": "5.0.9", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", - "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4947,9 +4854,9 @@ } }, "node_modules/ip-address": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.0.tgz", - "integrity": "sha512-BGFsyJd5mpXp3rK6jIdADLNgpJUK1jnjzvYF8lK+VyDab9JAmqN0YOKDdP17HlgKb2+ehPgDc8EtnRLbGCAMhA==", + "version": "10.7.2", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.2.tgz", + "integrity": "sha512-7H/2gFSIitxc0hG3nOI1glS8QLo/EHBFFLk8vEUjXY/xu0AdL8jZ9U1IzO2PUm0d2D/ofQcAifb0g6OBkt8U7w==", "dev": true, "license": "MIT", "engines": { @@ -4983,11 +4890,14 @@ } }, "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", + "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", "dev": true, - "license": "ISC" + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=20" + } }, "node_modules/jackspeak": { "version": "3.4.3", @@ -5440,9 +5350,9 @@ "license": "MIT" }, "node_modules/msgpackr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-2.0.5.tgz", - "integrity": "sha512-cef05H/dSYpLpqp3sj/qyZh5vhUYCalnaLO7j1yOmpsR0y/XwLVtK7r5gn+U/F7CTEfMowcGhlUQJDLcLf7jcA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/msgpackr/-/msgpackr-2.1.0.tgz", + "integrity": "sha512-p/pBCVO63CsvvpkomUnNNag6+n38rULuDA6HHe70o2gtC8ODI52foF/4ko2qQcp6OiErJXTmrZeXmsGGHsIQNQ==", "dev": true, "license": "MIT", "optionalDependencies": { @@ -5570,16 +5480,6 @@ "node-gyp-build-optional-packages-test": "build-test.js" } }, - "node_modules/node-gyp/node_modules/isexe": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=20" - } - }, "node_modules/node-gyp/node_modules/semver": { "version": "7.8.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", @@ -5593,20 +5493,14 @@ "node": ">=10" } }, - "node_modules/node-gyp/node_modules/which": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", - "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "node_modules/node-gyp/node_modules/undici": { + "version": "6.28.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.28.1.tgz", + "integrity": "sha512-zWpdTVD54H48CIybL0rWQ3ukpb9d23wM7eH5RtfdmeP70cWHNjtfo7P4vZX+5CoDcO53J4Pu5uXp7lNfjc6DRA==", "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^4.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, + "license": "MIT", "engines": { - "node": "^20.17.0 || >=22.9.0" + "node": ">=18.17" } }, "node_modules/node-releases": { @@ -5865,9 +5759,9 @@ } }, "node_modules/p-map": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.7.tgz", - "integrity": "sha512-VaWRu2i4FJNRtiRWCuuQRgfQ1B7a6+gMSrO+3j0EQi/k0ULfS9kosRxGoiqwzIjZTDI02tGfk5mXXltLg6QtfQ==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.8.tgz", + "integrity": "sha512-MitaVsCuCFIvOLLPIU7NnfrZvS9H9h7kwMUkDo+T2pEISaJD48IV9S8iIdXB7PsvvdxyYcsSTTrr90XKsbulNw==", "dev": true, "license": "MIT", "engines": { @@ -6482,9 +6376,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", - "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "version": "3.0.24", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.24.tgz", + "integrity": "sha512-cLS9TtWkIQFyLkJ3/5aFQAOHOSKTlOs/7WDut/XPSdjom1fJhUdkepeJAKXa9Y05+FabHd0sti+Et559vDtkpQ==", "dev": true, "license": "CC0-1.0" }, @@ -6729,13 +6623,13 @@ } }, "node_modules/undici": { - "version": "6.28.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.28.1.tgz", - "integrity": "sha512-zWpdTVD54H48CIybL0rWQ3ukpb9d23wM7eH5RtfdmeP70cWHNjtfo7P4vZX+5CoDcO53J4Pu5uXp7lNfjc6DRA==", + "version": "8.10.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-8.10.2.tgz", + "integrity": "sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==", "dev": true, "license": "MIT", "engines": { - "node": ">=18.17" + "node": ">=22.19.0" } }, "node_modules/undici-types": { @@ -6830,19 +6724,19 @@ } }, "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", + "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", "dev": true, "license": "ISC", "dependencies": { - "isexe": "^2.0.0" + "isexe": "^4.0.0" }, "bin": { - "node-which": "bin/node-which" + "node-which": "bin/which.js" }, "engines": { - "node": ">= 8" + "node": "^20.17.0 || >=22.9.0" } }, "node_modules/wrap-ansi": { diff --git a/package.json b/package.json index cb4946a..21e9121 100644 --- a/package.json +++ b/package.json @@ -48,9 +48,9 @@ "devDependencies": { "@babel/core": "^7.29.7", "@babel/preset-typescript": "^7.29.7", - "@opencode/cli": "0.0.0-beta-19381", - "@opencode/plugin": "0.0.0-beta-19381", - "@opencode/theme": "0.0.0-beta-19381", + "@opencode/cli": "2.0.10", + "@opencode/plugin": "2.0.10", + "@opencode/theme": "2.0.10", "@opentui/core": "^0.5.10", "@opentui/solid": "^0.5.10", "@oxlint/plugins": "^1.78.0", diff --git a/scripts/check-compatibility.mjs b/scripts/check-compatibility.mjs index 2661fd9..09943f9 100644 --- a/scripts/check-compatibility.mjs +++ b/scripts/check-compatibility.mjs @@ -13,7 +13,7 @@ const versions = packages.map((name) => packageJson.devDependencies[name]) const version = versions[0] -if (!/^0\.0\.0-beta-\d{5,6}$/.test(version)) { +if (!/^2\.\d+\.\d+$/.test(version)) { throw new Error(`OpenCode 2 compatibility version has an unexpected format: ${version}`) } @@ -21,13 +21,13 @@ if (!versions.every((candidate) => candidate === version)) { throw new Error(`OpenCode 2 packages must use one exact version: ${versions.join(", ")}`) } -const floor = /earliest known compatible beta is\s+`(0\.0\.0-beta-\d{5,6})`/i.exec(readme)?.[1] +const floor = /earliest known compatible (?:beta|version for this release) is\s+`(0\.0\.0-beta-\d{5,6}|2\.\d+\.\d+)`/i.exec(readme)?.[1] if (floor === undefined) { - throw new Error("README does not state the earliest known compatible beta") + throw new Error("README does not state the earliest known compatible version") } -if (Number(floor.replace("0.0.0-beta-", "")) > Number(version.replace("0.0.0-beta-", ""))) { +if (floor.localeCompare(version, "en", { numeric: true }) > 0) { throw new Error(`README floor ${floor} is newer than the pinned compatibility target ${version}`) } @@ -38,12 +38,12 @@ const root = fileURLToPath(new URL("..", import.meta.url)) // execFileSync'd on Windows without a shell, while the native binary runs // unshelled on every platform despite the .exe name. A normal install's // postinstall (or CI's prepare step with --ignore-scripts) puts it there. -const executable = resolve(root, "node_modules", "@opencode", "cli", "bin", "opencode2.exe") +const executable = resolve(root, "node_modules", "@opencode", "cli", "bin", "opencode.exe") const reported = execFileSync(executable, ["--version"], { encoding: "utf8" }).trim() -if (reported !== `opencode2 v${version}`) { - throw new Error(`Expected opencode2 v${version}, got ${reported}`) +if (reported !== `opencode v${version}`) { + throw new Error(`Expected opencode v${version}, got ${reported}`) } console.log(`OpenCode 2 compatibility target: ${version} (floor ${floor})`) diff --git a/src/plugin.tsx b/src/plugin.tsx index 69c22d8..2b4b0bf 100644 --- a/src/plugin.tsx +++ b/src/plugin.tsx @@ -221,7 +221,7 @@ const definition: Plugin.Definition = { {(text: () => string) => ( - {`${text()} `} + {`${text()} `} )} diff --git a/tests/entrypoint.test.tsx b/tests/entrypoint.test.tsx index a00d1bf..d75bfb0 100644 --- a/tests/entrypoint.test.tsx +++ b/tests/entrypoint.test.tsx @@ -59,7 +59,7 @@ interface Claim { interface FakeContext { readonly options: TpsOptionsInput readonly app: { readonly version: string } - readonly theme: { readonly text: { readonly subdued: string } } + readonly theme: { readonly text: { readonly muted: string } } readonly storage: { readonly memory: ( key: string, @@ -127,7 +127,7 @@ function createHarness(options: TpsOptionsInput = {}): Harness { const context: FakeContext = { options, app: { version: "test" }, - theme: { text: { subdued: "#888888" } }, + theme: { text: { muted: "#888888" } }, storage: { memory: () => [generation, (mutation: (draft: Generation) => void) => mutation(generation)] as const, }, diff --git a/tests/plugin.test.ts b/tests/plugin.test.ts index 208ed7f..8140e92 100644 --- a/tests/plugin.test.ts +++ b/tests/plugin.test.ts @@ -47,7 +47,7 @@ interface Generation { interface FakeContext { readonly options: TpsOptionsInput readonly app: { readonly version: string } - readonly theme: { readonly text: { readonly subdued: string } } + readonly theme: { readonly text: { readonly muted: string } } readonly storage: { memory: ( key: string, @@ -101,7 +101,7 @@ function createHarness(options: TpsOptionsInput = {}) { const ctx: FakeContext = { options, app: { version: "test" }, - theme: { text: { subdued: "#888888" } }, + theme: { text: { muted: "#888888" } }, storage: { memory: () => [generation, (mutation: (draft: Generation) => void) => mutation(generation)] as const, },