diff --git a/.gitattributes b/.gitattributes index 18177b31a597..27a99603b22a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ packages/core/migration/**/snapshot.json linguist-generated packages/core/src/database/migration.gen.ts linguist-generated +packages/core/src/**/*.txt text eol=lf diff --git a/.github/TEAM_MEMBERS b/.github/TEAM_MEMBERS index f892eb95dbc4..ee2e26f45233 100644 --- a/.github/TEAM_MEMBERS +++ b/.github/TEAM_MEMBERS @@ -1,4 +1,5 @@ adamdotdevin +arvsrn Brendonovich fwang Hona @@ -7,11 +8,14 @@ jayair jlongster kitlangton kommander +ludvigrask MrMushrooooom nexxeln R44VC0RP rekram1-node thdxr simonklee +Slickstef11 +usrnk1 vimtor -starptech +StarpTech diff --git a/.github/actions/setup-bun/action.yml b/.github/actions/setup-bun/action.yml index 5b44517ec511..9d29724d86a4 100644 --- a/.github/actions/setup-bun/action.yml +++ b/.github/actions/setup-bun/action.yml @@ -8,6 +8,13 @@ inputs: runs: using: "composite" steps: + # node-gyp@latest (invoked via bunx for native install scripts) requires Node >=22; + # some runner images ship an older system Node on PATH + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: "24" + - name: Get baseline download URL id: bun-url shell: bash diff --git a/.github/workflows/compliance-close.yml b/.github/workflows/compliance-close.yml index 14e68701e57d..a83824e5cf60 100644 --- a/.github/workflows/compliance-close.yml +++ b/.github/workflows/compliance-close.yml @@ -34,10 +34,48 @@ jobs: const now = Date.now(); const twoHours = 2 * 60 * 60 * 1000; + const orgMemberAssociations = new Set(['OWNER', 'MEMBER']); + const agentLogin = 'opencode-agent[bot]'; + const { data: file } = await github.rest.repos.getContent({ + owner: context.repo.owner, + repo: context.repo.repo, + path: '.github/TEAM_MEMBERS', + ref: 'dev', + }); + const teamMembers = new Set( + Buffer.from(file.content, 'base64') + .toString() + .split('\n') + .map((line) => line.trim().toLowerCase()) + .filter(Boolean) + ); + + function isExempt(item) { + const login = item.user?.login?.toLowerCase(); + return ( + login === agentLogin || + orgMemberAssociations.has(item.author_association) || + (login && teamMembers.has(login)) + ); + } for (const item of items) { const isPR = !!item.pull_request; const kind = isPR ? 'PR' : 'issue'; + const login = item.user?.login; + + if (isExempt(item)) { + core.info(`Skipping ${kind} #${item.number}; author ${login || 'unknown'} is exempt`); + try { + await github.rest.issues.removeLabel({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: item.number, + name: 'needs:compliance', + }); + } catch (e) {} + continue; + } const { data: comments } = await github.rest.issues.listComments({ owner: context.repo.owner, diff --git a/.github/workflows/deploy-www.yml b/.github/workflows/deploy-www.yml new file mode 100644 index 000000000000..c224f8112928 --- /dev/null +++ b/.github/workflows/deploy-www.yml @@ -0,0 +1,37 @@ +name: deploy-www + +on: + push: + branches: + - dev + - v2 + workflow_dispatch: + +concurrency: + group: deploy-www-${{ github.ref_name }} + cancel-in-progress: false + +permissions: + contents: read + +jobs: + deploy: + if: github.repository == 'anomalyco/opencode' && (github.ref_name == 'dev' || github.ref_name == 'v2') + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + + - uses: ./.github/actions/setup-bun + + - name: Build + working-directory: packages/www + run: bun run build + env: + BLUME_ENV: ${{ github.ref_name == 'v2' && 'production' || 'dev' }} + CLOUDFLARE_ENV: ${{ github.ref_name == 'v2' && 'production' || 'dev' }} + + - name: Deploy + working-directory: packages/www + run: bun run deploy + env: + CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} diff --git a/.github/workflows/duplicate-issues.yml b/.github/workflows/duplicate-issues.yml index 4648a2d0c3d3..3972247dafc6 100644 --- a/.github/workflows/duplicate-issues.yml +++ b/.github/workflows/duplicate-issues.yml @@ -17,12 +17,31 @@ jobs: with: fetch-depth: 1 + - name: Check exempt issue author + id: author + run: | + LOGIN="${{ github.event.issue.user.login }}" + ASSOCIATION="${{ github.event.issue.author_association }}" + + if [ "$LOGIN" = "opencode-agent[bot]" ] || + [ "$ASSOCIATION" = "OWNER" ] || + [ "$ASSOCIATION" = "MEMBER" ] || + grep -qxiF "$LOGIN" .github/TEAM_MEMBERS; then + echo "skip=true" >> "$GITHUB_OUTPUT" + echo "Skipping issue automation for exempt author: $LOGIN ($ASSOCIATION)" + else + echo "skip=false" >> "$GITHUB_OUTPUT" + fi + - uses: ./.github/actions/setup-bun + if: steps.author.outputs.skip != 'true' - name: Install opencode + if: steps.author.outputs.skip != 'true' run: curl -fsSL https://opencode.ai/install | bash - name: Check duplicates and compliance + if: steps.author.outputs.skip != 'true' env: OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -38,6 +57,7 @@ jobs: opencode run -m opencode/claude-sonnet-4-6 "A new issue has been created: Issue number: ${{ github.event.issue.number }} + Issue author association: ${{ github.event.issue.author_association }} Lookup this issue with gh issue view ${{ github.event.issue.number }}. @@ -49,6 +69,8 @@ jobs: Check whether the issue follows our contributing guidelines and issue templates. + If the issue author association is OWNER or MEMBER, skip this compliance check. Do not add the needs:compliance label for organization-owned issues. + This project has three issue templates that every issue MUST use one of: 1. Bug Report - requires a Description field with real content @@ -83,7 +105,7 @@ jobs: Based on your findings, post a SINGLE comment on issue #${{ github.event.issue.number }}. Build the comment as follows: - If the issue is NOT compliant, start the comment with: + If the issue is NOT compliant and the author association is not OWNER or MEMBER, start the comment with: Then explain what needs to be fixed and that they have 2 hours to edit the issue before it is automatically closed. Also add the label needs:compliance to the issue using: gh issue edit ${{ github.event.issue.number }} --add-label needs:compliance @@ -129,12 +151,31 @@ jobs: with: fetch-depth: 1 + - name: Check exempt issue author + id: author + run: | + LOGIN="${{ github.event.issue.user.login }}" + ASSOCIATION="${{ github.event.issue.author_association }}" + + if [ "$LOGIN" = "opencode-agent[bot]" ] || + [ "$ASSOCIATION" = "OWNER" ] || + [ "$ASSOCIATION" = "MEMBER" ] || + grep -qxiF "$LOGIN" .github/TEAM_MEMBERS; then + echo "skip=true" >> "$GITHUB_OUTPUT" + echo "Skipping issue automation for exempt author: $LOGIN ($ASSOCIATION)" + else + echo "skip=false" >> "$GITHUB_OUTPUT" + fi + - uses: ./.github/actions/setup-bun + if: steps.author.outputs.skip != 'true' - name: Install opencode + if: steps.author.outputs.skip != 'true' run: curl -fsSL https://opencode.ai/install | bash - name: Recheck compliance + if: steps.author.outputs.skip != 'true' env: OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -148,9 +189,12 @@ jobs: } run: | opencode run -m opencode/claude-sonnet-4-6 "Issue #${{ github.event.issue.number }} was previously flagged as non-compliant and has been edited. + Issue author association: ${{ github.event.issue.author_association }} Lookup this issue with gh issue view ${{ github.event.issue.number }}. + If the issue author association is OWNER or MEMBER, remove the needs:compliance label if present, delete the previous compliance comment if present, and do not post a new comment. + Re-check whether the issue now follows our contributing guidelines and issue templates. This project has three issue templates that every issue MUST use one of: diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 037020c03af1..180c6b77c05e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -6,6 +6,7 @@ on: branches: - ci - dev + - v2 - beta - fix/npm-native-binary-install - snapshot-* @@ -31,6 +32,9 @@ permissions: contents: write packages: write +env: + OPENCODE_CHANNEL: ${{ (github.ref_name == 'v2' && 'next') || '' }} + jobs: version: runs-on: blacksmith-4vcpu-ubuntu-2404 @@ -86,11 +90,18 @@ jobs: opencode-app-id: ${{ vars.OPENCODE_APP_ID }} opencode-app-secret: ${{ secrets.OPENCODE_APP_SECRET }} - - name: Build + - name: Build legacy CLI + if: github.ref_name != 'v2' + run: ./packages/opencode/script/build.ts ${{ (github.ref_name == 'beta' && '--sourcemaps') || '' }} + env: + OPENCODE_VERSION: ${{ needs.version.outputs.version }} + OPENCODE_RELEASE: ${{ needs.version.outputs.release }} + GH_REPO: ${{ needs.version.outputs.repo }} + GH_TOKEN: ${{ steps.committer.outputs.token }} + + - name: Build preview CLI id: build - run: | - ./packages/opencode/script/build.ts ${{ (github.ref_name == 'beta' && '--sourcemaps') || '' }} - ./packages/cli/script/build.ts ${{ (github.ref_name == 'beta' && '--sourcemaps') || '' }} + run: ./packages/cli/script/build.ts ${{ (github.ref_name == 'beta' && '--sourcemaps') || '' }} env: OPENCODE_VERSION: ${{ needs.version.outputs.version }} OPENCODE_RELEASE: ${{ needs.version.outputs.release }} @@ -98,6 +109,7 @@ jobs: GH_TOKEN: ${{ steps.committer.outputs.token }} - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + if: github.ref_name != 'v2' with: name: opencode-cli path: | @@ -105,6 +117,7 @@ jobs: packages/opencode/dist/opencode-linux* - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + if: github.ref_name != 'v2' with: name: opencode-cli-windows path: packages/opencode/dist/opencode-windows* @@ -117,12 +130,61 @@ jobs: outputs: version: ${{ needs.version.outputs.version }} + build-node-cli: + needs: version + if: github.repository == 'anomalyco/opencode' + strategy: + fail-fast: false + matrix: + settings: + - target: linux-arm64 + host: blacksmith-4vcpu-ubuntu-2404-arm + - target: linux-x64 + host: blacksmith-4vcpu-ubuntu-2404 + - target: darwin-arm64 + host: macos-26 + - target: windows-arm64 + host: blacksmith-4vcpu-windows-2025 + - target: windows-x64 + host: blacksmith-4vcpu-windows-2025 + runs-on: ${{ matrix.settings.host }} + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + + - uses: ./.github/actions/setup-bun + with: + install-flags: --os=* --cpu=* + + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: "26.4.0" + + - name: Build + run: bun packages/cli/script/build-node.ts --target=${{ matrix.settings.target }} --skip-install --outdir=dist/node + env: + OPENCODE_VERSION: ${{ needs.version.outputs.version }} + OPENCODE_RELEASE: ${{ needs.version.outputs.release }} + + - name: Verify service lifecycle + if: matrix.settings.target != 'windows-arm64' + working-directory: packages/cli + run: bun run script/service-smoke.ts --node + + - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + with: + name: opencode-node-cli-${{ matrix.settings.target }} + path: packages/cli/dist/node/cli-node-* + if-no-files-found: error + sign-cli-windows: needs: - build-cli - version runs-on: blacksmith-4vcpu-windows-2025 - if: github.repository == 'anomalyco/opencode' + if: github.repository == 'anomalyco/opencode' && github.ref_name != 'v2' env: AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} AZURE_TENANT_ID: ${{ secrets.AZURE_TENANT_ID }} @@ -221,7 +283,7 @@ jobs: needs: - build-cli - version - if: github.repository == 'anomalyco/opencode' + if: github.repository == 'anomalyco/opencode' && github.ref_name != 'v2' continue-on-error: false env: AZURE_CLIENT_ID: ${{ secrets.AZURE_CLIENT_ID }} @@ -409,6 +471,7 @@ jobs: needs: - version - build-cli + - build-node-cli - sign-cli-windows - build-electron if: always() && !failure() && !cancelled() @@ -437,16 +500,19 @@ jobs: registry-url: "https://registry.npmjs.org" - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + if: github.ref_name != 'v2' with: name: opencode-cli path: packages/opencode/dist - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + if: github.ref_name != 'v2' with: name: opencode-cli-windows path: packages/opencode/dist - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + if: github.ref_name != 'v2' with: name: opencode-cli-signed-windows path: packages/opencode/dist @@ -456,6 +522,12 @@ jobs: name: opencode-preview-cli path: packages/cli/dist + - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 + with: + pattern: opencode-node-cli-* + path: packages/cli/dist/node + merge-multiple: true + - uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 if: needs.version.outputs.release with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c69de1d93b0d..dcae87cda700 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,6 +4,7 @@ on: push: branches: - dev + - v2 pull_request: workflow_dispatch: @@ -69,18 +70,41 @@ jobs: env: OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER: ${{ runner.os == 'Windows' && 'true' || 'false' }} + - name: Verify compiled service lifecycle + if: always() + timeout-minutes: 10 + working-directory: packages/cli + run: | + bun run script/build.ts --single --skip-install + bun run script/service-smoke.ts + + - name: Setup Node build runtime + if: always() + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: "26.4.0" + + - name: Verify Node build + if: always() + timeout-minutes: 15 + working-directory: packages/cli + run: | + bun run script/build-node.ts --single --skip-install --outdir=dist/node + bun run script/service-smoke.ts --node + - name: Check generated client if: runner.os == 'Linux' working-directory: packages/client run: bun run check:generated - - name: Run HttpApi exerciser gates + - name: Check generated documentation if: runner.os == 'Linux' - working-directory: packages/opencode - run: bun run test:httpapi + working-directory: packages/www + run: bun run check:generated e2e: name: e2e (${{ matrix.settings.name }}) + if: github.ref_name != 'v2' && github.head_ref != 'v2' strategy: fail-fast: false matrix: diff --git a/.github/workflows/triage.yml b/.github/workflows/triage.yml index 27852a12ce4d..0350e43877c4 100644 --- a/.github/workflows/triage.yml +++ b/.github/workflows/triage.yml @@ -16,13 +16,32 @@ jobs: with: fetch-depth: 1 + - name: Check exempt issue author + id: author + run: | + LOGIN="${{ github.event.issue.user.login }}" + ASSOCIATION="${{ github.event.issue.author_association }}" + + if [ "$LOGIN" = "opencode-agent[bot]" ] || + [ "$ASSOCIATION" = "OWNER" ] || + [ "$ASSOCIATION" = "MEMBER" ] || + grep -qxiF "$LOGIN" .github/TEAM_MEMBERS; then + echo "skip=true" >> "$GITHUB_OUTPUT" + echo "Skipping issue automation for exempt author: $LOGIN ($ASSOCIATION)" + else + echo "skip=false" >> "$GITHUB_OUTPUT" + fi + - name: Setup Bun + if: steps.author.outputs.skip != 'true' uses: ./.github/actions/setup-bun - name: Install opencode + if: steps.author.outputs.skip != 'true' run: curl -fsSL https://opencode.ai/install | bash - name: Triage issue + if: steps.author.outputs.skip != 'true' env: OPENCODE_API_KEY: ${{ secrets.OPENCODE_API_KEY }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/typecheck.yml b/.github/workflows/typecheck.yml index fc9a52797c1d..5c83a8e691d7 100644 --- a/.github/workflows/typecheck.yml +++ b/.github/workflows/typecheck.yml @@ -2,9 +2,9 @@ name: typecheck on: push: - branches: [dev] + branches: [dev, v2] pull_request: - branches: [dev] + branches: [dev, v2] workflow_dispatch: jobs: diff --git a/.gitignore b/.gitignore index 006cab8c276c..183888091c6f 100644 --- a/.gitignore +++ b/.gitignore @@ -11,8 +11,10 @@ node_modules playground tmp dist +dist-node ts-dist .turbo +.typecheck-profiles **/.serena .serena/ **/.omo @@ -24,6 +26,7 @@ Session.vim a.out target .scripts +.cache .direnv/ # Local dev files diff --git a/.opencode/command/translate.md b/.opencode/command/translate.md index 8d493f4a8128..de18ae2ee86c 100644 --- a/.opencode/command/translate.md +++ b/.opencode/command/translate.md @@ -1,6 +1,6 @@ --- description: translate English to other languages -model: opencode/claude-opus-4-8 +model: opencode/gpt-5.6-sol --- run git diff and translate changed english doc and UI copy files to other international languages. Translate all languages in parallel to save time. diff --git a/.opencode/skills/ideal-pseudocode/SKILL.md b/.opencode/skills/ideal-pseudocode/SKILL.md new file mode 100644 index 000000000000..d75ae08a05c1 --- /dev/null +++ b/.opencode/skills/ideal-pseudocode/SKILL.md @@ -0,0 +1,68 @@ +--- +name: ideal-pseudocode +description: Function-by-function refactoring loop driven by ideal pseudocode. Use when the user says "ideal pseudocode", asks to make a function read like its pseudocode, or wants a dense module cleaned up one function at a time. +--- + +# Ideal Pseudocode + +Clean up one function at a time by writing the pseudocode it _should_ read as, naming every delta between that and the real code, and closing only the gaps the user approves. + +## Loop + +One function per round. Never touch code before the user picks a direction. + +1. **Pick the target** with the user — usually the next function up or down the call chain from the last round. +2. **Read the current code** fresh from disk. It may have unsaved or parallel edits; ask before overwriting anything unexpected. +3. **Distill.** Write the function's ideal pseudocode in a `ts`-fenced code block — TypeScript-flavored for syntax highlighting, but pseudocode: comments over mechanics, one line per idea, every arm of a loop visible as an arm. For a dense or unfamiliar function, first show the _current_ structure as pseudocode, then the ideal. +4. **Name the deltas.** A numbered list; each delta is one concrete gap: control flow smuggled through combinators, a flag-typed parameter, colliding names, side-effect plumbing drowning a loop body, twin functions differing only by a filter. For each, give an honest cost/benefit and a decisive recommendation — including "leave it" when the density has reasons (state the reasons). +5. **Verify before proposing.** Any API the proposal builds on (a combinator, schedule, matcher) gets checked against the installed version's source, not memory. +6. **Get buy-in, then apply.** Minimal edits. Quarantine irreducible ugliness inside a small helper whose name is the pseudocode line it implements. Collapse shallow sibling functions into one deep function only when the distinguishing argument is a domain noun, not a behavior switch. +7. **Validate.** Typecheck and the focused test suites from the package directory; rerun timing-sensitive tests repeatedly. Flag any semantic change the restructure introduced, even when tests pass. +8. **Offer the next target** and stop. + +## Style + +- Keep each round tight: pseudocode block, deltas, recommendation, one question. +- State mutation belongs in one visible place (usually the loop tail), never spread across error channels or callback closures. +- Prefer early return and `if` chains for control flow; matchers are for producing values. +- Compare names against the question each caller is actually asking; rename toward the domain noun. + +## Example round + +Every round should read like this (abridged from a real one, on an Effect step-runner): + +> `runStep` it is. The ideal pseudocode: +> +> ```ts +> // One logical step: one settled model call, however many attempts it takes. +> // An attempt can end without settling in two ways: +> // transient provider failure -> retry the same call, same assistant message +> // compaction rewrote history -> rebuild the request and call again +> function runStep(session, promotable, step) { +> while (true) { +> const result = callModel(session, promotable, step) +> +> if (result.completed) return result +> +> if (result.retryable) { +> wait(retrySchedule) // exhausted -> publish Step.Failed, fail drain +> promotable = none // never re-promote on a second attempt +> continue +> } +> +> // compaction restarted the step: fresh request from rewritten history +> promotable = none +> step = result.step +> } +> } +> ``` +> +> Comparing against the real thing, three deltas: +> +> 1. **The retry arm doesn't live in the loop.** In the pseudocode, retry is just another loop arm. In the real code it's smuggled through the error channel: `Effect.tapError` mutating loop variables via `Effect.sync` closures, then `Effect.retryOrElse` re-running a suspended call. Four mutable variables mutated from three different places — the state flow is invisible unless you already know the trick. +> 2. **`recoverOverflow: typeof compaction.compact | undefined`** — a function-typed parameter used as a one-shot armed/disarmed flag. The callee already closes over `compaction`; a boolean says what it is. +> 3. **`assistantMessageID`** exists solely to resume the same durable message across retries — fine, but only legible once the retry arm is visible in the loop. +> +> The unifying move for (1): a schedule driver, so a retryable failure becomes a caught value handled in the loop body exactly like the compaction arm. One honest trade: it's more manual than the blessed combinator — but the manual version is the loop the combinator was hiding, and the loop already exists for restarts. Two restart mechanisms, one control structure. +> +> Want me to apply it — unified loop, simplified schedule input, boolean `recoverOverflow`? diff --git a/.opencode/skills/opencode-drive/SKILL.md b/.opencode/skills/opencode-drive/SKILL.md new file mode 100644 index 000000000000..6633526b1091 --- /dev/null +++ b/.opencode/skills/opencode-drive/SKILL.md @@ -0,0 +1,254 @@ +--- +name: opencode-drive +description: Use when an agent needs drive OpenCode via a script or interact with an isolated instance +--- + +# OpenCode Drive + +Use `opencode-drive` to launch an isolated OpenCode instance and control it via commands or a script. + +There are two modes. Always default to using a script unless specifically directed to be interactive (connect +to an existing running instance, or start a new one, and make a few changes to the UI and read it, and iterate +on changes). + +Scripts allow you to run a full walkthrough in one run. When the script is done opencode-drive exits, +stops all processes, and cleans up all artifacts. + +# Prepare The Environment + +Use `init` when files must be added to the isolated home or project before OpenCode starts. It prints the artifact directory without launching OpenCode. A later `start` with the same name reuses it. + +```bash +artifacts=$(opencode-drive init --name demo) +cp -R ./fixtures/home/. "$artifacts/" +cp -R ./fixtures/project/. "$artifacts/files/" +opencode-drive start --name demo --dev ~/projects/opencode +``` + +The simulated project is under `$artifacts/files`. Running `start` without a prior `init` initializes the artifacts automatically. + +# Scripted usage + +You can write scripts that walk through entire flows, and gives you full access to controlling +the backend too. See examples of the script API at the bottom of this file. + +After creating or editing a script, always typecheck it before running. Never skip this step: + +```bash +opencode-drive check ./reproduce-stale-exploring-empty.ts +``` + +Run it by passing `--script` to start: + +```bash +opencode-drive start --name auto-stop-reproduction --script ./reproduce-stale-exploring-empty.ts +``` + +It will output information about the run, including paths to log files which you can read +to inspect what happened. If you need to dig into failures that aren't clear, read those log +files. If the script is unsuccessful, automatically fix the script and run it again. + +Scripts use one typed definition object. `setup` runs before OpenCode starts, +and `fs.writeFile` always writes inside the simulated project. + +You can read the full typed API here: https://raw.githubusercontent.com/jlongster/opencode-drive/refs/heads/main/src/script/types.ts + +```ts +import { defineScript } from "opencode-drive" + +export default defineScript({ + async setup({ fs, config }) { + config.autoupdate = false + await fs.writeFile("src/example.ts", "export const value = 1\n") + }, + + async run({ ui, llm }) { + await ui.submit("Open src/example.ts") + await llm.send(llm.text("The file exports `value`.")) + await ui.waitFor("The file exports `value`.") + }, +}) +``` + +`setup` receives the current OpenCode config object, which starts from the +default drive config unless the prepared instance already has one. When a script +needs custom config, mutate this `config` parameter instead of generating and +writing a new config object from scratch, so the script keeps the default +provider/model settings unless it intentionally changes them. + +Note that the simulated model is a GPT model type, and opencode uses the `patch` tool for working with files Do not use a `edit` or `write` tool to edit files. + +Use `launch: "manual"` when the script needs to launch the server and every TUI +itself (this is extremely rare, do not use this unless explicitly asked). In this +mode `ui` is typed as `null`; call `server.launch()` exactly +once before launching clients. Each `clients.launch(name)` result provides the +same UI methods as the automatic client. You can see an example of this API +here: https://raw.githubusercontent.com/jlongster/opencode-drive/refs/heads/main/examples/multiple-clients.ts + +Use the exported `wait(milliseconds)` utility for an unconditional delay. + +`await llm.send(...)` waits for the next request and resolves after OpenCode +acknowledges its complete response. `llm.queue(...)` declares responses in +advance. Chunks may be built with `text`, `reasoning`, `toolCall`, `raw`, +`finish`, and `disconnect`. A normal response receives `finish("stop")` +automatically unless it yields or queues an explicit terminal event. + +`llm.text(text, { delay, chunkSize })` defaults to a 2 ms delay and a +15-character target varied by plus or minus 5 per chunk. + +`llm.reasoning` accepts the same options, and `llm.pause(milliseconds)` adds a +delay between any two outputs. + +Use `llm.serve` for an ongoing typed response generator: + +```ts +llm.serve(async function* (request, index) { + yield llm.reasoning(`Handling request ${index + 1}`) + yield llm.text(`Received ${request.id}`) + yield llm.finish("stop") +}) +``` + +The backend connection, response cleanup, cancellation, and recording +completion are automatic. + +You can see some example scripts here: + +- https://raw.githubusercontent.com/jlongster/opencode-drive/refs/heads/main/examples/simple.ts +- https://raw.githubusercontent.com/jlongster/opencode-drive/refs/heads/main/examples/serve.ts + +## Prune + +- `prune` removes artifact directories. These are always cleaned up after running a script + successfully, but leftover on failed runs. Always call this if a script fails. + +```bash +opencode-drive prune --name demo + +// --force cleans up all artifcat directories +opencode-dirve prune --force +``` + +# Live interaction usage + +- Always give headless instances a unique `--name`. Visible instances may omit it. +- A normal headless `start` detaches automatically and returns after the instance is ready. +- Do not add `&`; the long-running owner already runs in the background. +- Configure simulated model responses after startup when needed. +- Send ordered UI commands with `send`. +- Always stop the instance when finished. + +```bash +opencode-drive start --name demo + +opencode-drive send --name demo \ + --command.ui.type '{"text":"Explain this project"}' \ + --command.ui.enter + +opencode-drive stop --name demo +``` + +## Send UI Commands + +- Every `send` opens a connection to the named instance, runs its commands in order, and exits. +- Combine typing and Enter in one command when submitting a prompt. +- JSON-valued commands require one JSON argument. +- Multiple command flags execute from left to right. + +Commands: + +- `--command.ui.type ` types into the focused editor. Arguments: `text` string. +- `--command.ui.press ` presses a key. Arguments: `key` string; optional `modifiers` object with boolean `ctrl`, `shift`, `meta`, `super`, or `hyper`. +- `--command.ui.enter` presses Enter. Arguments: none. +- `--command.ui.arrow ` presses an arrow key. Arguments: `direction` is `up`, `down`, `left`, or `right`. +- `--command.ui.focus ` focuses an element. Arguments: `target` is the numeric element `num` returned by `ui.state`. +- `--command.ui.click ` clicks an element. Arguments: numeric `target`, `x`, and `y`; use the element `num` returned by `ui.state` as `target`. +- `--command.ui.state` prints focus and interactive element metadata as JSON. Arguments: none. +- `--command.ui.matches ` prints whether literal, case-sensitive text appears on screen. Arguments: `text` string. + +```bash +opencode-drive send --name demo \ + --command.ui.type '{"text":"Find the relevant code and explain it"}' \ + --command.ui.enter + +opencode-drive send --name demo \ + --command.ui.press '{"key":"p","modifiers":{"ctrl":true}}' + +opencode-drive send --name demo \ + --command.ui.arrow '{"direction":"down"}' + +opencode-drive send --name demo \ + --command.ui.focus '{"target":12}' + +opencode-drive send --name demo \ + --command.ui.click '{"target":12,"x":4,"y":1}' + +opencode-drive send --name demo \ + --command.ui.matches '{"text":"OpenCode"}' +``` + +To read the UI state and see information about interactable elements, use the `ui.state` command: + +```bash +opencode-drive send --name demo --command.ui.state +``` + +## Configure LLM Responses + +- `responses` controls what the LLM responds with +- Only use this if you are wanting to reproduce an exact type of response +- Defaults are `text,reasoning,diff,tool` with `write,apply_patch`. +- Supported types are `text`, `reasoning`, `diff`, and `tool`. +- `--tools` limits generated tool calls to names offered by OpenCode. + +```bash +opencode-drive responses --name demo \ + --types text,reasoning,diff,tool \ + --tools write,apply_patch + +opencode-drive responses --name demo \ + --types tool \ + --tools read,glob,grep +``` + +## Inspect The UI + +- `ui.state` prints focus and interactive element metadata as JSON. +- `ui.matches` checks for literal, case-sensitive screen text. +- `screenshot` prints the generated image path. + +```bash +opencode-drive screenshot --name demo +``` + +## Lifecycle + +- `stop` waits for recording export and owner cleanup before returning. + +```bash +opencode-drive stop --name demo +``` + +# Record The UI + +- Start with `--record` to capture a headless instance from its first rendered frame. +- `stop` finishes the recording, exports an MP4, and prints its path. + +```bash +opencode-drive start --name demo --record + +opencode-drive send --name demo \ + --command.ui.type '{"text":"Show me the current architecture"}' \ + --command.ui.enter + +opencode-drive stop --name demo +``` + +# Artifacts dir + +- `dir` prints the artifact directory for the instance. + +```bash +opencode-drive dir --name demo +``` + diff --git a/.opencode/skills/sample-skill/SKILL.md b/.opencode/skills/sample-skill/SKILL.md new file mode 100644 index 000000000000..87b9e9690798 --- /dev/null +++ b/.opencode/skills/sample-skill/SKILL.md @@ -0,0 +1,31 @@ +--- +name: sample-skill +description: Use when the user says sample skill, skill demo, or asks how an opencode SKILL.md should be structured; demonstrates a tiny project-local skill with practical assistant workflow guidance. +--- + +# Sample Skill + +This is a minimal project-local opencode skill. It exists as a reference for how a skill is structured and as a tiny reusable workflow the assistant can load when the user asks for a skill example. + +## When To Use + +- Use when the user asks for a sample skill or skill template. +- Use when demonstrating the required `SKILL.md` frontmatter and body format. +- Do not use for unrelated coding tasks just because a skill exists. + +## Workflow + +- Confirm the specific outcome the user wants if the request is ambiguous. +- Inspect the relevant files before changing anything. +- Make the smallest correct change. +- Verify the result with a focused read, typecheck, test, or other lightweight check when available. +- Summarize the changed files and any required restart or reload step. + +## Example Response Style + +When this skill is relevant, keep responses direct and actionable: + +```text +I created a project-local skill at .opencode/skills/sample-skill/SKILL.md. +Restart opencode for the new skill to be discovered by future sessions. +``` diff --git a/.opencode/tool/github-triage.ts b/.opencode/tool/github-triage.ts index f25ca48b384b..e861e1e467b2 100644 --- a/.opencode/tool/github-triage.ts +++ b/.opencode/tool/github-triage.ts @@ -4,7 +4,7 @@ import { tool } from "@opencode-ai/plugin" const TEAM = { tui: ["kommander", "simonklee"], desktop_web: ["Hona", "Brendonovich"], - core: ["jlongster", "rekram1-node", "nexxeln", "kitlangton", "starptech"], + core: ["jlongster", "rekram1-node", "nexxeln", "kitlangton"], inference: ["fwang", "MrMushrooooom", "starptech"], windows: ["Hona"], } as const diff --git a/AGENTS.md b/AGENTS.md index cd2327e88811..027d22647eee 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,6 +1,6 @@ -- To regenerate the legacy JavaScript SDK, run `./packages/sdk/js/script/build.ts`. - After changing the public Protocol or Server `HttpApi`, run `bun run generate` from `packages/client`. Do not edit `src/generated` or `src/generated-effect` directly. - Keep runtime dependencies directed from Schema to Core and Protocol, then from Core and Protocol to Server. Client runtime code may depend on Schema and Protocol but never Core or Server; `sdk-next` composes Client, Core, and Server. +- Do not modify `packages/opencode` unless the user explicitly asks for V1 work. `packages/opencode` is the V1 implementation and is present for reference only. New implementation changes should land in the V2 package set: `packages/core`, `packages/cli`, `packages/server`, `packages/protocol`, `packages/schema`, and related generated client surfaces when required. - The default branch in this repo is `dev`. - Local `main` ref may not exist; use `dev` or `origin/dev` for diffs. @@ -24,6 +24,7 @@ Examples: `fix(tui): simplify thinking toggle styling`, `docs: update contributi - Keep things in one function unless composable or reusable - Do not extract single-use helpers preemptively. Inline the logic at the call site unless the helper is reused, hides a genuinely complex boundary, or has a clear independent name that improves the caller. +- Before adding complexity for a speculative or vanishingly unlikely race or security edge case, explain the concrete failure mode, likelihood, and complexity cost to the user and get their buy-in. Do not silently expand scope for theoretical robustness. - Avoid `try`/`catch` where possible - Avoid using the `any` type - Use Bun APIs when possible, like `Bun.file()` @@ -150,12 +151,15 @@ const table = sqliteTable("session", { ## V2 Session Core -- Keep durable prompt admission separate from model execution. `SessionV2.prompt(...)` admits one durable `session_input` row before scheduling advisory `SessionExecution.wake(sessionID)` unless `resume: false` requests admit-only behavior. The serialized runner promotes admitted inputs into visible user messages at safe boundaries. -- Reusing a Session ID adopts the existing Session. Reusing a prompt message ID reconciles an exact retry only when Session, prompt, and delivery mode match; conflicting reuse fails. Historical projected prompts lazily synthesize promoted inbox records during exact retry. -- Keep `SessionExecution` process-global and Session-ID based. Its local implementation owns the process-local Session coordinator and discovers placement through `SessionStore` plus `LocationServiceMap.get(session.location)` only when a drain starts; no layer should take a Session ID. V2 interruption targets the active process-local ownership chain for that Session; idle or missing interruption is a no-op. +- Keep durable events minimal: record irreducible new facts and do not repeat state derivable by folding the ordered aggregate history. Enrich projections and read models with previous or derived state when consumers need self-contained views. +- Keep durable prompt admission separate from model execution. `SessionV2.prompt(...)` admits one durable `session_pending` row before scheduling advisory `SessionExecution.wake(sessionID)` unless `resume: false` requests admit-only behavior. The serialized runner promotes admitted inputs into visible user messages at safe boundaries, consuming the pending row in the same event transaction; `session_pending` stores only unconsumed work. +- Reusing a Session ID adopts the existing Session. Reusing a prompt message ID reconciles an exact retry only when Session, prompt, and delivery mode match; conflicting reuse fails. Retry of an already-promoted input reconciles against the projected message and the durable admitted event rather than a retained row. +- Keep `SessionExecution` process-global and Session-ID based. Its local implementation owns the process-local Session coordinator and discovers placement through `SessionStore` plus `LocationServiceMap.get(session.location)` only when a drain starts; no layer should take a Session ID. V2 interruption targets the active process-local ownership chain for that Session; interruption of a known but idle or locally unowned Session is a no-op, while the public API rejects an unknown Session. - Keep `SessionRunner`, model resolution, tool registry, permissions, and filesystem Location-scoped. Omitted `Location.workspaceID` means implicit-local placement; explicit workspace identity remains reserved for future placement semantics. -- Preserve one explicit `llm.stream(request)` call per provider turn and reload projected history before durable continuation. Do not bridge through legacy `SessionPrompt.loop(...)` or delegate orchestration to an in-memory tool loop. +- Preserve one explicit `llm.stream(request)` call per Physical Attempt and reload projected history before durable continuation. Most Steps have one Physical Attempt; overflow-triggered compaction recovery may rebuild one Step for a second attempt. Do not bridge through legacy `SessionPrompt.loop(...)` or delegate orchestration to an in-memory tool loop. - Keep local Session drains process-local until clustering is implemented. `SessionRunCoordinator` joins explicit same-Session resumes, coalesces prompt wakeups, and allows different Sessions to run concurrently. Advisory wakes drain eligible durable inbox rows only; post-crash continuation recovery requires a separate explicit design before it may retry provider work. A drain has no durable identity or transcript boundary. -- Keep delivery vocabulary explicit. Prompts steer by default and promote at the next safe provider-turn boundary while the current drain requires continuation. An explicit `queue` input remains pending until the Session would otherwise become idle; promote one queued input at that boundary, then reevaluate continuation before promoting another. Promoting any new user input resets the selected agent's provider-turn allowance; a batch of steers resets it once. +- Keep delivery vocabulary explicit. Prompts steer by default and promote at the next safe step boundary while the current drain requires continuation. An explicit `queue` input remains pending until the Session would otherwise become idle; promote one queued input at that boundary, then reevaluate continuation before promoting another. Promoting any new user input resets the selected agent's step allowance; a batch of steers resets it once. +- One step is one logical LLM call; its durable record covers only the model-visible span. Do not write "provider turn", and do not use bare "turn" for a single call: "turn" is reserved for the future assistant-turn unit containing all steps from prompt promotion until the session would go idle. - Keep EventV2 replay owner claims separate from clustered Session execution ownership. -- Keep the System Context algebra, registry, and built-ins in `src/system-context`; keep Context Source producers with their observed domains, and keep Session History selection plus Context Epoch persistence Session-owned. +- Keep the Instructions algebra and built-ins in `src/instructions`; keep instruction producers with their observed domains, and keep Session History selection plus `InstructionState` and `InstructionEntry` persistence Session-owned. `InstructionDiscovery` observes ambient global and upward-project instructions. The runner composes built-ins, discovery, guidance, and entries explicitly in `loadInstructions`; there is no instruction registry. +- `session.instructions.updated` stores only changed source keys and content hashes. Blob values live once in `instruction_blob`; `instruction_state` is a rebuildable fold cache, never primary state. Render initial instructions and chronological updates from values during request assembly. Completed compaction moves the instruction epoch; Session movement and committed revert clear it. Unavailable sources retain the last value and block only the initial complete delta. diff --git a/CONTEXT.md b/CONTEXT.md deleted file mode 100644 index 5e5955d344a1..000000000000 --- a/CONTEXT.md +++ /dev/null @@ -1,225 +0,0 @@ -# OpenCode Session Runtime - -OpenCode sessions preserve durable conversational history while assembling the runtime context an agent needs to act correctly in its current environment. - -## Language - -**System Context**: -The structured collection of contextual facts presented to the model as initial instructions and chronological updates. -_Avoid_: System prompt - -**Session History**: -The projected chronological conversation selected for a provider turn after applying the active compaction and **Context Epoch** cutoffs. -_Avoid_: Session Context - -**Context Source**: -One independently observed typed value within the **System Context**, represented by a stable key, JSON codec, infallible loader, pure baseline/update renderers, and an optional removal renderer for dynamic sources. -_Avoid_: Prompt fragment - -**System Context Registry**: -The Location-scoped registry of ordered, scoped producers that contribute to the current **System Context**. - -**Mid-Conversation System Message**: -A durable chronological instruction that tells the model the newly effective state of a changed **Context Source**. -_Avoid_: System update, system notification, raw text diff - -**Context Epoch**: -The span during which one initially rendered **System Context** remains the immutable provider-cache baseline, ending at completed compaction, Session movement, or an incompatible context transition that requires a fresh baseline. - -**Baseline System Context**: -The full **System Context** rendered at the start of a **Context Epoch**. -_Avoid_: Live system prompt - -**Context Snapshot**: -The overwriteable model-hidden JSON state used to compare each **Context Source** with the value last admitted to a provider turn. - -**Unavailable Context**: -An expected temporary inability to observe a **Context Source** value; the runtime retains its prior effective state and emits no update, or omits it until first successfully loaded. - -**Safe Provider-Turn Boundary**: -The point immediately before a provider call, after durable input promotion and any required tool settlement, where context changes may be admitted chronologically. - -**Admitted Prompt**: -A durable user input accepted into the Session inbox but not yet included in **Session History**. - -**Prompt Promotion**: -The durable transition that removes an **Admitted Prompt** from pending input and appends its user message to **Session History**. - -**Provider Turn**: -One request to a model provider and the response projected from that request. - -**Session Drain**: -One process-local execution span that promotes eligible input and runs required **Provider Turns** until no immediate continuation remains. A Session Drain has no durable identity or transcript boundary. - -**Model Tool Output**: -The bounded projection of a Core-executed tool result persisted in Session history and replayed to the model. A tool may shape this projection semantically, but the Tool Registry enforces the final size limit. - -**Managed Tool Output File**: -A temporary file created under OpenCode's shared tool-output directory to retain complete output that was too large for Session history. - -**Model Request Options**: -Provider-semantic model settings selected from the Catalog and active Session variant before the LLM protocol adapter encodes them for a provider request. -_Avoid_: Request body, wire options - -**Generation Controls**: -Provider-neutral sampling and output controls, partitioned from provider semantics and compatibility wire fields when model metadata enters the Catalog. - -**Native Continuation Metadata**: -Opaque protocol-shaped data attached to assistant content and required to continue that content natively with a compatible model, such as a reasoning signature or provider-hosted item identifier. - -**PTY Environment**: -The host-supplied environment overlay applied by the server when creating a PTY, observed for the request Location and resolved PTY working directory. - -**OpenCode Client**: -The generated Promise and Effect APIs derived from the public `HttpApi`; **Embedded OpenCode** shares the Effect API through an in-memory `HttpClient` against the same router and handlers. -_Avoid_: Remote client - -**SDK Contract IR**: -The runtime-neutral compiled representation of the authoritative `HttpApi`, preserving encoded and decoded type projections plus transport metadata so independent SDK emitters can choose their public value model and runtime interpreter. - -**Embedded OpenCode**: -A scoped in-process host that structurally extends the **OpenCode Client**, supplies an in-memory HTTP transport, and exposes additional same-process capabilities directly. -_Avoid_: Local implementation - -**Page**: -A bounded ordered result containing `items` and opaque `previous` and `next` cursor links for navigating the same query in either direction. -_Avoid_: Response envelope - -## Relationships - -- A **System Context** is an opaque carrier composed from zero or more **Context Sources**. -- **Session History** contains projected conversational messages and admitted **Mid-Conversation System Messages**; the active **Baseline System Context** remains separate provider-request state. -- The **System Context Registry** uses stable-keyed scoped contributions to assemble the current **System Context**; contributor removal naturally removes its sources at the next **Safe Provider-Turn Boundary**. -- A changed **Context Source** may produce one **Mid-Conversation System Message** containing its newly effective state. -- A **Mid-Conversation System Message** persists the exact combined rendered text sent to the model. -- The current **Context Snapshot** advances atomically with the corresponding durable **Mid-Conversation System Message**. -- A **Context Snapshot** stores one codec-encoded JSON value and, for removable dynamic sources, a pre-rendered removal message per stable **Context Source** key. -- Changes from multiple **Context Sources** admitted at one safe boundary combine into one **Mid-Conversation System Message**. -- Context changes are sampled and admitted lazily at a **Safe Provider-Turn Boundary**, never pushed asynchronously when their source changes. -- At a **Safe Provider-Turn Boundary**, newly promoted user input or settled tool results precede any combined **Mid-Conversation System Message**. -- An **Admitted Prompt** is replayable pending input, not yet model-visible **Session History**. -- **Prompt Promotion** atomically consumes the pending inbox entry and appends its model-visible user message. -- Steering prompts promote at the next **Safe Provider-Turn Boundary** while the current **Session Drain** still requires continuation. Promoting any newly admitted user input resets the selected agent's provider-turn allowance; multiple prompts promoted at one boundary reset it once. -- A queued prompt does not promote while the current **Session Drain** requires continuation. The runner promotes one queued prompt when the Session would otherwise become idle, then reevaluates continuation before promoting another. -- A **Session Drain** is process-local coordination rather than a durable domain entity. Durable recovery must reason from prompts, projected history, provider attempts, and tool state rather than inventing an enclosing execution identity. -- The first provider turn renders the latest complete **Baseline System Context** and initializes its **Context Snapshot** without emitting a redundant **Mid-Conversation System Message**; unavailable initial context blocks the turn instead of persisting an incomplete baseline. -- Initial **System Context** preparation precedes the first durable input promotion so an unavailable baseline leaves that input pending and retryable; ordinary reconciliation remains after promotion. -- Compaction starts a new **Context Epoch** with a freshly rendered **Baseline System Context** and **Context Snapshot**; prior **Mid-Conversation System Messages** remain durable audit history but leave projected model history. -- A newly registered core or plugin-defined **Context Source** absent from the current snapshot emits its baseline rendering once at the next **Safe Provider-Turn Boundary**. -- **Context Source** keys are stable and namespaced; duplicate keys fail composition. `SystemContext.combine(...)` preserves caller order; the **System Context Registry** evaluates producers concurrently and combines them in stable contribution-key order so rendered context remains deterministic. -- Each **Context Source** loader returns one coherent typed value. `SystemContext.make(...)` hides that value type so differently typed sources compose uniformly. Its codec compares and stores that value; its pure renderers produce model-visible baseline, update, and removal text only when needed. -- `SystemContext.initialize(...)` observes a composed **System Context** once and produces a fresh **Baseline System Context** with its **Context Snapshot**. -- `SystemContext.reconcile(...)` observes a composed **System Context** once and returns exactly one next action: unchanged, updated, replacement ready, or replacement blocked. -- `SystemContext.replace(...)` renders a fresh generation after completed compaction or another baseline-replacing transition; it reports replacement blocked while previously admitted context is unavailable. -- **Unavailable Context** uses stale-while-revalidate semantics and is distinct from a successfully loaded absence, which may emit removal text. -- Ordinary **Context Source** loaders return values directly; loaders that intentionally use stale-while-revalidate may explicitly return **Unavailable Context**. -- Nested project instruction discovery after successful reads remains a follow-up; when implemented, discovered instructions must be admitted durably at the next **Safe Provider-Turn Boundary**. -- Location-scoped services naturally re-resolve effective context when a moved session next runs in its destination location. -- Moving a Session clears its active **Context Epoch**, so the destination must initialize a complete baseline before another prompt can promote. -- Instruction discovery, source identity, persistence, and file loading belong to the instruction service; the **System Context** abstraction only composes effectful producers and renders loaded values. -- The first instruction-service slice observes global and upward project `AGENTS.md` files as one ordered aggregate **Context Source** at each **Safe Provider-Turn Boundary**. -- Built-in and instruction context producers register through the **System Context Registry** with stable contribution keys. Plugin-defined context registration and hot-reload lifecycle remain a follow-up built on the same scoped registry seam. -- Selected-agent available-skill guidance is a **Context Source** composed with Location-wide registry sources immediately before Context Epoch admission. It lists only names and descriptions permitted for that agent; skill bodies and locations are exposed only through the permission-checked `skill` tool. -- The selected agent and model are sampled when a provider turn starts. Changes admitted after that boundary apply to the next provider turn and do not restart the current turn. -- Selected-agent available-skill guidance remains a **Context Source**. An agent switch that changes that guidance produces a **Mid-Conversation System Message** while preserving the current baseline. -- Local tool authorization and pending permission requests retain the effective agent of the provider turn that issued the call; a later agent switch cannot change that call's policy. -- Context source changes never wake idle sessions; the next naturally scheduled **Safe Provider-Turn Boundary** loads and compares current values lazily. -- Once admitted, a **Mid-Conversation System Message** remains durable even if the following provider attempt fails and is replayed unchanged on retry. -- **Mid-Conversation System Messages** remain durable Session-message history; normal user-facing transcript surfaces may hide them. -- The date **Context Source** initially preserves host-local calendar-date behavior; a configured user timezone may replace that default later. -- A **Context Epoch** begins with one immutable **Baseline System Context**. -- A **Baseline System Context** is stored durably and reused verbatim across process restarts within its **Context Epoch**. -- A **Baseline System Context** durably preserves the exact joined text used for the active provider-cache prefix. -- Completed compaction starts a new **Context Epoch** on the next provider attempt, folding the current complete **System Context** into a fresh baseline and removing earlier **Mid-Conversation System Messages** from active model history. -- A model/provider switch preserves the current **Context Epoch** and chronological conversation history; the new selection applies to the next provider turn. -- **Native Continuation Metadata** remains in durable history. Provider-turn projection includes it only for a successful exact originating provider/model match; failed turns and incompatible models omit opaque metadata, while non-empty visible reasoning lowers to ordinary assistant text after a model switch. This conservative relation may widen only when recorded provider tests establish compatibility. -- **Model Request Options** remain provider-semantic through Catalog resolution. The Session runner maps them into the LLM package's provider-option namespace; the selected protocol adapter alone owns provider wire encoding. -- **Generation Controls**, protocol-semantic **Model Request Options**, and compatibility request body fields are separate Catalog domains. A shared ingestion adapter partitions legacy and models.dev AI-SDK-shaped options before routing. -- The **PTY Environment** is a server concern rather than a Core PTY concern. PTY creation merges caller values, then the host overlay, then Core-forced terminal invariants such as `TERM` and `OPENCODE_TERMINAL`. -- Networked and **Embedded OpenCode** use the same **OpenCode Client** and preserve the full HTTP encoding, routing, middleware, and decoding boundary; only the `HttpClient` transport differs. -- The Effect-native network constructor obtains `HttpClient.HttpClient` from its environment so callers own transport selection, recording, tracing, retries, and tests. Convenience runtimes may provide a fetch transport separately. -- Creating **Embedded OpenCode** is scoped. Closing its owning Scope releases the in-process server resources, database resources, registrations, and fibers. -- **Embedded OpenCode** exposes shared client capabilities and embedded-only capabilities on one object; consumers do not navigate through a nested `.client` property. -- The beta **OpenCode Client** currently uses plural consumer-facing capability groups such as `sessions`; whether the stable Session namespace should instead be singular `session` must be settled before stabilization. Internal server identifiers do not implicitly define public client names. -- Server's concrete `HttpApi` is authoritative for shared **OpenCode Client** capabilities. Codegen compiles its Session group directly; the Effect runtime uses an equivalent Protocol-only projection so generated artifacts remain independent of Core and Server. -- SDK generation reflects the public `HttpApi` once into an **SDK Contract IR**. Promise and Effect emitters share endpoint structure and transport metadata without being required to expose identical public values: an emitter may select encoded wire types, decoded domain types, compile-time brands, runtime validation, and its own execution abstraction independently. -- The first Effect emitter is the rich projection: it exposes decoded Effect-native values, preserves brands and schema transformations, performs runtime schema decoding, and delegates transport interpretation to `HttpApiClient`. Lighter wire-shaped Effect output remains possible through another emitter policy rather than constraining the shared IR. -- The rich Effect emitter regenerates private executable schemas when the **SDK Contract IR** proves that their transport semantics can be reproduced exactly. Contracts with authoritative custom transformations use the import-based Effect emitter against a Protocol-only client projection whose generated transport output is tested against Server's concrete API; the Promise emitter still derives zero-Effect structural wire types from the same IR. -- `@opencode-ai/protocol` owns Session endpoint construction and middleware placement. Server supplies concrete middleware keys to produce the authoritative build-time API; the client projection supplies transport-only keys without importing Core or Server at runtime. -- The first Promise emitter targets the same clean domain-oriented method organization rather than Hey API source compatibility. It returns unwrapped values directly, rejects declared and infrastructure failures, and begins with minimal client-level transport configuration; result wrappers, interceptors, and legacy generated signatures are outside the initial surface. -- The first Promise emitter parses response syntax and trusts its generated structural types; it does not perform runtime structural validation. Malformed payload syntax fails, while a syntactically valid shape mismatch is not detected at the SDK boundary. Standalone validator generation remains an optional future emitter policy. -- Declared Promise-client failures retain their tagged structural wire values and have generated type guards. Consumers do not depend on generated `Error` subclass identity, preserving discrimination across package copies and realms while remaining structurally aligned with Effect domain errors. -- Promise-client infrastructure failures use one generated `ClientError` class with a structured reason such as transport failure, unexpected status, unsupported content type, or malformed response. Promise methods reject with either a tagged declared domain failure or `ClientError`, matching the Effect client's conceptual domain/infrastructure error division. -- Promise methods accept a separate optional per-call transport-options argument containing `AbortSignal` and header overrides. Cancellation and transport metadata do not enter the domain input object; broader interceptor and response-mode APIs remain deferred. -- Promise streaming methods return a lazy `AsyncIterable` directly rather than a Promise-wrapped stream object. Iteration opens the connection, `AbortSignal` cancels it, and ending iteration closes the underlying request; the Effect emitter analogously returns `Stream` directly. -- Promise SSE connection establishment, declared HTTP failures, and infrastructure failures occur during `AsyncIterable` iteration, beginning with its first `next()` call, rather than during synchronous method construction. -- Neither generated streaming runtime automatically reconnects after disconnection. Promise `AsyncIterable` and Effect `Stream` fail explicitly; live consumers refresh and resubscribe, while durable sequence-based resume remains explicit composition above the generated client. -- Promise client construction is synchronous and network-free. It requires `baseUrl`, defaults to `globalThis.fetch`, accepts client-level headers, and merges them with per-call header overrides. -- Effect client construction accepts an explicit `baseUrl` and obtains `HttpClient.HttpClient` from the Effect environment. It does not install fetch or duplicate per-call transport policy; callers transform/provide the client for headers, tracing, retries, recording, and tests, while fiber interruption owns cancellation. -- Promise and Effect emitters each own their generated public type modules. The **SDK Contract IR**, not a physically shared generated type package, is the common source; this permits zero-Effect wire types and rich decoded Effect types to evolve independently. -- Promise and Effect network clients ship from `@opencode-ai/client` behind isolated root and `/effect` exports. The root has no runtime path to Effect; `/effect` imports only Effect, Schema, and Protocol. -- The Effect-native scoped host belongs to `@opencode-ai/sdk-next`, which will assume the existing `@opencode-ai/sdk` name after legacy consumers migrate. Client remains network-only and SDK depends one-way on Client. -- SDK executes Server's assembled `HttpRouter` in memory. It opens no listener and performs no network I/O, while preserving Server routing, middleware, codecs, handlers, and errors. -- The Effect Client and SDK re-export their decoded datatype facade from Schema so callers do not depend on internal package locations or Core's versioned names. -- A capability intended for both networked and **Embedded OpenCode** belongs in the authoritative public `HttpApi`; embedded-only same-process capabilities extend **Embedded OpenCode** separately. -- `sessions.events({ sessionID, after })` is a public durable Session event stream. It verifies the Session, replays durable events after the optional aggregate sequence, continues with newly committed durable events, excludes live-only fragments, and is transported as SSE in both networked and embedded modes. -- `events.subscribe()` is a distinct public instance-wide live stream for Session and non-Session activity. It has no replay guarantee and includes connection, heartbeat, and instance-disposal lifecycle events; consumers recover from disconnection by refreshing authoritative state. -- A Session ID is not an optional filter on `events.subscribe()`: instance-wide live events and durable Session events have different schemas, replay guarantees, cursors, lifecycle events, and failure behavior. -- The initial common OpenCode Client does not expose server-global event aggregation. `events.subscribe()` is bounded to the connected OpenCode instance or workspace; any future cross-instance administrative stream requires a separately designed API. -- `events.subscribe()` does not automatically reconnect after transport loss. The live-only stream fails with `ClientError`; consumers refresh authoritative state before explicitly opening a new subscription because events missed during disconnection cannot be replayed. -- `sessions.events({ sessionID, after })` returns the generated HTTP client's cold durable event stream and does not build reconnection policy into the endpoint or client constructor. Transport loss fails the stream with `ClientError`. Callers may compose an explicit resuming stream above it by retaining the last observed durable sequence and opening a new subscription with `after`; any reusable resume helper remains a separate API design question. -- The stable `sessions.list(...)` design returns a **Page** in both networked and **Embedded OpenCode**; embedded execution does not define a separate unbounded array-returning list operation. The beta client currently preserves the existing HTTP `{ data, cursor }` envelope until emitter-level Page projection is implemented. -- Session list cursors are opaque branded values carrying continuation query and ordering state. Consumers pass them back unchanged and do not inspect storage anchors or encoded filter fields. -- A Session list continuation accepts only its opaque cursor. Scope, filters, ordering, and page size are fixed by the initial query and carried by that cursor. -- `sessions.messages(...)` returns a **Page** and uses the same cursor discipline as `sessions.list(...)`: the initial request supplies `sessionID`, ordering, and page size; continuation supplies `sessionID` plus only an opaque branded message cursor carrying ordering, page size, direction, and message anchor. Using a cursor with another Session is invalid. -- `sessions.message({ sessionID, messageID })` is a required resource lookup. An unknown Session fails with `SessionNotFoundError`; a known Session with an absent or differently owned message fails with `MessageNotFoundError` without disclosing cross-Session ownership. Absence is not represented as `undefined` across the public HTTP boundary. -- `sessions.interrupt({ sessionID })` first verifies that the durable Session exists, failing with `SessionNotFoundError` otherwise. For a known Session, interruption is idempotent: idle, already-settled, or locally unowned execution is a no-op. -- `sessions.active()` snapshots the current process's foreground Session drain registry as a record of Session IDs to `{ type: "running" }`. Missing IDs are inactive; background subagents and tasks do not make their parent Session active, and process restart clears the registry. -- `sessions.context({ sessionID })` preserves the existing message-only operation. It returns projected conversational messages selected as Session context; it does not include or represent the complete provider request context, whose baseline system context and other contributions remain separate. -- **Open question**: Should a future, separately named operation expose the complete provider request context, including baseline system context, selected source contributions, and context-epoch metadata? -- `sessions.prompt(...)` exposes `resume?: boolean`. Omitting it preserves durable admission followed by an advisory execution wake; `resume: false` requests durable admit-only behavior. -- The public operation remains `sessions.prompt(...)`; `SessionInput.admit` is the internal primitive, while the public `Admission` result and `resume` option express its durable admission semantics. -- `sessions.create(...)` accepts an optional `location`. Omission resolves through the connected OpenCode instance's default or current location; an explicit value selects a known location. Networked and embedded transports use the same handler semantics. -- `sessions.switchAgent({ sessionID, agent })` is part of the common client alongside `sessions.switchModel(...)`. It affects subsequent Session activity and fails with `SessionNotFoundError` for an unknown Session. -- The **Embedded OpenCode** Layer delegates to the same scoped creation path; it does not define a second implementation. -- A **PTY Environment** adapter observes plugins in the request Location while passing the resolved PTY working directory to the hook; standalone servers use an empty adapter. -- A **Mid-Conversation System Message** lowers to the provider's native chronological instruction role when supported and to a wrapped chronological fallback otherwise. -- When the effective aggregate instruction set changes, its **Mid-Conversation System Message** includes the complete current ordered set and supersedes the prior aggregate value; when no ambient instructions remain, the message states that previously loaded instructions no longer apply. -- Ambient project instruction discovery honors `OPENCODE_DISABLE_PROJECT_CONFIG`; global instructions remain eligible. -- Oversized textual **Model Tool Output** retains a bounded preview in Session history while its complete text moves to managed tool-output storage. Arbitrary structured-result size is a separate concern. -- One tool settlement receives one aggregate textual limit, using the configured maximum lines or UTF-8 bytes, whichever is reached first. The limit is provider-independent; token pressure belongs to context assembly and compaction. -- Generic truncation preserves the beginning and end of textual output. Tools may apply a more meaningful strategy before the Tool Registry enforces the final limit. -- A truncated **Model Tool Output** identifies its complete text both in the bounded model-visible preview and as a typed managed output path. Managed output paths do not modify the tool's validated structured result. -- A **Managed Tool Output File** is temporary and may expire after its retention period. The bounded **Model Tool Output**, not the file, is the durable replayable record. -- Failure to retain a **Managed Tool Output File** does not change a successful tool operation into a failed one. The Session records an explicitly lossy bounded output without a path, while operators receive diagnostics for the storage failure. -- Once a tool operation succeeds, bounding its **Model Tool Output** and publishing its one durable settlement form an interruption-safe completion region. Raw oversized success is never published before a later correction. -- When a structured-only result would exceed the **Model Tool Output** limit, its validated structured value remains unchanged for Session consumers while model replay uses a bounded textual JSON preview and optional managed output path. -- Existing tool-managed output paths survive generic bounding. A fallback file retains exactly the complete projected text received by the Tool Registry and never claims to reconstruct output already discarded by tool-specific shaping. -- **Managed Tool Output Files** use globally unique names in one shared flat directory. Their absolute paths are readable and searchable by ordinary tools; other absolute paths remain outside Location-scoped filesystem authority. -- Provider-executed tool results remain provider-native transcript facts outside generic Tool Registry bounding. Their context control requires provider-aware pruning or compaction because some providers require exact structured round-trip payloads. - -## Client contract architecture - -Semantic values that mean the same thing internally and publicly live in the lightweight Schema leaf. Core consumes Schema for domain behavior; Protocol composes Schema values into paths, payloads, envelopes, errors, cursors, and streams; Server imports both, hosts Protocol's exact groups, and owns protocol/domain adaptation. The root Promise client remains zero-Effect, `/effect` depends on Effect plus Schema and Protocol, and `@opencode-ai/sdk-next` composes the scoped in-process host above Client, Core, and Server. - -Shared public records are plain objects declared with `Schema.Struct`. A same-name inferred interface gives object records readable TypeScript signatures without constructors, prototypes, or nominal identity; unions retain explicit type aliases. - -Before stabilizing the client API: - -- Keep additional public schemas in Schema and additional network groups in Protocol; neither package may transitively load databases, Drizzle, Session execution, providers, watchers, native modules, or WASM. -- Keep concrete Location middleware keys in Server while Protocol owns their placement. Client projections may supply transport-only keys, but must prove generated equivalence with Server's concrete API. -- Project the existing list response envelope to the stable client **Page** shape and enforce separate initial-query and cursor-continuation inputs without changing the hosted V2 wire contract. -- Settle the stable consumer namespace (`session` versus the current beta `sessions`) and use an explicit codegen annotation if the consumer name should differ from the server group identifier. -- Preserve V2 route paths, operation IDs, codecs, errors, middleware behavior, and OpenAPI output while making this change. -- Preserve browser-safe `@opencode-ai/client` and `@opencode-ai/client/effect` bundles through import-boundary tests. -- Define embedded-host placement before supporting multiple hosts over one database. Hosts that share durable Session storage must also share process-local Session execution coordination, or each host must receive isolated storage explicitly. -- Keep an embedded request scope alive until any streamed response body finishes. The initial non-streaming Session surface does not exercise this lifetime boundary; Session and instance event streams must do so before joining the embedded client. - -## Example dialogue - -> **Dev:** "The date changed while the session was active. Should the **Mid-Conversation System Message** say what the old date was?" -> **Domain expert:** "No. Emit the newly effective date so the agent can act on the current **System Context**." - -## Flagged ambiguities - -- Legacy `experimental.chat.system.transform` can mutate the assembled baseline system prompt arbitrarily, but V2 plugins do not yet expose an equivalent hook. Decide separately whether to port it, replace dynamic uses with plugin-defined **Context Sources**, or narrow its semantics. diff --git a/README.zh.md b/README.zh.md index 93f81e83cd0c..352e13ccaa1d 100644 --- a/README.zh.md +++ b/README.zh.md @@ -125,4 +125,4 @@ OpenCode 内置两种 Agent,可用 `Tab` 键快速切换: --- -**加入我们的社区** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=738j8655-cd59-4633-a30a-1124e0096789&qr_code=true) | [X.com](https://x.com/opencode) +**加入我们的社区** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=52ao9352-5623-4fa0-b7dd-3407c392c1af&qr_code=true) | [X.com](https://x.com/opencode) diff --git a/README.zht.md b/README.zht.md index 59d9709bd39f..f09358b1330b 100644 --- a/README.zht.md +++ b/README.zht.md @@ -125,4 +125,4 @@ OpenCode 內建了兩種 Agent,您可以使用 `Tab` 鍵快速切換。 --- -**加入我們的社群** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=738j8655-cd59-4633-a30a-1124e0096789&qr_code=true) | [X.com](https://x.com/opencode) +**加入我們的社群** [飞书](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=52ao9352-5623-4fa0-b7dd-3407c392c1af&qr_code=true) | [X.com](https://x.com/opencode) diff --git a/artifacts/glm52-rise-video/.gitignore b/artifacts/glm52-rise-video/.gitignore new file mode 100644 index 000000000000..9d38bb25911c --- /dev/null +++ b/artifacts/glm52-rise-video/.gitignore @@ -0,0 +1,3 @@ +node_modules +.remotion +out/frame-*.png diff --git a/artifacts/glm52-rise-video/bun.lock b/artifacts/glm52-rise-video/bun.lock new file mode 100644 index 000000000000..cac009ae812f --- /dev/null +++ b/artifacts/glm52-rise-video/bun.lock @@ -0,0 +1,483 @@ +{ + "lockfileVersion": 1, + "configVersion": 1, + "workspaces": { + "": { + "name": "glm52-rise-video", + "dependencies": { + "@remotion/cli": "^4.0.384", + "react": "^19.2.3", + "react-dom": "^19.2.3", + "remotion": "^4.0.384", + }, + "devDependencies": { + "@types/react": "^19.2.8", + "@types/react-dom": "^19.2.3", + "typescript": "^5.8.2", + }, + }, + }, + "packages": { + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.29.7", "", {}, "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw=="], + + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.29.7", "", {}, "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg=="], + + "@babel/parser": ["@babel/parser@7.24.1", "", { "bin": "./bin/babel-parser.js" }, "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg=="], + + "@babel/types": ["@babel/types@7.24.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" } }, "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w=="], + + "@emnapi/core": ["@emnapi/core@1.11.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.11.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], + + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "@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/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.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], + + "@mediabunny/aac-encoder": ["@mediabunny/aac-encoder@1.47.0", "", { "peerDependencies": { "mediabunny": "^1.0.0" } }, "sha512-JNzgdJoHMFFnv5imi1+dmjZMudsJ1zNCUCEkKjBh90cqGhAFg8xu4V2gsyxE2i6oq/YpWx23P+OvoANLSMcDzA=="], + + "@mediabunny/flac-encoder": ["@mediabunny/flac-encoder@1.47.0", "", { "peerDependencies": { "mediabunny": "^1.0.0" } }, "sha512-VpKmJO0xlYcFCRD6JvJlMbNQ6d/6YMHdO1gFIqWlZABHjSSL6BquNNEgWSCv5vdF8ELDBwIYBVZEslakIB/7GA=="], + + "@mediabunny/mp3-encoder": ["@mediabunny/mp3-encoder@1.47.0", "", { "peerDependencies": { "mediabunny": "^1.0.0" } }, "sha512-JyzZyGeGRm2HVUQaGJ/VZT9OG+kG00mA8SLP/f3CO7+qWAmBncKc16WYXWHbZEo8Jn/ZGA6De32S5R2bTQbDqA=="], + + "@module-federation/error-codes": ["@module-federation/error-codes@0.22.0", "", {}, "sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug=="], + + "@module-federation/runtime": ["@module-federation/runtime@0.22.0", "", { "dependencies": { "@module-federation/error-codes": "0.22.0", "@module-federation/runtime-core": "0.22.0", "@module-federation/sdk": "0.22.0" } }, "sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA=="], + + "@module-federation/runtime-core": ["@module-federation/runtime-core@0.22.0", "", { "dependencies": { "@module-federation/error-codes": "0.22.0", "@module-federation/sdk": "0.22.0" } }, "sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA=="], + + "@module-federation/runtime-tools": ["@module-federation/runtime-tools@0.22.0", "", { "dependencies": { "@module-federation/runtime": "0.22.0", "@module-federation/webpack-bundler-runtime": "0.22.0" } }, "sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA=="], + + "@module-federation/sdk": ["@module-federation/sdk@0.22.0", "", {}, "sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g=="], + + "@module-federation/webpack-bundler-runtime": ["@module-federation/webpack-bundler-runtime@0.22.0", "", { "dependencies": { "@module-federation/runtime": "0.22.0", "@module-federation/sdk": "0.22.0" } }, "sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA=="], + + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.0.7", "", { "dependencies": { "@emnapi/core": "^1.5.0", "@emnapi/runtime": "^1.5.0", "@tybys/wasm-util": "^0.10.1" } }, "sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw=="], + + "@remotion/bundler": ["@remotion/bundler@4.0.483", "", { "dependencies": { "@remotion/media-parser": "4.0.483", "@remotion/studio": "4.0.483", "@remotion/studio-shared": "4.0.483", "@remotion/timeline-utils": "4.0.483", "@rspack/core": "1.7.11", "@rspack/plugin-react-refresh": "1.6.1", "css-loader": "7.1.4", "esbuild": "0.28.1", "react-refresh": "0.18.0", "remotion": "4.0.483", "style-loader": "4.0.0", "webpack": "5.105.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-5fQRMYgr2sxZPBOThnIVuFwHBq/FhusJ+Ke6xopga8io8ecK/mj9GaRXC3tgfMa+YWuu8ZSXZ0U9EsMZjjP5YQ=="], + + "@remotion/canvas-capture": ["@remotion/canvas-capture@4.0.483", "", { "dependencies": { "mediabunny": "1.47.0", "remotion": "4.0.483" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-JABgbfvXwjFp1E61tlDN9gVAH8OoeF4kUUELNwG9kcNOE4ex8+vCYEO6VKIaXZ4l8A1PEAQ5EK//NheTJ80gfw=="], + + "@remotion/cli": ["@remotion/cli@4.0.483", "", { "dependencies": { "@remotion/bundler": "4.0.483", "@remotion/media-utils": "4.0.483", "@remotion/player": "4.0.483", "@remotion/renderer": "4.0.483", "@remotion/studio": "4.0.483", "@remotion/studio-server": "4.0.483", "@remotion/studio-shared": "4.0.483", "dotenv": "17.3.1", "minimist": "1.2.6", "prompts": "2.4.2", "remotion": "4.0.483" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" }, "bin": { "remotion": "remotion-cli.js", "remotionb": "remotionb-cli.js", "remotiond": "remotiond-cli.js" } }, "sha512-z4TQcgTfQbSIV4GQpCvIihDL77M+leQelbxv962PmfSKTT7z3XnNN732PcZ4sei2+Xg+d2SD95K4tI5XBYs5Gw=="], + + "@remotion/compositor-darwin-arm64": ["@remotion/compositor-darwin-arm64@4.0.483", "", { "os": "darwin", "cpu": "arm64" }, "sha512-CkEJXouGEoCs5PX3KOufkXrlT/Kgn0ZF7SEQ4meCYGYMZD+QPVtsmS1MXH8pQ4RHlFO6Tk7g0CIHMT3Y4yzpuA=="], + + "@remotion/compositor-darwin-x64": ["@remotion/compositor-darwin-x64@4.0.483", "", { "os": "darwin", "cpu": "x64" }, "sha512-vDZK5U8FYbHGMjFC2lUgJRBz8KXwbwFSvEQi8FATD0roNg75SoaEJWrqAOIVv8v5eBjPvo18znDc36NLRYn1Eg=="], + + "@remotion/compositor-linux-arm64-gnu": ["@remotion/compositor-linux-arm64-gnu@4.0.483", "", { "os": "linux", "cpu": "arm64" }, "sha512-1LzfYDY/DQxy3MIc9pCbTn1ObcBDcyI6MzODOwe1bTZl8TZxdUUt1M3hDrQ60AB6iHwruBAnzT9dnogiMIdSew=="], + + "@remotion/compositor-linux-arm64-musl": ["@remotion/compositor-linux-arm64-musl@4.0.483", "", { "os": "linux", "cpu": "arm64" }, "sha512-nG1btxg0HXuLzulIqAg9NnxWyewZNrA0iLe82HdniaJjeWLORreGo4cEEJz1SjbDpQuPEY562XGkTO2DLKK5mA=="], + + "@remotion/compositor-linux-x64-gnu": ["@remotion/compositor-linux-x64-gnu@4.0.483", "", { "os": "linux", "cpu": "x64" }, "sha512-CV4h6r2rNYh4P8utUzP6RM2vW2vq43nA3IvVOwRSuh9LwJh/7rwG53Oco4HanY/sstaNuymGpT57wdXwONU5CQ=="], + + "@remotion/compositor-linux-x64-musl": ["@remotion/compositor-linux-x64-musl@4.0.483", "", { "os": "linux", "cpu": "x64" }, "sha512-moKvavbkoz5nteJZA4K6LMgTTlewhwIbtO7DYARZ3LK3ClGUKnYfFcmaPS15hMun02JPTOMIWbrlaszdR75mxA=="], + + "@remotion/compositor-win32-x64-msvc": ["@remotion/compositor-win32-x64-msvc@4.0.483", "", { "os": "win32", "cpu": "x64" }, "sha512-eDpWe6Vy7ySHugwxlgaeohqdBwR1etxiymXzT13cgbPw2+p6d55z1tJ7VPTXyfu0o+UdyRTauWqD4msoxN0wow=="], + + "@remotion/licensing": ["@remotion/licensing@4.0.483", "", {}, "sha512-GRtjykrxMmB5Cjpq1oVqeYIRXI95vid6afX0LTLfp1shD6MR4lTZRoRuopxrrZp1E4XFGXoY64b6dlIudgTyBQ=="], + + "@remotion/media-parser": ["@remotion/media-parser@4.0.483", "", {}, "sha512-iva9Eof7QQX+3hGxH/N8pGi80wgdGuzOr825Zn7IuEe7IWdtRYWlFpCEghmyfhrwgaWa7RY51wg77ycR3c3nRg=="], + + "@remotion/media-utils": ["@remotion/media-utils@4.0.483", "", { "dependencies": { "mediabunny": "1.47.0", "remotion": "4.0.483" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4T4WQh/U95kCBzgmz/EL/HL8Zeox/AKAL5ufsehrZFgwlcvH1EsKNJH/RWaAtNPRLF+pskEOgFzPYaczHeI8hg=="], + + "@remotion/player": ["@remotion/player@4.0.483", "", { "dependencies": { "remotion": "4.0.483" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-yyIQ9vinUqqS0fQeL52bPCWQIr8qDXCqQ4iys8P7dSZncdu8V29p4W2a0/4eKV8bv5+mjnJQ/U6nl9NxBF1hdA=="], + + "@remotion/renderer": ["@remotion/renderer@4.0.483", "", { "dependencies": { "@remotion/licensing": "4.0.483", "@remotion/streaming": "4.0.483", "execa": "5.1.1", "remotion": "4.0.483", "source-map": "0.8.0-beta.0", "ws": "8.21.0" }, "optionalDependencies": { "@remotion/compositor-darwin-arm64": "4.0.483", "@remotion/compositor-darwin-x64": "4.0.483", "@remotion/compositor-linux-arm64-gnu": "4.0.483", "@remotion/compositor-linux-arm64-musl": "4.0.483", "@remotion/compositor-linux-x64-gnu": "4.0.483", "@remotion/compositor-linux-x64-musl": "4.0.483", "@remotion/compositor-win32-x64-msvc": "4.0.483" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-eSKdQqm8rcl+GNyOhFsBgcPYWMcxTJWHL5xaNrd037piCaL3sdJ57OEO/AbfEvvOO14zwUvlsONKjlkLlEVyKg=="], + + "@remotion/streaming": ["@remotion/streaming@4.0.483", "", {}, "sha512-96rqrk+l5AfriHOqmqxMn8rI6UJfFY7r5UMDZoSKqXWzTOwj+0VWHTRl9ilZQMXhYACaMSA/5yrL9jgQEK8Yuw=="], + + "@remotion/studio": ["@remotion/studio@4.0.483", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.31", "@remotion/canvas-capture": "4.0.483", "@remotion/media-utils": "4.0.483", "@remotion/player": "4.0.483", "@remotion/renderer": "4.0.483", "@remotion/studio-shared": "4.0.483", "@remotion/timeline-utils": "4.0.483", "@remotion/web-renderer": "4.0.483", "@remotion/zod-types": "4.0.483", "mediabunny": "1.47.0", "memfs": "3.4.3", "open": "8.4.2", "remotion": "4.0.483", "semver": "7.5.3", "zod": "4.3.6" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-gNa1Lw8NmHl0jwFb5fk7rzA+WFTJQpGDT/49A38t9jpEwoF+h1mKTgY8gA202apzjBHrEECdFE450npnBOUpUw=="], + + "@remotion/studio-server": ["@remotion/studio-server@4.0.483", "", { "dependencies": { "@babel/parser": "7.24.1", "@babel/types": "7.24.0", "@remotion/bundler": "4.0.483", "@remotion/renderer": "4.0.483", "@remotion/studio-shared": "4.0.483", "memfs": "3.4.3", "open": "8.4.2", "prettier": "3.8.1", "recast": "0.23.11", "remotion": "4.0.483", "semver": "7.5.3" } }, "sha512-2FSLbVN5N8bgtQPX+RQRbis557tJJnVTOZuEBZndfC9NOoPdARlSgEnwVer9tBNczUlc6B3KrPxyPSlS3UjL+Q=="], + + "@remotion/studio-shared": ["@remotion/studio-shared@4.0.483", "", { "dependencies": { "remotion": "4.0.483" } }, "sha512-aXxBYUgsWgphHVq7T7bz+ICMGzfii7pcX1IxS5hbLMLJHqlDtk9g+qcxm4kJ2Fjj/Gb5gERKiNzYym8WZTIM2Q=="], + + "@remotion/timeline-utils": ["@remotion/timeline-utils@4.0.483", "", { "dependencies": { "mediabunny": "1.47.0" } }, "sha512-KTTMdpNA5uRLX+iisAITO+V9cJBk17F8EWvuUnAEVmAFOQTbGIyPI9HNw5pZmL7SlzOJdFjAtksTjipeYGkEug=="], + + "@remotion/web-renderer": ["@remotion/web-renderer@4.0.483", "", { "dependencies": { "@mediabunny/aac-encoder": "1.47.0", "@mediabunny/flac-encoder": "1.47.0", "@mediabunny/mp3-encoder": "1.47.0", "@remotion/licensing": "4.0.483", "mediabunny": "1.47.0", "remotion": "4.0.483" }, "peerDependencies": { "react": ">=18.0.0", "react-dom": ">=18.0.0" } }, "sha512-14iURfVWA/hcF/rJvkid1ZR5nmnVhkTIf071FabCFi6kdViOSVBugSglJ8tUPvWVbWmxlXGDGQD9CSU18IATww=="], + + "@remotion/zod-types": ["@remotion/zod-types@4.0.483", "", { "dependencies": { "remotion": "4.0.483" }, "peerDependencies": { "zod": "4.3.6" } }, "sha512-KIVYIzFpZBDB0wxGGQu5tDBr4XOYRzvrPXjmo6O/FI5Xx7O8hgvJmBs9VDkEwonAOft86sg79hI19F1DTX1p4w=="], + + "@rspack/binding": ["@rspack/binding@1.7.11", "", { "optionalDependencies": { "@rspack/binding-darwin-arm64": "1.7.11", "@rspack/binding-darwin-x64": "1.7.11", "@rspack/binding-linux-arm64-gnu": "1.7.11", "@rspack/binding-linux-arm64-musl": "1.7.11", "@rspack/binding-linux-x64-gnu": "1.7.11", "@rspack/binding-linux-x64-musl": "1.7.11", "@rspack/binding-wasm32-wasi": "1.7.11", "@rspack/binding-win32-arm64-msvc": "1.7.11", "@rspack/binding-win32-ia32-msvc": "1.7.11", "@rspack/binding-win32-x64-msvc": "1.7.11" } }, "sha512-2MGdy2s2HimsDT444Bp5XnALzNRxuBNc7y0JzyuqKbHBywd4x2NeXyhWXXoxufaCFu5PBc9Qq9jyfjW2Aeh06Q=="], + + "@rspack/binding-darwin-arm64": ["@rspack/binding-darwin-arm64@1.7.11", "", { "os": "darwin", "cpu": "arm64" }, "sha512-oduECiZVqbO5zlVw+q7Vy65sJFth99fWPTyucwvLJJtJkPL5n17Uiql2cYP6Ijn0pkqtf1SXgK8WjiKLG5bIig=="], + + "@rspack/binding-darwin-x64": ["@rspack/binding-darwin-x64@1.7.11", "", { "os": "darwin", "cpu": "x64" }, "sha512-a1+TtTE9ap6RalgFi7FGIgkJP6O4Vy6ctv+9WGJy53E4kuqHR0RygzaiVxCI/GMc/vBT9vY23hyrpWb3d1vtXA=="], + + "@rspack/binding-linux-arm64-gnu": ["@rspack/binding-linux-arm64-gnu@1.7.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-P0QrGRPbTWu6RKWfN0bDtbnEps3rXH0MWIMreZABoUrVmNQKtXR6e73J3ub6a+di5s2+K0M2LJ9Bh2/H4UsDUA=="], + + "@rspack/binding-linux-arm64-musl": ["@rspack/binding-linux-arm64-musl@1.7.11", "", { "os": "linux", "cpu": "arm64" }, "sha512-6ky7R43VMjWwmx3Yx7Jl7faLBBMAgMDt+/bN35RgwjiPgsIByz65EwytUVuW9rikB43BGHvA/eqlnjLrUzNBqw=="], + + "@rspack/binding-linux-x64-gnu": ["@rspack/binding-linux-x64-gnu@1.7.11", "", { "os": "linux", "cpu": "x64" }, "sha512-cuOJMfCOvb2Wgsry5enXJ3iT1FGUjdPqtGUBVupQlEG4ntSYsQ2PtF4wIDVasR3wdxC5nQbipOrDiN/u6fYsdQ=="], + + "@rspack/binding-linux-x64-musl": ["@rspack/binding-linux-x64-musl@1.7.11", "", { "os": "linux", "cpu": "x64" }, "sha512-CoK37hva4AmHGh3VCsQXmGr40L36m1/AdnN5LEjUX6kx5rEH7/1nEBN6Ii72pejqDVvk9anEROmPDiPw10tpFg=="], + + "@rspack/binding-wasm32-wasi": ["@rspack/binding-wasm32-wasi@1.7.11", "", { "dependencies": { "@napi-rs/wasm-runtime": "1.0.7" }, "cpu": "none" }, "sha512-OtrmnPUVJMxjNa3eDMfHyPdtlLRmmp/aIm0fQHlAOATbZvlGm12q7rhPW5BXTu1yh+1rQ1/uqvz+SzKEZXuJaQ=="], + + "@rspack/binding-win32-arm64-msvc": ["@rspack/binding-win32-arm64-msvc@1.7.11", "", { "os": "win32", "cpu": "arm64" }, "sha512-lObFW6e5lCWNgTBNwT//yiEDbsxm9QG4BYUojqeXxothuzJ/L6ibXz6+gLMvbOvLGV3nKgkXmx8GvT9WDKR0mA=="], + + "@rspack/binding-win32-ia32-msvc": ["@rspack/binding-win32-ia32-msvc@1.7.11", "", { "os": "win32", "cpu": "ia32" }, "sha512-0pYGnZd8PPqNR68zQ8skamqNAXEA1sUfXuAdYcknIIRq2wsbiwFzIc0Pov1cIfHYab37G7sSIPBiOUdOWF5Ivw=="], + + "@rspack/binding-win32-x64-msvc": ["@rspack/binding-win32-x64-msvc@1.7.11", "", { "os": "win32", "cpu": "x64" }, "sha512-EeQXayoQk/uBkI3pdoXfQBXNIUrADq56L3s/DFyM2pJeUDrWmhfIw2UFIGkYPTMSCo8F2JcdcGM32FGJrSnU0Q=="], + + "@rspack/core": ["@rspack/core@1.7.11", "", { "dependencies": { "@module-federation/runtime-tools": "0.22.0", "@rspack/binding": "1.7.11", "@rspack/lite-tapable": "1.1.0" }, "peerDependencies": { "@swc/helpers": ">=0.5.1" }, "optionalPeers": ["@swc/helpers"] }, "sha512-rsD9b+Khmot5DwCMiB3cqTQo53ioPG3M/A7BySu8+0+RS7GCxKm+Z+mtsjtG/vsu4Tn2tcqCdZtA3pgLoJB+ew=="], + + "@rspack/lite-tapable": ["@rspack/lite-tapable@1.1.0", "", {}, "sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw=="], + + "@rspack/plugin-react-refresh": ["@rspack/plugin-react-refresh@1.6.1", "", { "dependencies": { "error-stack-parser": "^2.1.4", "html-entities": "^2.6.0" }, "peerDependencies": { "react-refresh": ">=0.10.0 <1.0.0", "webpack-hot-middleware": "2.x" }, "optionalPeers": ["webpack-hot-middleware"] }, "sha512-eqqW5645VG3CzGzFgNg5HqNdHVXY+567PGjtDhhrM8t67caxmsSzRmT5qfoEIfBcGgFkH9vEg7kzXwmCYQdQDw=="], + + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], + + "@types/dom-mediacapture-transform": ["@types/dom-mediacapture-transform@0.1.11", "", { "dependencies": { "@types/dom-webcodecs": "*" } }, "sha512-Y2p+nGf1bF2XMttBnsVPHUWzRRZzqUoJAKmiP10b5umnO6DDrWI0BrGDJy1pOHoOULVmGSfFNkQrAlC5dcj6nQ=="], + + "@types/dom-webcodecs": ["@types/dom-webcodecs@0.1.13", "", {}, "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ=="], + + "@types/eslint": ["@types/eslint@9.6.1", "", { "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag=="], + + "@types/eslint-scope": ["@types/eslint-scope@3.7.7", "", { "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg=="], + + "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], + + "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], + + "@types/node": ["@types/node@26.0.1", "", { "dependencies": { "undici-types": "~8.3.0" } }, "sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw=="], + + "@types/react": ["@types/react@19.2.17", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw=="], + + "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], + + "@webassemblyjs/ast": ["@webassemblyjs/ast@1.14.1", "", { "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ=="], + + "@webassemblyjs/floating-point-hex-parser": ["@webassemblyjs/floating-point-hex-parser@1.13.2", "", {}, "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA=="], + + "@webassemblyjs/helper-api-error": ["@webassemblyjs/helper-api-error@1.13.2", "", {}, "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ=="], + + "@webassemblyjs/helper-buffer": ["@webassemblyjs/helper-buffer@1.14.1", "", {}, "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA=="], + + "@webassemblyjs/helper-numbers": ["@webassemblyjs/helper-numbers@1.13.2", "", { "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.13.2", "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA=="], + + "@webassemblyjs/helper-wasm-bytecode": ["@webassemblyjs/helper-wasm-bytecode@1.13.2", "", {}, "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA=="], + + "@webassemblyjs/helper-wasm-section": ["@webassemblyjs/helper-wasm-section@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/wasm-gen": "1.14.1" } }, "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw=="], + + "@webassemblyjs/ieee754": ["@webassemblyjs/ieee754@1.13.2", "", { "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw=="], + + "@webassemblyjs/leb128": ["@webassemblyjs/leb128@1.13.2", "", { "dependencies": { "@xtuc/long": "4.2.2" } }, "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw=="], + + "@webassemblyjs/utf8": ["@webassemblyjs/utf8@1.13.2", "", {}, "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ=="], + + "@webassemblyjs/wasm-edit": ["@webassemblyjs/wasm-edit@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/helper-wasm-section": "1.14.1", "@webassemblyjs/wasm-gen": "1.14.1", "@webassemblyjs/wasm-opt": "1.14.1", "@webassemblyjs/wasm-parser": "1.14.1", "@webassemblyjs/wast-printer": "1.14.1" } }, "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ=="], + + "@webassemblyjs/wasm-gen": ["@webassemblyjs/wasm-gen@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/ieee754": "1.13.2", "@webassemblyjs/leb128": "1.13.2", "@webassemblyjs/utf8": "1.13.2" } }, "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg=="], + + "@webassemblyjs/wasm-opt": ["@webassemblyjs/wasm-opt@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-buffer": "1.14.1", "@webassemblyjs/wasm-gen": "1.14.1", "@webassemblyjs/wasm-parser": "1.14.1" } }, "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw=="], + + "@webassemblyjs/wasm-parser": ["@webassemblyjs/wasm-parser@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@webassemblyjs/helper-api-error": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2", "@webassemblyjs/ieee754": "1.13.2", "@webassemblyjs/leb128": "1.13.2", "@webassemblyjs/utf8": "1.13.2" } }, "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ=="], + + "@webassemblyjs/wast-printer": ["@webassemblyjs/wast-printer@1.14.1", "", { "dependencies": { "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw=="], + + "@xtuc/ieee754": ["@xtuc/ieee754@1.2.0", "", {}, "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA=="], + + "@xtuc/long": ["@xtuc/long@4.2.2", "", {}, "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ=="], + + "acorn": ["acorn@8.17.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg=="], + + "acorn-import-phases": ["acorn-import-phases@1.0.4", "", { "peerDependencies": { "acorn": "^8.14.0" } }, "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ=="], + + "ajv": ["ajv@8.20.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], + + "ajv-formats": ["ajv-formats@2.1.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA=="], + + "ajv-keywords": ["ajv-keywords@5.1.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3" }, "peerDependencies": { "ajv": "^8.8.2" } }, "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw=="], + + "ast-types": ["ast-types@0.16.1", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg=="], + + "baseline-browser-mapping": ["baseline-browser-mapping@2.10.40", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-BSSLZ9/Cjjv7Gtj5B68ZzXcXUg8iOf3fme+FCuh8rC/Go+Kmh8cox7M3A8dolou16s64QjLPOSdngh7GxXvkSw=="], + + "browserslist": ["browserslist@4.28.4", "", { "dependencies": { "baseline-browser-mapping": "^2.10.38", "caniuse-lite": "^1.0.30001799", "electron-to-chromium": "^1.5.376", "node-releases": "^2.0.48", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-MTc8i/x9jBQd1iMw2CFGS+rwMa07eYjLR0CCTLDACl9xhxy+nIs3KeML/biicXtk9JrZ6dnnTatmc7ErPXIxqw=="], + + "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + + "caniuse-lite": ["caniuse-lite@1.0.30001799", "", {}, "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw=="], + + "chrome-trace-event": ["chrome-trace-event@1.0.4", "", {}, "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ=="], + + "commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], + + "css-loader": ["css-loader@7.1.4", "", { "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.40", "postcss-modules-extract-imports": "^3.1.0", "postcss-modules-local-by-default": "^4.0.5", "postcss-modules-scope": "^3.2.0", "postcss-modules-values": "^4.0.0", "postcss-value-parser": "^4.2.0", "semver": "^7.6.3" }, "peerDependencies": { "@rspack/core": "0.x || ^1.0.0 || ^2.0.0-0", "webpack": "^5.27.0" }, "optionalPeers": ["@rspack/core", "webpack"] }, "sha512-vv3J9tlOl04WjiMvHQI/9tmIrCxVrj6PFbHemBB1iihpeRbi/I4h033eoFIhwxBBqLhI0KYFS7yvynBFhIZfTw=="], + + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], + + "define-lazy-prop": ["define-lazy-prop@2.0.0", "", {}, "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="], + + "dotenv": ["dotenv@17.3.1", "", {}, "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA=="], + + "electron-to-chromium": ["electron-to-chromium@1.5.379", "", {}, "sha512-v/qV5aV5EUA2pGilzUCq5/eyOloZAqDZBu9UMBIzgPpLlprjSR6zswsWBTv0KpqxLGUAZEwhO95ZCt7srymNVA=="], + + "enhanced-resolve": ["enhanced-resolve@5.24.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-7DdUaTjmNwMcH2gLr1qycesKII3BK4RLy/mdAb7x10Lq7bR4aNKHt1BR1ZALSv0rPM/hF5wYF0PhGop/rJm8vw=="], + + "error-stack-parser": ["error-stack-parser@2.1.4", "", { "dependencies": { "stackframe": "^1.3.4" } }, "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ=="], + + "es-module-lexer": ["es-module-lexer@2.1.0", "", {}, "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ=="], + + "esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], + + "eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="], + + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], + + "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], + + "estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], + + "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], + + "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=="], + + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], + + "fast-uri": ["fast-uri@3.1.2", "", {}, "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ=="], + + "fs-monkey": ["fs-monkey@1.0.3", "", {}, "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q=="], + + "get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], + + "glob-to-regexp": ["glob-to-regexp@0.4.1", "", {}, "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="], + + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], + + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], + + "html-entities": ["html-entities@2.6.0", "", {}, "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ=="], + + "human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], + + "icss-utils": ["icss-utils@5.1.0", "", { "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA=="], + + "is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], + + "is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], + + "is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], + + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + + "jest-worker": ["jest-worker@27.5.1", "", { "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" } }, "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg=="], + + "json-parse-even-better-errors": ["json-parse-even-better-errors@2.3.1", "", {}, "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="], + + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + + "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], + + "loader-runner": ["loader-runner@4.3.2", "", {}, "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w=="], + + "lodash.sortby": ["lodash.sortby@4.7.0", "", {}, "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="], + + "lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], + + "mediabunny": ["mediabunny@1.47.0", "", { "dependencies": { "@types/dom-mediacapture-transform": "^0.1.11", "@types/dom-webcodecs": "0.1.13" } }, "sha512-XQMZAcaKPkJ7hQ/Q2fvBdl3ZazQl2WVxDysUbJWh4PuAnLoerdsQBdPTDWdUdK6hh26LQ8Ue94MLLnmpWvlUYg=="], + + "memfs": ["memfs@3.4.3", "", { "dependencies": { "fs-monkey": "1.0.3" } }, "sha512-eivjfi7Ahr6eQTn44nvTnR60e4a1Fs1Via2kCR5lHo/kyNoiMWaXCNJ/GpSd0ilXas2JSOl9B5FTIhflXu0hlg=="], + + "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], + + "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], + + "minimist": ["minimist@1.2.6", "", {}, "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="], + + "nanoid": ["nanoid@3.3.15", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA=="], + + "neo-async": ["neo-async@2.6.2", "", {}, "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw=="], + + "node-releases": ["node-releases@2.0.50", "", {}, "sha512-J6l92tKHX6w8Jy5nO1Vuc01NoIiRGi/d6qBKVxh+IQ8Cr3b6HbVNfKiF8ZpFKufTwpwxMmce2W3iQZ861ZRyTg=="], + + "npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], + + "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], + + "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=="], + + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], + + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "postcss": ["postcss@8.5.15", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A=="], + + "postcss-modules-extract-imports": ["postcss-modules-extract-imports@3.1.0", "", { "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q=="], + + "postcss-modules-local-by-default": ["postcss-modules-local-by-default@4.2.0", "", { "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw=="], + + "postcss-modules-scope": ["postcss-modules-scope@3.2.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA=="], + + "postcss-modules-values": ["postcss-modules-values@4.0.0", "", { "dependencies": { "icss-utils": "^5.0.0" }, "peerDependencies": { "postcss": "^8.1.0" } }, "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ=="], + + "postcss-selector-parser": ["postcss-selector-parser@7.1.4", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg=="], + + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], + + "prettier": ["prettier@3.8.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg=="], + + "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], + + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], + + "react": ["react@19.2.7", "", {}, "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ=="], + + "react-dom": ["react-dom@19.2.7", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.7" } }, "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ=="], + + "react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], + + "recast": ["recast@0.23.11", "", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA=="], + + "remotion": ["remotion@4.0.483", "", { "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-lf4xq4Twn75TQeTavFLrTE4zdck7EKBSx07ZrPv4om40Sist+3G0kq7NNzSjMeJ6G2Wx6vI+0oICD/vv4sGWtg=="], + + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + + "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], + + "schema-utils": ["schema-utils@4.3.3", "", { "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", "ajv-formats": "^2.1.1", "ajv-keywords": "^5.1.0" } }, "sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA=="], + + "semver": ["semver@7.5.3", "", { "dependencies": { "lru-cache": "^6.0.0" }, "bin": { "semver": "bin/semver.js" } }, "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ=="], + + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], + + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + + "signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], + + "source-map": ["source-map@0.8.0-beta.0", "", { "dependencies": { "whatwg-url": "^7.0.0" } }, "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA=="], + + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + + "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], + + "stackframe": ["stackframe@1.3.4", "", {}, "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw=="], + + "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], + + "style-loader": ["style-loader@4.0.0", "", { "peerDependencies": { "webpack": "^5.27.0" } }, "sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA=="], + + "supports-color": ["supports-color@8.1.1", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q=="], + + "tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="], + + "terser": ["terser@5.48.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q=="], + + "terser-webpack-plugin": ["terser-webpack-plugin@5.6.1", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", "terser": "^5.31.1" }, "peerDependencies": { "webpack": "^5.1.0" } }, "sha512-201R5j+sJpK8nFWwKVyNfZot8FaJbLZDq5evriVzbV1wDtSXDjRUDRfJzHpAaxFDMEhsZL1QkeqM61wgsS3KaQ=="], + + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + + "to-fast-properties": ["to-fast-properties@2.0.0", "", {}, "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="], + + "tr46": ["tr46@1.0.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + + "undici-types": ["undici-types@8.3.0", "", {}, "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ=="], + + "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "watchpack": ["watchpack@2.5.2", "", { "dependencies": { "graceful-fs": "^4.1.2" } }, "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg=="], + + "webidl-conversions": ["webidl-conversions@4.0.2", "", {}, "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="], + + "webpack": ["webpack@5.105.0", "", { "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", "@types/json-schema": "^7.0.15", "@webassemblyjs/ast": "^1.14.1", "@webassemblyjs/wasm-edit": "^1.14.1", "@webassemblyjs/wasm-parser": "^1.14.1", "acorn": "^8.15.0", "acorn-import-phases": "^1.0.3", "browserslist": "^4.28.1", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.19.0", "es-module-lexer": "^2.0.0", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", "loader-runner": "^4.3.1", "mime-types": "^2.1.27", "neo-async": "^2.6.2", "schema-utils": "^4.3.3", "tapable": "^2.3.0", "terser-webpack-plugin": "^5.3.16", "watchpack": "^2.5.1", "webpack-sources": "^3.3.3" }, "bin": { "webpack": "bin/webpack.js" } }, "sha512-gX/dMkRQc7QOMzgTe6KsYFM7DxeIONQSui1s0n/0xht36HvrgbxtM1xBlgx596NbpHuQU8P7QpKwrZYwUX48nw=="], + + "webpack-sources": ["webpack-sources@3.5.0", "", {}, "sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ=="], + + "whatwg-url": ["whatwg-url@7.1.0", "", { "dependencies": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } }, "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg=="], + + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + + "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], + + "yallist": ["yallist@4.0.0", "", {}, "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="], + + "zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], + + "css-loader/semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], + + "esrecurse/estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], + + "recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + } +} diff --git a/artifacts/glm52-rise-video/out/flash-share.mp4 b/artifacts/glm52-rise-video/out/flash-share.mp4 new file mode 100644 index 000000000000..3e182b4c1126 Binary files /dev/null and b/artifacts/glm52-rise-video/out/flash-share.mp4 differ diff --git a/artifacts/glm52-rise-video/out/glm-52-broke-out.mp4 b/artifacts/glm52-rise-video/out/glm-52-broke-out.mp4 new file mode 100644 index 000000000000..eb456d034540 Binary files /dev/null and b/artifacts/glm52-rise-video/out/glm-52-broke-out.mp4 differ diff --git a/artifacts/glm52-rise-video/out/june-totals.png b/artifacts/glm52-rise-video/out/june-totals.png new file mode 100644 index 000000000000..678376dbed69 Binary files /dev/null and b/artifacts/glm52-rise-video/out/june-totals.png differ diff --git a/artifacts/glm52-rise-video/out/minimax-climb.mp4 b/artifacts/glm52-rise-video/out/minimax-climb.mp4 new file mode 100644 index 000000000000..8ca6b678ae8c Binary files /dev/null and b/artifacts/glm52-rise-video/out/minimax-climb.mp4 differ diff --git a/artifacts/glm52-rise-video/out/novel-1984.mp4 b/artifacts/glm52-rise-video/out/novel-1984.mp4 new file mode 100644 index 000000000000..b94a8992578e Binary files /dev/null and b/artifacts/glm52-rise-video/out/novel-1984.mp4 differ diff --git a/artifacts/glm52-rise-video/out/nz-sheep.mp4 b/artifacts/glm52-rise-video/out/nz-sheep.mp4 new file mode 100644 index 000000000000..64d382da2659 Binary files /dev/null and b/artifacts/glm52-rise-video/out/nz-sheep.mp4 differ diff --git a/artifacts/glm52-rise-video/package.json b/artifacts/glm52-rise-video/package.json new file mode 100644 index 000000000000..fb08574eb222 --- /dev/null +++ b/artifacts/glm52-rise-video/package.json @@ -0,0 +1,24 @@ +{ + "name": "glm52-rise-video", + "private": true, + "type": "module", + "scripts": { + "render": "remotion render src/index.tsx GLM52Rise out/glm-52-broke-out.mp4 --codec h264 --pixel-format yuv420p", + "render:sheep": "remotion render src/index.tsx NZSheep out/nz-sheep.mp4 --codec h264 --pixel-format yuv420p", + "render:novel": "remotion render src/index.tsx NovelTokens out/novel-1984.mp4 --codec h264 --pixel-format yuv420p", + "render:flash": "remotion render src/index.tsx FlashShare out/flash-share.mp4 --codec h264 --pixel-format yuv420p", + "render:minimax": "remotion render src/index.tsx MiniMaxClimb out/minimax-climb.mp4 --codec h264 --pixel-format yuv420p", + "still:june": "remotion still src/index.tsx JuneTotals out/june-totals.png --frame=0" + }, + "dependencies": { + "@remotion/cli": "^4.0.384", + "react": "^19.2.3", + "react-dom": "^19.2.3", + "remotion": "^4.0.384" + }, + "devDependencies": { + "@types/react": "^19.2.8", + "@types/react-dom": "^19.2.3", + "typescript": "^5.8.2" + } +} diff --git a/artifacts/glm52-rise-video/public/book.jpg b/artifacts/glm52-rise-video/public/book.jpg new file mode 100644 index 000000000000..662ca244cdaf Binary files /dev/null and b/artifacts/glm52-rise-video/public/book.jpg differ diff --git a/artifacts/glm52-rise-video/public/sheep.jpg b/artifacts/glm52-rise-video/public/sheep.jpg new file mode 100644 index 000000000000..d9ed232a89ae Binary files /dev/null and b/artifacts/glm52-rise-video/public/sheep.jpg differ diff --git a/artifacts/glm52-rise-video/src/data.ts b/artifacts/glm52-rise-video/src/data.ts new file mode 100644 index 000000000000..d9fab2a63114 --- /dev/null +++ b/artifacts/glm52-rise-video/src/data.ts @@ -0,0 +1,156 @@ +// Verified against the production opencode-stats PlanetScale DB. +// Scope: tier='Go' (OpenCode Go), dataset='zen', client='all', source='all', grain='day'. +// metric = total_tokens. Daily token volume per model; GLM-5.2 (zhipu) launched Jun 17. +// Segments per day (tokens): glm-5.2, deepseek-v4-flash, deepseek-v4-pro, minimax-m3, all others. + +export type Day = { + date: string + total: number + glm: number + dsf: number + dsp: number + mm: number + others: number +} + +export const days: Day[] = [ + { + date: "Jun 12", + total: 2_283_799_449_383, + glm: 0, + dsf: 1_176_701_653_509, + dsp: 569_527_034_307, + mm: 159_016_250_684, + others: 378_554_510_883, + }, + { + date: "Jun 13", + total: 2_008_462_388_420, + glm: 0, + dsf: 995_338_131_997, + dsp: 445_817_536_548, + mm: 211_743_241_967, + others: 355_563_477_908, + }, + { + date: "Jun 14", + total: 2_007_785_405_251, + glm: 0, + dsf: 983_954_176_228, + dsp: 428_151_999_341, + mm: 262_476_527_930, + others: 333_202_701_752, + }, + { + date: "Jun 15", + total: 2_694_736_103_062, + glm: 0, + dsf: 1_255_893_953_859, + dsp: 632_223_338_376, + mm: 352_507_442_991, + others: 454_111_367_836, + }, + { + date: "Jun 16", + total: 2_838_153_758_908, + glm: 0, + dsf: 1_336_625_283_800, + dsp: 676_480_415_730, + mm: 305_268_829_013, + others: 519_779_230_365, + }, + { + date: "Jun 17", + total: 2_778_964_711_109, + glm: 70_095_977_043, + dsf: 1_339_831_523_555, + dsp: 660_414_395_220, + mm: 251_302_096_157, + others: 457_320_719_134, + }, + { + date: "Jun 18", + total: 2_806_992_430_656, + glm: 201_130_231_172, + dsf: 1_295_599_996_869, + dsp: 595_665_008_776, + mm: 322_205_104_324, + others: 392_392_089_515, + }, + { + date: "Jun 19", + total: 2_419_611_630_232, + glm: 199_086_413_910, + dsf: 1_115_750_468_802, + dsp: 475_965_869_304, + mm: 303_586_698_735, + others: 325_222_179_481, + }, + { + date: "Jun 20", + total: 2_188_278_916_865, + glm: 193_931_516_396, + dsf: 1_050_194_681_012, + dsp: 395_303_435_278, + mm: 281_998_000_337, + others: 266_851_283_842, + }, + { + date: "Jun 21", + total: 2_042_309_961_344, + glm: 181_894_043_118, + dsf: 985_164_570_580, + dsp: 368_194_079_542, + mm: 259_812_551_324, + others: 247_244_716_780, + }, + { + date: "Jun 22", + total: 2_893_934_325_663, + glm: 301_759_048_475, + dsf: 1_298_124_282_989, + dsp: 581_012_596_194, + mm: 371_581_117_839, + others: 341_457_280_166, + }, + { + date: "Jun 23", + total: 3_109_009_321_480, + glm: 282_277_235_158, + dsf: 1_423_571_678_821, + dsp: 627_374_654_587, + mm: 429_416_300_508, + others: 346_369_452_406, + }, + { + date: "Jun 24", + total: 2_939_149_971_595, + glm: 256_497_442_533, + dsf: 1_373_583_023_234, + dsp: 601_270_997_775, + mm: 391_586_493_231, + others: 316_212_014_822, + }, + { + date: "Jun 25", + total: 3_029_641_552_948, + glm: 256_279_657_734, + dsf: 1_481_084_002_776, + dsp: 602_077_167_287, + mm: 375_985_302_874, + others: 314_215_422_277, + }, +] + +export const launchIndex = 5 // Jun 17, first day of GLM-5.2 usage +// GLM-5.2 weekly token volume, Jun 19-25 (sum of glm): 1,671,725,357,324 = 1.67T +export const glmWeekTokensT = 1.672 + +// stacked segments, bottom -> top. GLM-5.2 is the hero (blue); the rest are the field it cut into. +export const segments = [ + { key: "glm", label: "GLM-5.2", color: "#3b5cf6", hero: true }, + { key: "dsf", label: "deepseek-v4-flash", color: "#9ca3ad" }, + { key: "dsp", label: "deepseek-v4-pro", color: "#b3b9c1" }, + { key: "mm", label: "minimax-m3", color: "#c8cdd3" }, + { key: "others", label: "other models", color: "#dde0e4" }, +] as const diff --git a/artifacts/glm52-rise-video/src/flash.tsx b/artifacts/glm52-rise-video/src/flash.tsx new file mode 100644 index 000000000000..5d7aaef9bf5e --- /dev/null +++ b/artifacts/glm52-rise-video/src/flash.tsx @@ -0,0 +1,185 @@ +import React from "react" +import { AbsoluteFill, Easing, interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion" + +// stats.opencode.ai design tokens (light theme) +const c = { + bg: "#ffffff", + ink: "#161616", + muted: "#5c5c5c", + faint: "#808080", + line: "#e6e6e6", + dot: "#e4e4e4", + gray: "#aab0b8", + accent: "#3b5cf6", + accentHi: "#5b78ff", +} +const MONO = '"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace' + +const DOT_MASK = + "url(\"data:image/svg+xml,%3Csvg viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0H2V2H0V0Z' fill='black'/%3E%3C/svg%3E\")" + +// verified: OpenCode Go, week of Jun 22-28, 2026 (2026-W26). share = % of 19.64T total Go tokens. +const bars = [ + { label: "deepseek-v4-flash", share: 48.3, hero: true }, + { label: "deepseek-v4-pro", share: 19.4 }, + { label: "minimax-m3", share: 13.0 }, + { label: "glm-5.2", share: 8.3 }, + { label: "mimo-v2.5", share: 4.3 }, + { label: "kimi-k2.7-code", share: 2.6 }, + { label: "other models", share: 4.1 }, +] + +function DataWordmark({ height = 30 }: { height?: number }) { + return ( + + + + + + + + + ) +} + +export function FlashShare() { + const frame = useCurrentFrame() + const { fps } = useVideoConfig() + + const grow = (i: number) => + Math.min( + 1, + Math.max(0, spring({ frame: frame - 18 - i * 7, fps, config: { damping: 18, stiffness: 120, mass: 0.6 } })), + ) + + return ( + +
+ {/* header */} +
+ +
JUN 22–28, 2026
+
+ + {/* headline (static) */} +
+
+ OPENCODE GO · SHARE OF TOKENS +
+
+
DeepSeek V4 Flash
+
+ 48% +
+
+
+ + {/* bar chart */} +
+ {bars.map((b, i) => { + const g = grow(i) + const pct = b.share * g + return ( +
+
+ {b.label} +
+
+ {/* dotted 100% track — height is a multiple of the 12px tile, anchored bottom, so dots never clip */} +
+ {/* fill */} +
+
+
+ {Math.round(pct)}% +
+
+ ) + })} +
+ + {/* footer */} +
+
+ + DeepSeek V4 Flash · 9.48T tokens · 83.6M requests +
+
opencode.ai/data
+
+
+ + ) +} diff --git a/artifacts/glm52-rise-video/src/index.tsx b/artifacts/glm52-rise-video/src/index.tsx new file mode 100644 index 000000000000..3265151ac542 --- /dev/null +++ b/artifacts/glm52-rise-video/src/index.tsx @@ -0,0 +1,36 @@ +import { Composition, registerRoot } from "remotion" +import { GLM52Rise } from "./video" +import { NZSheep } from "./sheep" +import { NovelTokens } from "./novel" +import { FlashShare } from "./flash" +import { MiniMaxClimb } from "./minimax" +import { JuneTotals } from "./june" + +function Root() { + return ( + <> + + + + + + + + ) +} + +registerRoot(Root) diff --git a/artifacts/glm52-rise-video/src/june.tsx b/artifacts/glm52-rise-video/src/june.tsx new file mode 100644 index 000000000000..aa3f9de9bef4 --- /dev/null +++ b/artifacts/glm52-rise-video/src/june.tsx @@ -0,0 +1,144 @@ +import React from "react" +import { AbsoluteFill } from "remotion" + +const c = { + bg: "#ffffff", + ink: "#161616", + muted: "#5c5c5c", + faint: "#808080", + line: "#e6e6e6", + dot: "#dcdcdc", + accent: "#3b5cf6", +} +const MONO = '"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace' + +const DOT_MASK = + "url(\"data:image/svg+xml,%3Csvg viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0H2V2H0V0Z' fill='black'/%3E%3C/svg%3E\")" + +// verified: OpenCode Go (tier=Go, dataset=zen), June 1-30, 2026. +// 72.78T tokens · 651.4M requests · 11.42M sessions -> rounded headline figures. + +function DataWordmark({ height = 30 }: { height?: number }) { + return ( + + + + + + + + + ) +} + +function DotBand() { + return ( +
+ ) +} + +function Metric({ value, label }: { value: string; label: string }) { + return ( +
+
+ {value} +
+
{label}
+
+ ) +} + +export function JuneTotals() { + return ( + +
+ {/* header */} +
+ +
MONTHLY RECAP
+
+ + + {/* hero */} +
+
OPENCODE GO · JUNE 2026
+
+
+ 73T +
+
tokens processed
+
+ + {/* supporting metrics */} +
+ + +
+
+ + {/* footer */} + +
+
opencode.ai/data
+
+
+
+ ) +} diff --git a/artifacts/glm52-rise-video/src/minimax.tsx b/artifacts/glm52-rise-video/src/minimax.tsx new file mode 100644 index 000000000000..44cf09a1e75a --- /dev/null +++ b/artifacts/glm52-rise-video/src/minimax.tsx @@ -0,0 +1,201 @@ +import React from "react" +import { AbsoluteFill, interpolate, spring, useCurrentFrame, useVideoConfig } from "remotion" + +const c = { + bg: "#ffffff", + ink: "#161616", + muted: "#5c5c5c", + faint: "#808080", + line: "#e6e6e6", + dot: "#e4e4e4", + accent: "#3b5cf6", + accentHi: "#5b78ff", + accentDim: "#aebcf3", +} +const MONO = '"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace' + +const DOT_MASK = + "url(\"data:image/svg+xml,%3Csvg viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0H2V2H0V0Z' fill='black'/%3E%3C/svg%3E\")" + +// verified: minimax-m3, OpenCode Go (tier=Go, dataset=zen), weekly total_tokens. +// W26 2.559T is +23.2% / +482.3B vs W25 2.077T. +const weeks = [ + { label: "May 25", t: 0.008 }, + { label: "Jun 1", t: 0.429 }, + { label: "Jun 8", t: 1.192 }, + { label: "Jun 15", t: 2.077 }, + { label: "Jun 22", t: 2.559, latest: true }, +] +const AXIS_MAX = 3.0 + +function DataWordmark({ height = 30 }: { height?: number }) { + return ( + + + + + + + + + ) +} + +const CHART_H = 420 // multiple of 12 so the dotted tracks never clip + +export function MiniMaxClimb() { + const frame = useCurrentFrame() + const { fps } = useVideoConfig() + + const grow = (i: number) => + Math.min( + 1, + Math.max(0, spring({ frame: frame - 22 - i * 9, fps, config: { damping: 18, stiffness: 110, mass: 0.6 } })), + ) + + return ( + +
+ {/* header */} +
+ +
JUN 22–28, 2026
+
+ + {/* headline (static) */} +
+
+ OPENCODE GO · WEEKLY TOKENS +
+
+
MiniMax M3
+
+
+ +23.2% +
+
+ WEEK OVER WEEK +
+
+
+
+ + {/* column chart */} +
+
+ {weeks.map((w, i) => { + const g = grow(i) + const h = Math.round((w.t / AXIS_MAX) * CHART_H * g) + return ( +
+ {/* value + bar */} +
+ {/* dotted track */} +
+ {/* fill */} +
+ {/* value label */} +
+ {w.t.toFixed(2)}T +
+
+ {/* week label */} +
+ {w.label} +
+
+ ) + })} +
+
+ + {/* footer */} +
+
+ + 2.56T tokens last week · +482.3B added +
+
opencode.ai/data
+
+
+ + ) +} diff --git a/artifacts/glm52-rise-video/src/novel.tsx b/artifacts/glm52-rise-video/src/novel.tsx new file mode 100644 index 000000000000..9d649de4bbbb --- /dev/null +++ b/artifacts/glm52-rise-video/src/novel.tsx @@ -0,0 +1,135 @@ +import React from "react" +import { AbsoluteFill, Easing, Img, interpolate, staticFile, useCurrentFrame } from "remotion" + +const c = { + white: "#ffffff", + dim: "rgba(255,255,255,0.74)", +} +const MONO = '"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace' + +// verified: OpenCode Go, week of Jun 22-28, 2026 (2026-W26) +// 19,642,742,937,105 tokens / 173,651,197 requests = 113,116 tokens/request +const AVG = 113116 +const K = Math.round(AVG / 1000) // 113 + +const nf = new Intl.NumberFormat("en-US") + +function DataWordmark({ height = 30 }: { height?: number }) { + return ( + + + + + + + + + ) +} + +export function NovelTokens() { + const frame = useCurrentFrame() + + const k = Math.round( + K * + interpolate(frame, [18, 92], [0, 1], { + extrapolateLeft: "clamp", + extrapolateRight: "clamp", + easing: Easing.out(Easing.cubic), + }), + ) + + const zoom = interpolate(frame, [0, 150], [1.06, 1.12], { + extrapolateRight: "clamp", + easing: Easing.inOut(Easing.quad), + }) + + return ( + + + + {/* legibility scrims */} +
+ +
+ {/* header */} +
+ +
JUN 22–28, 2026
+
+ + {/* bottom block */} +
+
+ OPENCODE GO · LAST WEEK +
+
+ {k}K +
+
tokens per request
+ +
+
{nf.format(AVG)} tokens / request · last week
+
opencode.ai/data
+
+
+
+ + ) +} diff --git a/artifacts/glm52-rise-video/src/sheep.tsx b/artifacts/glm52-rise-video/src/sheep.tsx new file mode 100644 index 000000000000..53abb39ee567 --- /dev/null +++ b/artifacts/glm52-rise-video/src/sheep.tsx @@ -0,0 +1,139 @@ +import React from "react" +import { AbsoluteFill, Easing, Img, interpolate, staticFile, useCurrentFrame } from "remotion" + +const c = { + white: "#ffffff", + dim: "rgba(255,255,255,0.72)", + faint: "rgba(255,255,255,0.55)", +} +const MONO = '"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace' + +// verified: NZ OpenCode Go, week of Jun 22-28, 2026 (2026-W26) +const TOKENS = 40_915_594_381 // 40.9B +const SHEEP = 23_600_000 // 23.6M +const PER_SHEEP = Math.round(TOKENS / SHEEP) // 1,734 +const nf = new Intl.NumberFormat("en-US") + +// the correct opencode "DATA" wordmark (white, over photo) +function DataWordmark({ height = 30 }: { height?: number }) { + return ( + + + + + + + + + ) +} + +export function NZSheep() { + const frame = useCurrentFrame() + + const count = Math.round( + PER_SHEEP * + interpolate(frame, [18, 90], [0, 1], { + extrapolateLeft: "clamp", + extrapolateRight: "clamp", + easing: Easing.out(Easing.cubic), + }), + ) + + // slow Ken Burns push-in (scale up only — never reveals an edge) + const zoom = interpolate(frame, [0, 150], [1.06, 1.12], { + extrapolateRight: "clamp", + easing: Easing.inOut(Easing.quad), + }) + + return ( + + {/* the sheep, staring */} + + + {/* legibility scrims */} +
+ + {/* content */} +
+ {/* header */} +
+ +
JUN 22–28, 2026
+
+ + {/* bottom block */} +
+
+ OPENCODE GO · NEW ZEALAND +
+
+ {nf.format(count)} +
+
tokens per sheep
+ +
+
40.9B tokens ÷ 23.6M sheep · last week
+
opencode.ai/data
+
+
+
+ + ) +} diff --git a/artifacts/glm52-rise-video/src/video.tsx b/artifacts/glm52-rise-video/src/video.tsx new file mode 100644 index 000000000000..41466a7e6c39 --- /dev/null +++ b/artifacts/glm52-rise-video/src/video.tsx @@ -0,0 +1,254 @@ +import React from "react" +import { AbsoluteFill, Easing, interpolate, useCurrentFrame, useVideoConfig } from "remotion" +import { days, launchIndex, glmWeekTokensT, segments } from "./data" + +// stats.opencode.ai design tokens (light theme) +const c = { + bg: "#ffffff", + ink: "#161616", + muted: "#5c5c5c", + faint: "#808080", + line: "#e6e6e6", + dot: "#ededed", + accent: "#3b5cf6", + accentHi: "#5b78ff", +} + +const MONO = '"IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace' +const W = 1080 + +const DOT_MASK = + "url(\"data:image/svg+xml,%3Csvg viewBox='0 0 6 6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 0H2V2H0V0Z' fill='black'/%3E%3C/svg%3E\")" + +const field = segments.filter((s) => !s.hero) +const glmColor = segments.find((s) => s.hero)!.color + +const clamp = (v: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, v)) + +// the correct opencode "DATA" wordmark (from stats.opencode.ai header) +function DataWordmark({ height = 30, color = c.ink }: { height?: number; color?: string }) { + return ( + + + + + + + + + ) +} + +export function GLM52Rise() { + const frame = useCurrentFrame() + const { fps } = useVideoConfig() + + // ---------- virtual camera ---------- + // open zoomed-in on the field, pan right while the blue fills, then pull back to reveal. + const K = [0, 32, 150, 206, 240] + const ease = Easing.inOut(Easing.cubic) + const opt = { extrapolateLeft: "clamp" as const, extrapolateRight: "clamp" as const, easing: ease } + const s = interpolate(frame, K, [1.82, 1.72, 1.72, 1.0, 1.0], opt) + let fx = interpolate(frame, K, [420, 438, 760, 540, 540], opt) + let fy = interpolate(frame, K, [664, 664, 664, 540, 540], opt) + // keep the framing inside the 1080 canvas so edges never reveal black + fx = clamp(fx, 540 / s, W - 540 / s) + fy = clamp(fy, 540 / s, W - 540 / s) + const camera = `translate(${540 - fx * s}px, ${540 - fy * s}px) scale(${s})` + + // ---------- blue sweep (synced to the pan) ---------- + const p = interpolate(frame, [32, 150], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp", easing: ease }) + const revealAmount = p * (days.length - launchIndex) + 0.35 + const fillOf = (i: number) => clamp(revealAmount - (i - launchIndex), 0, 1) + + // token number climbs as the camera pulls back and the headline re-enters frame + const tokensT = + glmWeekTokensT * + interpolate(frame, [150, 202], [0, 1], { + extrapolateLeft: "clamp", + extrapolateRight: "clamp", + easing: Easing.out(Easing.cubic), + }) + + // chart geometry + const chartH = 440 + const chartW = 936 + const gap = 14 + const EXAGGERATE = 2.876 // broken y-axis: GLM-5.2 magnified ~2.9x for emphasis + + return ( + +
+
+ {/* header */} +
+ +
JUN 12–25, 2026
+
+ + {/* headline (static) */} +
+
+ GLM-5.2 broke out +
+
+ From 0 to {tokensT.toFixed(2)}T tokens in a week. +
+
+ + {/* stacked chart */} +
+
+ {/* faint dotted backdrop */} +
+ + {/* columns */} +
+ {days.map((d, i) => { + const glmShare = d.glm / d.total + const blueH = Math.round(glmShare * EXAGGERATE * chartH) + const filled = Math.round(blueH * fillOf(i)) + const slotGap = filled > 2 ? 5 : 0 + const fieldH = chartH - filled - slotGap + const fieldTotal = d.dsf + d.dsp + d.mm + d.others + return ( +
+ {/* gray field of other models (already in place) */} +
+ {field.map((seg) => ( +
+ ))} +
+ {/* GLM-5.2, animates in */} + {filled > 2 && ( +
+ )} +
+ ) + })} +
+
+
+ + {/* day axis */} +
+ {days.map((d, i) => ( +
+ {i === 0 || i === launchIndex || i === days.length - 1 ? d.date : ""} +
+ ))} +
+ + {/* footer */} +
+
+ + GLM-5.2 +
+
opencode.ai/data
+
+
+
+ + ) +} diff --git a/packages/llm/sst-env.d.ts b/artifacts/glm52-rise-video/sst-env.d.ts similarity index 100% rename from packages/llm/sst-env.d.ts rename to artifacts/glm52-rise-video/sst-env.d.ts diff --git a/artifacts/tui-thinking-disclosure/thinking-flat-markdown-disclosure.mp4 b/artifacts/tui-thinking-disclosure/thinking-flat-markdown-disclosure.mp4 new file mode 100644 index 000000000000..7df912aad156 Binary files /dev/null and b/artifacts/tui-thinking-disclosure/thinking-flat-markdown-disclosure.mp4 differ diff --git a/bun.lock b/bun.lock index c7ac6ab61c77..a8ef37689e72 100644 --- a/bun.lock +++ b/bun.lock @@ -8,14 +8,17 @@ "@aws-sdk/client-s3": "3.933.0", "@opencode-ai/plugin": "workspace:*", "@opencode-ai/script": "workspace:*", - "@opencode-ai/sdk": "workspace:*", + "@opencode-ai/sdk": "1.18.5", "heap-snapshot-toolkit": "1.1.3", "typescript": "catalog:", }, "devDependencies": { "@actions/artifact": "5.0.1", + "@ast-grep/cli": "0.44.0", "@tsconfig/bun": "catalog:", "@types/mime-types": "3.0.1", + "@types/react": "19.2.17", + "@types/react-dom": "19.2.3", "@typescript/native-preview": "catalog:", "glob": "13.0.5", "husky": "9.1.7", @@ -24,20 +27,44 @@ "prettier": "3.6.2", "semver": "^7.6.0", "sst": "catalog:", - "turbo": "2.8.13", + "turbo": "2.10.2", + }, + }, + "packages/ai": { + "name": "@opencode-ai/ai", + "version": "1.17.20", + "dependencies": { + "@opencode-ai/schema": "workspace:*", + "@smithy/eventstream-codec": "4.2.14", + "@smithy/util-utf8": "4.2.2", + "aws4fetch": "1.0.20", + "effect": "catalog:", + "google-auth-library": "10.5.0", + }, + "devDependencies": { + "@clack/prompts": "1.0.0-alpha.1", + "@effect/platform-node": "catalog:", + "@opencode-ai/http-recorder": "workspace:*", + "@tsconfig/bun": "catalog:", + "@types/bun": "catalog:", + "@typescript/native-preview": "catalog:", + "typescript": "catalog:", }, }, "packages/app": { "name": "@opencode-ai/app", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { + "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", "@dnd-kit/dom": "0.5.0", "@dnd-kit/helpers": "0.5.0", "@dnd-kit/solid": "0.5.0", "@kobalte/core": "catalog:", + "@opencode-ai/client": "file:vendor/opencode-ai-client-1.17.13.tgz", "@opencode-ai/core": "workspace:*", - "@opencode-ai/sdk": "workspace:*", + "@opencode-ai/schema": "workspace:*", + "@opencode-ai/sdk": "1.18.5", "@opencode-ai/session-ui": "workspace:*", "@opencode-ai/ui": "workspace:*", "@pierre/trees": "1.0.0-beta.4", @@ -63,7 +90,7 @@ "diff": "catalog:", "effect": "catalog:", "fuzzysort": "catalog:", - "ghostty-web": "github:anomalyco/ghostty-web#513463a6f1190253057e8a3f0dac8f6ee8393553", + "ghostty-web": "github:anomalyco/ghostty-web#83c0a07b8628b748aed073b232cb4b52a6ca11c1", "luxon": "catalog:", "marked": "catalog:", "marked-shiki": "catalog:", @@ -71,6 +98,7 @@ "shiki": "catalog:", "solid-js": "catalog:", "solid-list": "catalog:", + "solid-presence": "0.2.0", "tailwindcss": "catalog:", }, "devDependencies": { @@ -83,6 +111,7 @@ "@types/luxon": "catalog:", "@types/node": "catalog:", "@typescript/native-preview": "catalog:", + "tw-animate-css": "1.4.0", "typescript": "catalog:", "vite": "catalog:", "vite-plugin-icons-spritesheet": "3.0.1", @@ -91,55 +120,93 @@ }, "packages/cli": { "name": "@opencode-ai/cli", - "version": "1.17.11", + "version": "1.18.4", "bin": { - "lildax": "./bin/lildax.cjs", + "opencode2": "./bin/opencode2.cjs", }, "dependencies": { + "@agentclientprotocol/sdk": "1.2.1", "@effect/platform-node": "catalog:", - "@opencode-ai/core": "workspace:*", - "@opencode-ai/sdk": "workspace:*", + "@opencode-ai/client": "workspace:*", + "@opencode-ai/plugin": "workspace:*", + "@opencode-ai/schema": "workspace:*", "@opencode-ai/server": "workspace:*", "@opencode-ai/tui": "workspace:*", + "@opencode-ai/util": "workspace:*", "@opentui/core": "catalog:", "@opentui/solid": "catalog:", "@parcel/watcher": "2.5.1", + "@silvia-odwyer/photon-node": "0.3.4", "effect": "catalog:", + "immer": "11.1.4", + "jsonc-parser": "3.3.1", + "open": "10.1.2", + "semver": "catalog:", "solid-js": "catalog:", + "uqr": "0.1.3", + "ws": "8.21.0", }, "devDependencies": { + "@lydell/node-pty-darwin-arm64": "1.2.0-beta.12", + "@lydell/node-pty-darwin-x64": "1.2.0-beta.12", + "@lydell/node-pty-linux-arm64": "1.2.0-beta.12", + "@lydell/node-pty-linux-x64": "1.2.0-beta.12", + "@lydell/node-pty-win32-arm64": "1.2.0-beta.12", + "@lydell/node-pty-win32-x64": "1.2.0-beta.12", + "@opencode-ai/protocol": "workspace:*", "@opencode-ai/script": "workspace:*", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1", "@tsconfig/bun": "catalog:", "@types/bun": "catalog:", + "@types/semver": "catalog:", "@typescript/native-preview": "catalog:", + "vite": "catalog:", + "vite-plugin-solid": "catalog:", }, }, "packages/client": { "name": "@opencode-ai/client", + "version": "1.17.13", "dependencies": { "@opencode-ai/protocol": "workspace:*", "@opencode-ai/schema": "workspace:*", }, "devDependencies": { "@effect/platform-node": "catalog:", - "@opencode-ai/core": "workspace:*", "@opencode-ai/httpapi-codegen": "workspace:*", - "@opencode-ai/server": "workspace:*", "@tsconfig/bun": "catalog:", "@types/bun": "catalog:", "@typescript/native-preview": "catalog:", "effect": "catalog:", }, "peerDependencies": { - "effect": "4.0.0-beta.83", + "effect": "4.0.0-beta.101", }, "optionalPeers": [ "effect", ], }, + "packages/codemode": { + "name": "@opencode-ai/codemode", + "version": "1.18.4", + "dependencies": { + "acorn": "8.15.0", + "effect": "catalog:", + "typescript": "catalog:", + }, + "devDependencies": { + "@tsconfig/bun": "catalog:", + "@types/bun": "catalog:", + "@typescript/native-preview": "catalog:", + }, + }, "packages/console/app": { "name": "@opencode-ai/console-app", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@ibm/plex": "6.4.1", @@ -175,7 +242,7 @@ }, "packages/console/core": { "name": "@opencode-ai/console-core", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@aws-sdk/client-sts": "3.782.0", "@jsx-email/render": "1.1.1", @@ -202,7 +269,7 @@ }, "packages/console/function": { "name": "@opencode-ai/console-function", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@ai-sdk/anthropic": "3.0.82", "@ai-sdk/openai": "3.0.48", @@ -224,7 +291,7 @@ }, "packages/console/mail": { "name": "@opencode-ai/console-mail", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@jsx-email/all": "2.2.3", "@jsx-email/cli": "1.4.3", @@ -248,7 +315,7 @@ }, "packages/console/support": { "name": "@opencode-ai/console-support", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@cloudflare/vite-plugin": "1.15.2", "@opencode-ai/console-core": "workspace:*", @@ -268,7 +335,7 @@ }, "packages/core": { "name": "@opencode-ai/core", - "version": "1.17.11", + "version": "1.18.4", "bin": { "opencode": "./bin/opencode", }, @@ -276,7 +343,7 @@ "@ai-sdk/alibaba": "1.0.17", "@ai-sdk/amazon-bedrock": "4.0.112", "@ai-sdk/anthropic": "3.0.82", - "@ai-sdk/azure": "3.0.49", + "@ai-sdk/azure": "3.0.88", "@ai-sdk/cerebras": "2.0.41", "@ai-sdk/cohere": "3.0.27", "@ai-sdk/deepinfra": "2.0.41", @@ -284,57 +351,49 @@ "@ai-sdk/google": "3.0.73", "@ai-sdk/google-vertex": "4.0.128", "@ai-sdk/groq": "3.0.31", - "@ai-sdk/mistral": "3.0.27", - "@ai-sdk/openai": "3.0.53", + "@ai-sdk/mistral": "3.0.51", + "@ai-sdk/openai": "3.0.84", "@ai-sdk/openai-compatible": "2.0.41", "@ai-sdk/perplexity": "3.0.26", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23", "@ai-sdk/togetherai": "2.0.41", "@ai-sdk/vercel": "2.0.39", - "@ai-sdk/xai": "3.0.82", + "@ai-sdk/xai": "3.0.102", "@aws-sdk/credential-providers": "3.1057.0", - "@effect/opentelemetry": "catalog:", "@effect/platform-node": "catalog:", "@effect/sql-sqlite-bun": "catalog:", - "@ff-labs/fff-bun": "0.9.4", + "@ff-labs/fff-bun": "0.10.1", "@lydell/node-pty": "catalog:", - "@npmcli/arborist": "9.4.0", - "@npmcli/config": "10.8.1", + "@modelcontextprotocol/sdk": "1.29.0", + "@opencode-ai/ai": "workspace:*", + "@opencode-ai/codemode": "workspace:*", "@opencode-ai/effect-drizzle-sqlite": "workspace:*", "@opencode-ai/effect-sqlite-node": "workspace:*", - "@opencode-ai/llm": "workspace:*", "@opencode-ai/plugin": "workspace:*", "@opencode-ai/schema": "workspace:*", + "@opencode-ai/util": "workspace:*", "@openrouter/ai-sdk-provider": "2.9.0", - "@opentelemetry/api": "1.9.0", - "@opentelemetry/context-async-hooks": "2.6.1", - "@opentelemetry/exporter-trace-otlp-http": "0.214.0", - "@opentelemetry/sdk-trace-base": "2.6.1", "@parcel/watcher": "2.5.1", "@silvia-odwyer/photon-node": "0.3.4", + "@standard-schema/spec": "catalog:", "ai-gateway-provider": "3.1.2", "bun-pty": "0.4.8", - "cross-spawn": "catalog:", + "diff": "catalog:", "drizzle-orm": "catalog:", "effect": "catalog:", "fuzzysort": "3.1.0", - "gitlab-ai-provider": "6.9.3", - "glob": "13.0.5", + "gitlab-ai-provider": "6.11.1", "google-auth-library": "10.5.0", "gray-matter": "4.0.3", "htmlparser2": "8.0.2", "ignore": "7.0.5", "immer": "11.1.4", "jsonc-parser": "3.3.1", - "mime-types": "3.0.2", - "minimatch": "10.2.5", - "npm-package-arg": "13.0.2", "semver": "^7.6.3", "turndown": "7.2.0", - "venice-ai-sdk-provider": "2.0.2", + "venice-ai-sdk-provider": "2.1.1", "which": "6.0.1", - "xdg-basedir": "5.1.0", "zod": "catalog:", }, "devDependencies": { @@ -349,10 +408,7 @@ "@parcel/watcher-win32-x64": "2.5.1", "@tsconfig/bun": "catalog:", "@types/bun": "catalog:", - "@types/cross-spawn": "catalog:", "@types/node": "catalog:", - "@types/npm-package-arg": "6.1.4", - "@types/npmcli__arborist": "6.3.3", "@types/semver": "catalog:", "@types/turndown": "5.0.5", "@types/which": "3.0.4", @@ -361,7 +417,7 @@ }, "packages/desktop": { "name": "@opencode-ai/desktop", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@zip.js/zip.js": "2.7.62", "effect": "catalog:", @@ -415,7 +471,7 @@ }, "packages/effect-drizzle-sqlite": { "name": "@opencode-ai/effect-drizzle-sqlite", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "drizzle-orm": "catalog:", "effect": "catalog:", @@ -429,7 +485,7 @@ }, "packages/effect-sqlite-node": { "name": "@opencode-ai/effect-sqlite-node", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "effect": "catalog:", }, @@ -441,7 +497,7 @@ }, "packages/enterprise": { "name": "@opencode-ai/enterprise", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@hono/standard-validator": "catalog:", "@opencode-ai/core": "workspace:*", @@ -473,7 +529,7 @@ }, "packages/function": { "name": "@opencode-ai/function", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@octokit/auth-app": "8.0.1", "@octokit/rest": "catalog:", @@ -489,12 +545,12 @@ }, "packages/http-recorder": { "name": "@opencode-ai/http-recorder", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { - "@effect/platform-node": "4.0.0-beta.83", - "@effect/platform-node-shared": "4.0.0-beta.83", + "@effect/platform-node-shared": "4.0.0-beta.101", }, "devDependencies": { + "@effect/platform-node": "catalog:", "@tsconfig/node22": "catalog:", "@types/bun": "catalog:", "@types/node": "catalog:", @@ -503,11 +559,12 @@ "typescript": "catalog:", }, "peerDependencies": { - "effect": "4.0.0-beta.83", + "effect": "catalog:", }, }, "packages/httpapi-codegen": { "name": "@opencode-ai/httpapi-codegen", + "version": "0.0.0", "dependencies": { "effect": "catalog:", "prettier": "3.6.2", @@ -518,161 +575,16 @@ "@typescript/native-preview": "catalog:", }, }, - "packages/llm": { - "name": "@opencode-ai/llm", - "version": "1.17.11", - "dependencies": { - "@opencode-ai/schema": "workspace:*", - "@smithy/eventstream-codec": "4.2.14", - "@smithy/util-utf8": "4.2.2", - "aws4fetch": "1.0.20", - "effect": "catalog:", - }, - "devDependencies": { - "@clack/prompts": "1.0.0-alpha.1", - "@effect/platform-node": "catalog:", - "@opencode-ai/http-recorder": "workspace:*", - "@tsconfig/bun": "catalog:", - "@types/bun": "catalog:", - "@typescript/native-preview": "catalog:", - }, - }, - "packages/opencode": { - "name": "opencode", - "version": "1.17.11", - "bin": { - "opencode": "./bin/opencode", - }, - "dependencies": { - "@actions/core": "1.11.1", - "@actions/github": "6.0.1", - "@agentclientprotocol/sdk": "0.21.0", - "@ai-sdk/alibaba": "1.0.17", - "@ai-sdk/amazon-bedrock": "4.0.112", - "@ai-sdk/anthropic": "3.0.82", - "@ai-sdk/azure": "3.0.49", - "@ai-sdk/cerebras": "2.0.41", - "@ai-sdk/cohere": "3.0.27", - "@ai-sdk/deepinfra": "2.0.41", - "@ai-sdk/gateway": "3.0.104", - "@ai-sdk/google": "3.0.73", - "@ai-sdk/google-vertex": "4.0.128", - "@ai-sdk/groq": "3.0.31", - "@ai-sdk/mistral": "3.0.27", - "@ai-sdk/openai": "3.0.53", - "@ai-sdk/openai-compatible": "2.0.41", - "@ai-sdk/perplexity": "3.0.26", - "@ai-sdk/provider": "3.0.8", - "@ai-sdk/togetherai": "2.0.41", - "@ai-sdk/vercel": "2.0.39", - "@ai-sdk/xai": "3.0.82", - "@aws-sdk/credential-providers": "3.1057.0", - "@clack/prompts": "1.0.0-alpha.1", - "@effect/opentelemetry": "catalog:", - "@effect/platform-node": "catalog:", - "@ff-labs/fff-bun": "0.9.4", - "@gitlab/opencode-gitlab-auth": "1.3.3", - "@modelcontextprotocol/sdk": "1.29.0", - "@octokit/graphql": "9.0.2", - "@octokit/rest": "catalog:", - "@openauthjs/openauth": "catalog:", - "@opencode-ai/llm": "workspace:*", - "@opencode-ai/plugin": "workspace:*", - "@opencode-ai/protocol": "workspace:*", - "@opencode-ai/schema": "workspace:*", - "@opencode-ai/script": "workspace:*", - "@opencode-ai/sdk": "workspace:*", - "@opencode-ai/server": "workspace:*", - "@opencode-ai/tui": "workspace:*", - "@openrouter/ai-sdk-provider": "2.9.0", - "@opentelemetry/api": "1.9.0", - "@opentelemetry/context-async-hooks": "2.6.1", - "@opentelemetry/exporter-trace-otlp-http": "0.214.0", - "@opentelemetry/sdk-trace-base": "2.6.1", - "@opentelemetry/sdk-trace-node": "2.6.1", - "@opentui/core": "catalog:", - "@opentui/keymap": "catalog:", - "@opentui/solid": "catalog:", - "@parcel/watcher": "2.5.1", - "@pierre/diffs": "catalog:", - "@silvia-odwyer/photon-node": "0.3.4", - "@solid-primitives/event-bus": "1.1.2", - "@solid-primitives/scheduled": "1.5.2", - "@standard-schema/spec": "1.0.0", - "@types/ws": "8.18.1", - "@zip.js/zip.js": "2.7.62", - "ai": "catalog:", - "ai-gateway-provider": "3.1.2", - "bonjour-service": "1.3.0", - "chokidar": "4.0.3", - "cross-spawn": "catalog:", - "decimal.js": "10.5.0", - "diff": "catalog:", - "drizzle-orm": "catalog:", - "effect": "catalog:", - "fuzzysort": "3.1.0", - "gitlab-ai-provider": "6.9.3", - "glob": "13.0.5", - "google-auth-library": "10.5.0", - "gray-matter": "4.0.3", - "htmlparser2": "8.0.2", - "ignore": "7.0.5", - "immer": "11.1.4", - "jsonc-parser": "3.3.1", - "mime-types": "3.0.2", - "minimatch": "10.0.3", - "npm-package-arg": "13.0.2", - "open": "10.1.2", - "opencode-gitlab-auth": "2.1.0", - "opencode-poe-auth": "0.0.1", - "opentui-spinner": "catalog:", - "partial-json": "0.1.7", - "remeda": "catalog:", - "semver": "^7.6.3", - "solid-js": "catalog:", - "strip-ansi": "7.1.2", - "tree-sitter-bash": "0.25.0", - "tree-sitter-powershell": "0.25.10", - "turndown": "7.2.0", - "ulid": "catalog:", - "venice-ai-sdk-provider": "2.0.2", - "vscode-jsonrpc": "8.2.1", - "web-tree-sitter": "0.25.10", - "ws": "8.21.0", - "xdg-basedir": "5.1.0", - "yargs": "18.0.0", - "zod": "catalog:", - }, - "devDependencies": { - "@babel/core": "7.28.4", - "@octokit/webhooks-types": "7.6.1", - "@opencode-ai/core": "workspace:*", - "@opencode-ai/http-recorder": "workspace:*", - "@opencode-ai/script": "workspace:*", - "@standard-schema/spec": "1.0.0", - "@tsconfig/bun": "catalog:", - "@types/babel__core": "7.20.5", - "@types/bun": "catalog:", - "@types/cross-spawn": "catalog:", - "@types/mime-types": "3.0.1", - "@types/npm-package-arg": "6.1.4", - "@types/semver": "^7.5.8", - "@types/turndown": "5.0.5", - "@types/yargs": "17.0.33", - "@typescript/native-preview": "catalog:", - "drizzle-orm": "catalog:", - "prettier": "3.6.2", - "typescript": "catalog:", - "vscode-languageserver-types": "3.17.5", - "why-is-node-running": "3.2.2", - }, - }, "packages/plugin": { "name": "@opencode-ai/plugin", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@ai-sdk/provider": "3.0.8", - "@opencode-ai/sdk": "workspace:*", + "@opencode-ai/ai": "workspace:*", + "@opencode-ai/client": "workspace:*", + "@opencode-ai/schema": "workspace:*", + "@opencode-ai/sdk": "1.18.5", + "@standard-schema/spec": "catalog:", "effect": "catalog:", "zod": "catalog:", }, @@ -680,15 +592,16 @@ "@opentui/core": "catalog:", "@opentui/keymap": "catalog:", "@opentui/solid": "catalog:", + "@tsconfig/bun": "catalog:", "@tsconfig/node22": "catalog:", "@types/node": "catalog:", "@typescript/native-preview": "catalog:", "typescript": "catalog:", }, "peerDependencies": { - "@opentui/core": ">=0.3.4", - "@opentui/keymap": ">=0.3.4", - "@opentui/solid": ">=0.3.4", + "@opentui/core": ">=0.4.5", + "@opentui/keymap": ">=0.4.5", + "@opentui/solid": ">=0.4.5", }, "optionalPeers": [ "@opentui/core", @@ -698,6 +611,7 @@ }, "packages/protocol": { "name": "@opencode-ai/protocol", + "version": "1.17.11", "dependencies": { "@opencode-ai/schema": "workspace:*", "effect": "catalog:", @@ -706,17 +620,21 @@ "@tsconfig/bun": "catalog:", "@types/bun": "catalog:", "@typescript/native-preview": "catalog:", + "typescript": "catalog:", }, }, "packages/schema": { "name": "@opencode-ai/schema", + "version": "1.17.11", "dependencies": { + "@standard-schema/spec": "catalog:", "effect": "catalog:", }, "devDependencies": { "@tsconfig/bun": "catalog:", "@types/bun": "catalog:", "@typescript/native-preview": "catalog:", + "typescript": "catalog:", }, }, "packages/script": { @@ -734,36 +652,29 @@ "dependencies": { "@opencode-ai/client": "workspace:*", "@opencode-ai/core": "workspace:*", + "@opencode-ai/plugin": "workspace:*", + "@opencode-ai/schema": "workspace:*", "@opencode-ai/server": "workspace:*", "effect": "catalog:", }, "devDependencies": { + "@opencode-ai/httpapi-codegen": "workspace:*", + "@opencode-ai/protocol": "workspace:*", "@tsconfig/bun": "catalog:", "@types/bun": "catalog:", "@typescript/native-preview": "catalog:", }, }, - "packages/sdk/js": { - "name": "@opencode-ai/sdk", - "version": "1.17.11", - "dependencies": { - "cross-spawn": "catalog:", - }, - "devDependencies": { - "@hey-api/openapi-ts": "0.90.10", - "@tsconfig/node22": "catalog:", - "@types/cross-spawn": "catalog:", - "@types/node": "catalog:", - "@typescript/native-preview": "catalog:", - "typescript": "catalog:", - }, - }, "packages/server": { "name": "@opencode-ai/server", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { + "@effect/platform-node": "catalog:", "@opencode-ai/core": "workspace:*", "@opencode-ai/protocol": "workspace:*", + "@opencode-ai/schema": "workspace:*", + "@opencode-ai/simulation": "workspace:*", + "@opencode-ai/util": "workspace:*", "drizzle-orm": "catalog:", "effect": "catalog:", }, @@ -775,11 +686,12 @@ }, "packages/session-ui": { "name": "@opencode-ai/session-ui", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@kobalte/core": "catalog:", + "@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13.tgz", "@opencode-ai/core": "workspace:*", - "@opencode-ai/sdk": "workspace:*", + "@opencode-ai/sdk": "1.18.5", "@opencode-ai/ui": "workspace:*", "@pierre/diffs": "catalog:", "@shikijs/stream": "catalog:", @@ -817,11 +729,33 @@ "vite": "catalog:", }, }, + "packages/simulation": { + "name": "@opencode-ai/simulation", + "version": "1.17.13", + "dependencies": { + "@fontsource/commit-mono": "5.2.5", + "@fontsource/noto-sans-math": "5.2.5", + "@fontsource/noto-sans-symbols": "5.2.5", + "@fontsource/noto-sans-symbols-2": "5.2.5", + "@napi-rs/canvas": "1.0.2", + "@opencode-ai/ai": "workspace:*", + "@opencode-ai/core": "workspace:*", + "@opencode-ai/plugin": "workspace:*", + "@opencode-ai/util": "workspace:*", + "@opentui/core": "catalog:", + "effect": "catalog:", + }, + "devDependencies": { + "@tsconfig/bun": "catalog:", + "@types/bun": "catalog:", + "@typescript/native-preview": "catalog:", + }, + }, "packages/slack": { "name": "@opencode-ai/slack", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { - "@opencode-ai/sdk": "workspace:*", + "@opencode-ai/sdk": "1.18.5", "@slack/bolt": "^3.17.1", }, "devDependencies": { @@ -832,9 +766,10 @@ }, "packages/stats/app": { "name": "@opencode-ai/stats-app", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@ibm/plex": "6.4.1", + "@kobalte/core": "catalog:", "@opencode-ai/stats-core": "workspace:*", "@opencode-ai/ui": "workspace:*", "@solidjs/meta": "catalog:", @@ -865,7 +800,7 @@ }, "packages/stats/core": { "name": "@opencode-ai/stats-core", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@aws-sdk/client-athena": "3.933.0", "@planetscale/database": "1.19.0", @@ -884,7 +819,7 @@ }, "packages/stats/server": { "name": "@opencode-ai/stats-server", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@aws-sdk/client-firehose": "3.933.0", "@effect/platform-node": "catalog:", @@ -916,6 +851,7 @@ "@types/node": "catalog:", "@types/react": "18.0.25", "react": "18.2.0", + "react-dom": "18.2.0", "solid-js": "catalog:", "storybook": "^10.2.13", "storybook-solidjs-vite": "^10.0.9", @@ -925,24 +861,31 @@ }, "packages/tui": { "name": "@opencode-ai/tui", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { + "@opencode-ai/client": "workspace:*", "@opencode-ai/core": "workspace:*", "@opencode-ai/plugin": "workspace:*", - "@opencode-ai/sdk": "workspace:*", + "@opencode-ai/schema": "workspace:*", + "@opencode-ai/simulation": "workspace:*", "@opencode-ai/ui": "workspace:*", + "@opencode-ai/util": "workspace:*", "@opentui/core": "catalog:", "@opentui/keymap": "catalog:", "@opentui/solid": "catalog:", + "@solid-primitives/event-bus": "1.1.2", "clipboardy": "4.0.0", "diff": "catalog:", "effect": "catalog:", "fuzzysort": "catalog:", + "get-east-asian-width": "catalog:", "open": "10.1.2", "opentui-spinner": "catalog:", "remeda": "catalog:", "solid-js": "catalog:", + "string-width": "catalog:", "strip-ansi": "7.1.2", + "uqr": "0.1.3", }, "devDependencies": { "@tsconfig/bun": "catalog:", @@ -952,7 +895,7 @@ }, "packages/ui": { "name": "@opencode-ai/ui", - "version": "1.17.11", + "version": "1.18.4", "dependencies": { "@kobalte/core": "catalog:", "@pierre/diffs": "catalog:", @@ -990,6 +933,7 @@ "@typescript/native-preview": "catalog:", "solid-js": "catalog:", "tailwindcss": "catalog:", + "tw-animate-css": "1.4.0", "typescript": "catalog:", "vite": "catalog:", "vite-plugin-icons-spritesheet": "3.0.1", @@ -1000,14 +944,60 @@ "solid-js": "^1.9.0", }, }, - "packages/web": { - "name": "@opencode-ai/web", - "version": "1.17.11", + "packages/updates": { + "name": "@opencode-ai/updates", + "version": "1.18.4", "dependencies": { - "@astrojs/cloudflare": "12.6.3", - "@astrojs/markdown-remark": "6.3.1", - "@astrojs/solid-js": "5.1.0", - "@astrojs/starlight": "0.34.3", + "jose": "6.0.11", + }, + "devDependencies": { + "@cloudflare/workers-types": "catalog:", + "@tsconfig/node22": "catalog:", + "@types/bun": "catalog:", + "@typescript/native-preview": "catalog:", + "wrangler": "4.110.0", + }, + }, + "packages/util": { + "name": "@opencode-ai/util", + "version": "1.18.3", + "dependencies": { + "@effect/opentelemetry": "catalog:", + "@effect/platform-node": "catalog:", + "@npmcli/arborist": "catalog:", + "@npmcli/config": "10.8.1", + "@opentelemetry/api": "1.9.0", + "@opentelemetry/context-async-hooks": "2.6.1", + "@opentelemetry/exporter-trace-otlp-http": "0.214.0", + "@opentelemetry/sdk-trace-base": "2.6.1", + "@opentelemetry/sdk-trace-node": "2.6.1", + "cross-spawn": "catalog:", + "effect": "catalog:", + "glob": "13.0.5", + "mime-types": "3.0.2", + "minimatch": "10.2.5", + "npm-package-arg": "13.0.2", + "resolve.exports": "catalog:", + "xdg-basedir": "5.1.0", + }, + "devDependencies": { + "@tsconfig/bun": "catalog:", + "@types/bun": "catalog:", + "@types/cross-spawn": "catalog:", + "@types/node": "catalog:", + "@types/npm-package-arg": "6.1.4", + "@types/npmcli__arborist": "6.3.3", + "@typescript/native-preview": "catalog:", + }, + }, + "packages/web": { + "name": "@opencode-ai/web", + "version": "1.18.4", + "dependencies": { + "@astrojs/cloudflare": "12.6.3", + "@astrojs/markdown-remark": "6.3.1", + "@astrojs/solid-js": "5.1.0", + "@astrojs/starlight": "0.34.3", "@fontsource/ibm-plex-mono": "5.2.5", "@shikijs/transformers": "3.20.0", "@solid-primitives/resize-observer": "2.1.5", @@ -1030,32 +1020,42 @@ "devDependencies": { "@astrojs/check": "0.9.6", "@types/node": "catalog:", - "opencode": "workspace:*", "typescript": "catalog:", }, }, + "packages/www": { + "name": "@opencode-ai/www", + "dependencies": { + "blume": "1.1.4", + }, + "devDependencies": { + "@astrojs/cloudflare": "14.1.4", + "@types/bun": "catalog:", + "astro": "7.1.3", + "effect": "catalog:", + "prettier": "3.6.2", + "wrangler": "4.110.0", + }, + }, }, "trustedDependencies": [ "esbuild", - "tree-sitter-powershell", "protobufjs", "electron", "web-tree-sitter", - "tree-sitter-bash", ], "patchedDependencies": { "@pierre/trees@1.0.0-beta.4": "patches/@pierre%2Ftrees@1.0.0-beta.4.patch", + "effect@4.0.0-beta.101": "patches/effect@4.0.0-beta.101.patch", + "@ai-sdk/xai@3.0.102": "patches/@ai-sdk%2Fxai@3.0.102.patch", "@modelcontextprotocol/sdk@1.29.0": "patches/@modelcontextprotocol%2Fsdk@1.29.0.patch", - "gcp-metadata@8.1.2": "patches/gcp-metadata@8.1.2.patch", + "@tanstack/virtual-core@3.17.3": "patches/@tanstack%2Fvirtual-core@3.17.3.patch", "@standard-community/standard-openapi@0.2.9": "patches/@standard-community%2Fstandard-openapi@0.2.9.patch", + "@ai-sdk/mistral@3.0.51": "patches/@ai-sdk%2Fmistral@3.0.51.patch", "@npmcli/agent@4.0.2": "patches/@npmcli%2Fagent@4.0.2.patch", "@silvia-odwyer/photon-node@0.3.4": "patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch", - "@tanstack/solid-virtual@3.13.28": "patches/@tanstack%2Fsolid-virtual@3.13.28.patch", "solid-js@1.9.10": "patches/solid-js@1.9.10.patch", "@ai-sdk/google@3.0.73": "patches/@ai-sdk%2Fgoogle@3.0.73.patch", - "@ai-sdk/xai@3.0.82": "patches/@ai-sdk%2Fxai@3.0.82.patch", - "@tanstack/virtual-core@3.17.0": "patches/@tanstack%2Fvirtual-core@3.17.0.patch", - "pacote@21.5.0": "patches/pacote@21.5.0.patch", }, "overrides": { "@opentui/core": "catalog:", @@ -1063,12 +1063,14 @@ "@opentui/solid": "catalog:", "@types/bun": "catalog:", "@types/node": "catalog:", + "effect": "catalog:", }, "catalog": { "@cloudflare/workers-types": "4.20251008.0", - "@effect/opentelemetry": "4.0.0-beta.83", - "@effect/platform-node": "4.0.0-beta.83", - "@effect/sql-sqlite-bun": "4.0.0-beta.83", + "@corvu/drawer": "0.2.4", + "@effect/opentelemetry": "4.0.0-beta.101", + "@effect/platform-node": "4.0.0-beta.101", + "@effect/sql-sqlite-bun": "4.0.0-beta.101", "@hono/standard-validator": "0.2.0", "@hono/zod-validator": "0.4.2", "@kobalte/core": "0.13.11", @@ -1076,9 +1078,9 @@ "@npmcli/arborist": "9.4.0", "@octokit/rest": "22.0.0", "@openauthjs/openauth": "0.0.0-20250322224806", - "@opentui/core": "0.3.4", - "@opentui/keymap": "0.3.4", - "@opentui/solid": "0.3.4", + "@opentui/core": "0.4.5", + "@opentui/keymap": "0.4.5", + "@opentui/solid": "0.4.5", "@pierre/diffs": "1.2.10", "@playwright/test": "1.59.1", "@sentry/solid": "10.36.0", @@ -1088,8 +1090,9 @@ "@solidjs/meta": "0.29.4", "@solidjs/router": "0.15.4", "@solidjs/start": "https://pkg.pr.new/@solidjs/start@dfb2020", + "@standard-schema/spec": "1.1.0", "@tailwindcss/vite": "4.1.11", - "@tanstack/solid-virtual": "3.13.28", + "@tanstack/solid-virtual": "3.13.32", "@tsconfig/bun": "1.0.9", "@tsconfig/node22": "22.0.2", "@types/bun": "1.3.13", @@ -1104,21 +1107,24 @@ "dompurify": "3.3.1", "drizzle-kit": "1.0.0-rc.2", "drizzle-orm": "1.0.0-rc.2", - "effect": "4.0.0-beta.83", + "effect": "4.0.0-beta.101", "fuzzysort": "3.1.0", + "get-east-asian-width": "1.6.0", "hono": "4.10.7", "hono-openapi": "1.1.2", "luxon": "3.6.1", - "marked": "17.0.1", + "marked": "17.0.6", "marked-shiki": "1.2.1", "opentui-spinner": "0.0.7", "remeda": "2.26.0", "remend": "1.3.0", + "resolve.exports": "2.0.3", "semver": "7.7.4", "shiki": "4.2.0", "solid-js": "1.9.10", "solid-list": "0.3.0", "sst": "4.13.1", + "string-width": "7.2.0", "tailwindcss": "4.1.11", "typescript": "5.8.2", "ulid": "3.0.1", @@ -1127,23 +1133,21 @@ "zod": "4.1.8", }, "packages": { - "7zip-bin": ["7zip-bin@5.2.0", "", {}, "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A=="], - "@actions/artifact": ["@actions/artifact@5.0.1", "", { "dependencies": { "@actions/core": "^2.0.0", "@actions/github": "^6.0.1", "@actions/http-client": "^3.0.0", "@azure/storage-blob": "^12.29.1", "@octokit/core": "^5.2.1", "@octokit/plugin-request-log": "^1.0.4", "@octokit/plugin-retry": "^3.0.9", "@octokit/request": "^8.4.1", "@octokit/request-error": "^5.1.1", "@protobuf-ts/plugin": "^2.2.3-alpha.1", "archiver": "^7.0.1", "jwt-decode": "^3.1.2", "unzip-stream": "^0.3.1" } }, "sha512-dHJ5rHduhCKUikKTT9eXeWoUvfKia3IjR1sO/VTAV3DVAL4yMTRnl2iO5mcfiBjySHLwPNezwENAVskKYU5ymw=="], - "@actions/core": ["@actions/core@1.11.1", "", { "dependencies": { "@actions/exec": "^1.1.1", "@actions/http-client": "^2.0.1" } }, "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A=="], + "@actions/core": ["@actions/core@2.0.3", "", { "dependencies": { "@actions/exec": "^2.0.0", "@actions/http-client": "^3.0.2" } }, "sha512-Od9Thc3T1mQJYddvVPM4QGiLUewdh+3txmDYHHxoNdkqysR1MbCT+rFOtNUxYAz+7+6RIsqipVahY2GJqGPyxA=="], - "@actions/exec": ["@actions/exec@1.1.1", "", { "dependencies": { "@actions/io": "^1.0.1" } }, "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w=="], + "@actions/exec": ["@actions/exec@2.0.0", "", { "dependencies": { "@actions/io": "^2.0.0" } }, "sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw=="], "@actions/github": ["@actions/github@6.0.1", "", { "dependencies": { "@actions/http-client": "^2.2.0", "@octokit/core": "^5.0.1", "@octokit/plugin-paginate-rest": "^9.2.2", "@octokit/plugin-rest-endpoint-methods": "^10.4.0", "@octokit/request": "^8.4.1", "@octokit/request-error": "^5.1.1", "undici": "^5.28.5" } }, "sha512-xbZVcaqD4XnQAe35qSQqskb3SqIAfRyLBrHMd/8TuL7hJSz2QtbDwnNM8zWx4zO5l2fnGtseNE3MbEvD7BxVMw=="], "@actions/http-client": ["@actions/http-client@3.0.2", "", { "dependencies": { "tunnel": "^0.0.6", "undici": "^6.23.0" } }, "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA=="], - "@actions/io": ["@actions/io@1.1.3", "", {}, "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="], + "@actions/io": ["@actions/io@2.0.0", "", {}, "sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg=="], "@adobe/css-tools": ["@adobe/css-tools@4.5.0", "", {}, "sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q=="], - "@agentclientprotocol/sdk": ["@agentclientprotocol/sdk@0.21.0", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-ONj+Q8qOdNQp5XbH5jnMwzT9IKZJsSN0p0lkceS4GtUtNOPVLpNzSS8gqQdGMKfBvA0ESbkL8BTaSN1Rc9miEw=="], + "@agentclientprotocol/sdk": ["@agentclientprotocol/sdk@1.2.1", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-jwYUdOQR7tc+Zfch53VL4JJyUNK/46q03uUTYb+PjECsmnNl94XFXOfYLJ8RBpMNidXd1rpOAVgb0vqD98xImA=="], "@ai-sdk/alibaba": ["@ai-sdk/alibaba@1.0.17", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.41", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ZbE+U5bWz2JBc5DERLowx5+TKbjGBE93LqKZAWvuEn7HOSQMraxFMZuc0ST335QZJAyfBOzh7m1mPQ+y7EaaoA=="], @@ -1151,21 +1155,21 @@ "@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.82", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-WKKou2wbhGGYV8PSALAPyV2YY4nfCqCPkyBzYtJtDA9yCcIFwsbtkTNgg7bqtLCVzeEsY7wwxRoCWy+EMfrw/A=="], - "@ai-sdk/azure": ["@ai-sdk/azure@3.0.49", "", { "dependencies": { "@ai-sdk/openai": "3.0.48", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-wskgAL+OmrHG7by/iWIxEBQCEdc1mDudha/UZav46i0auzdFfsDB/k2rXZaC4/3nWSgMZkxr0W3ncyouEGX/eg=="], + "@ai-sdk/azure": ["@ai-sdk/azure@3.0.88", "", { "dependencies": { "@ai-sdk/deepseek": "2.0.47", "@ai-sdk/openai": "3.0.84", "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-RRjZkB1lYplh8dpBarnvkl1j7sYLHsyXua7erL3oNcMK7fHcl4bPO5C7iQhD1O/DqD/zCceDifnege1s+8yEvw=="], "@ai-sdk/cerebras": ["@ai-sdk/cerebras@2.0.41", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.37", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kDMEpjaRdRXIUi1EH8WHwLRahyDTYv9SAJnP6VCCeq8X+tVqZbMLCqqxSG5dRknrI65ucjvzQt+FiDKTAa7AHg=="], "@ai-sdk/cohere": ["@ai-sdk/cohere@3.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-OqcCq2PiFY1dbK/0Ck45KuvE8jfdxRuuAE9Y5w46dAk6U+9vPOeg1CDcmR+ncqmrYrhRl3nmyDttyDahyjCzAw=="], - "@ai-sdk/deepgram": ["@ai-sdk/deepgram@2.0.33", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-VscTV68g6sXRY4O1yl72/O8y6+tBDvSQax6bqX06hRKWBGxsJ8Jr3LZsNmZnK9Od5Icx565ijK0QgrlNaN4TdQ=="], + "@ai-sdk/deepgram": ["@ai-sdk/deepgram@2.0.46", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.40" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ky7x7+nn07ZL/VSUl9Dx8nBYg87N2pnTHjFc4VpkT6MXVMIURwedUm4GJrfbT4ygeQ139smVvIbTC3ZJMujoDg=="], "@ai-sdk/deepinfra": ["@ai-sdk/deepinfra@2.0.41", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.37", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-y6RoOP7DGWmDSiSxrUSt5p18sbz+Ixe5lMVPmdE7x+Tr5rlrzvftyHhjWHfqlAtoYERZTGFbP6tPW1OfQcrb4A=="], - "@ai-sdk/deepseek": ["@ai-sdk/deepseek@2.0.35", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-9DhYurbAvcurOEGN6u2myYDybrrzGfcrkG8hwmFjwTrePW6KCMggm0YxP7e8RkLYcQKqCEMgFlyEB4BM6EmiKg=="], + "@ai-sdk/deepseek": ["@ai-sdk/deepseek@2.0.47", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MzcQ321JO8OY+TVLFI81A7cIIuoeLLxrLCDD+8C1E3Ro6UFyfMtRXo9bw9OhTMRSDMo6hgSDOo4Fekz8aJtQYQ=="], - "@ai-sdk/elevenlabs": ["@ai-sdk/elevenlabs@2.0.33", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-EtvsWfGrqx3OhzJdoi82qH+4yzEPPKZr2utyQ+w8cHKoFeg0+8Lou9Z3uixy73WEwz8Z1+AR8QT9fZ64AWGYPA=="], + "@ai-sdk/elevenlabs": ["@ai-sdk/elevenlabs@2.0.46", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.40" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-HUStTC6DsjsgdRAYb0kJSFvAElHkYIiyAraRqgHPeLGCyec4FJnI9j2BgjK6HVntMv/1M6qXkzJmLOryCGfAzA=="], - "@ai-sdk/fireworks": ["@ai-sdk/fireworks@2.0.53", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.48", "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-HjeiGsdxSzrCkOf2l2V+K+opzlqxBtduBq6BCiohAdgQk2KdZmI/67SMkBM6Kdze/BjUXiZlv0d7zNICPhxVDA=="], + "@ai-sdk/fireworks": ["@ai-sdk/fireworks@2.0.70", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.62", "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.40" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-9ksD8Lx/vNw4GTUIEkL/V3cEj1Rvdqpt7y2JdJM3efp4Attyyg/g5mg7DFvzQlsXpk3zlkfPo9AcIf4eypfi6Q=="], "@ai-sdk/gateway": ["@ai-sdk/gateway@3.0.104", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23", "@vercel/oidc": "3.2.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ZKX5n74io8VIRlhIMSLWVlvT3sXC8Z7cZ9GHuWBWZDVi96+62AIsWuLGvMfcBA1STYuSoDrp6rIziZmvrTq0TA=="], @@ -1175,7 +1179,7 @@ "@ai-sdk/groq": ["@ai-sdk/groq@3.0.31", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-XbbugpnFmXGu2TlXiq8KUJskP6/VVbuFcnFIGDzDIB/Chg6XHsNnqrTF80Zxkh0Pd3+NvbM+2Uqrtsndk6bDAg=="], - "@ai-sdk/mistral": ["@ai-sdk/mistral@3.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ZXe7nZQgliDdjz5ufH5RKpHWxbN72AzmzzKGbF/z+0K9GN5tUCnftrQRvTRFHA5jAzTapcm2BEevmGLVbMkW+A=="], + "@ai-sdk/mistral": ["@ai-sdk/mistral@3.0.51", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.40" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-83eXY6p0lUFhSuMvNDmTKDuMciK5XDAWDlNh5c0L80tKjmtCFRItA1MZHp4IKe1r7eK8Rb5nN7qtxqMLUFRIRw=="], "@ai-sdk/openai": ["@ai-sdk/openai@3.0.48", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ALmj/53EXpcRqMbGpPJPP4UOSWw0q4VGpnDo7YctvsynjkrKDmoneDG/1a7VQnSPYHnJp6tTRMf5ZdxZ5whulg=="], @@ -1191,32 +1195,82 @@ "@ai-sdk/vercel": ["@ai-sdk/vercel@2.0.39", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.37", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-8eu3ljJpkCTP4ppcyYB+NcBrkcBoSOFthCSgk5VnjaxnDaOJFaxnPwfddM7wx3RwMk2CiK1O61Px/LlqNc7QkQ=="], - "@ai-sdk/xai": ["@ai-sdk/xai@3.0.82", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.41", "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-A0VFMufnVf4wODcT3SPQUUzvYXiIO1VhFuXj9r6z/vP4rlo+QRDPw3WSTchcz93ROQWSfBE3I6Szqz342OHi5w=="], + "@ai-sdk/xai": ["@ai-sdk/xai@3.0.102", "", { "dependencies": { "@ai-sdk/openai-compatible": "2.0.56", "@ai-sdk/provider": "3.0.13", "@ai-sdk/provider-utils": "4.0.35" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-NeQyOR7OCqDMgaLS4uNX/ep/HrwUzzFYLzXQSRoqLy2jsnqxAJhsgltRwAwf+ADjyPBIAKEOestWnIQA+LrLrQ=="], "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], + "@antfu/install-pkg": ["@antfu/install-pkg@1.1.0", "", { "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" } }, "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ=="], + "@anthropic-ai/sdk": ["@anthropic-ai/sdk@0.71.2", "", { "dependencies": { "json-schema-to-ts": "^3.1.1" }, "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" }, "optionalPeers": ["zod"], "bin": { "anthropic-ai-sdk": "bin/cli" } }, "sha512-TGNDEUuEstk/DKu0/TflXAEt+p+p/WhTlFzEnoosvbaDU2LTjm42igSdlL0VijrKpWejtOKxX0b8A7uc+XiSAQ=="], "@anycable/core": ["@anycable/core@0.9.2", "", { "dependencies": { "nanoevents": "^7.0.1" } }, "sha512-x5ZXDcW/N4cxWl93CnbHs/u7qq4793jS2kNPWm+duPrXlrva+ml2ZGT7X9tuOBKzyIHf60zWCdIK7TUgMPAwXA=="], + "@ark/schema": ["@ark/schema@0.55.0", "", { "dependencies": { "@ark/util": "0.55.0" } }, "sha512-IlSIc0FmLKTDGr4I/FzNHauMn0MADA6bCjT1wauu4k6MyxhC1R9gz0olNpIRvK7lGGDwtc/VO0RUDNvVQW5WFg=="], + + "@ark/util": ["@ark/util@0.55.0", "", {}, "sha512-aWFNK7aqSvqFtVsl1xmbTjGbg91uqtJV7Za76YGNEwIO4qLjMfyY8flmmbhooYMuqPCO2jyxu8hve943D+w3bA=="], + + "@ast-grep/cli": ["@ast-grep/cli@0.44.0", "", { "dependencies": { "detect-libc": "2.1.2" }, "optionalDependencies": { "@ast-grep/cli-darwin-arm64": "0.44.0", "@ast-grep/cli-darwin-x64": "0.44.0", "@ast-grep/cli-linux-arm64-gnu": "0.44.0", "@ast-grep/cli-linux-x64-gnu": "0.44.0", "@ast-grep/cli-win32-arm64-msvc": "0.44.0", "@ast-grep/cli-win32-ia32-msvc": "0.44.0", "@ast-grep/cli-win32-x64-msvc": "0.44.0" }, "bin": { "sg": "sg", "ast-grep": "ast-grep" } }, "sha512-Jf4PuP7XjzsMa3m9gYxmzV8KyWZc4w1ZzKe/t0+90wWxmSasQJe6AtMkJxHEi98MGgfAF1nWziqjDd0/6EsBjA=="], + + "@ast-grep/cli-darwin-arm64": ["@ast-grep/cli-darwin-arm64@0.44.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bF7euu/hF/cYg4510z8110vh60rrqfrBdsfRqVGd6xqNSPENu7CJnTVN/Z4Nk5U1NM8YKzUD+dYx1ySUJ0CUNQ=="], + + "@ast-grep/cli-darwin-x64": ["@ast-grep/cli-darwin-x64@0.44.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-0fI9caQGp1dFcmBATNlVytIRdAeYb91v1D2xjMIi1bSX+l8Uj846JUiaimUGBuBZmyFq+BScoWM4RnprEmZMpQ=="], + + "@ast-grep/cli-linux-arm64-gnu": ["@ast-grep/cli-linux-arm64-gnu@0.44.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-JB6EUnqEtGGtyg1GqNquld/++1CvaWD7r84IwwhddX1qx0NmDoHyn2mKd8vnQ24Z0RkV3g7y7foMLakELbGtDw=="], + + "@ast-grep/cli-linux-x64-gnu": ["@ast-grep/cli-linux-x64-gnu@0.44.0", "", { "os": "linux", "cpu": "x64" }, "sha512-rNL0LsI682D9EMzfaGVEtZa1xaqTtGb2I+Zk4ZzidX6u+fF7f79wdqyKahKjXzoIrGkuhkoL3gcyLKAtQd9+qg=="], + + "@ast-grep/cli-win32-arm64-msvc": ["@ast-grep/cli-win32-arm64-msvc@0.44.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-lqD0MhGQAddh2YoV/brKQ6GVcFLmRiTBwIElutwedaUvRCdasTGukFPYuSWk/iI8Kv19xom6s7l+mGuZ7v+xwQ=="], + + "@ast-grep/cli-win32-ia32-msvc": ["@ast-grep/cli-win32-ia32-msvc@0.44.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-ZJrnS+2OkNfwyr6yrN69glP67uybBxDvl9mqZvh1J44vB3OFn9U9c+cVAoZIAo7JD5F4rZNxwyu3gcy4+xuwEA=="], + + "@ast-grep/cli-win32-x64-msvc": ["@ast-grep/cli-win32-x64-msvc@0.44.0", "", { "os": "win32", "cpu": "x64" }, "sha512-OJEo7f95YYaSuS1byUB7ZctbzxoA7/wCoAol+pt6pvfdW/8Wq+L1qU28glwx7dQ0HgTsnPZbWpXQwmZpCBHhZg=="], + "@astrojs/check": ["@astrojs/check@0.9.6", "", { "dependencies": { "@astrojs/language-server": "^2.16.1", "chokidar": "^4.0.1", "kleur": "^4.1.5", "yargs": "^17.7.2" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "astro-check": "bin/astro-check.js" } }, "sha512-jlaEu5SxvSgmfGIFfNgcn5/f+29H61NJzEMfAZ82Xopr4XBchXB1GVlcJsE+elUlsYSbXlptZLX+JMG3b/wZEA=="], "@astrojs/cloudflare": ["@astrojs/cloudflare@12.6.3", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.1", "@astrojs/underscore-redirects": "1.0.0", "@cloudflare/workers-types": "^4.20250507.0", "tinyglobby": "^0.2.13", "vite": "^6.3.5", "wrangler": "^4.14.1" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-xhJptF5tU2k5eo70nIMyL1Udma0CqmUEnGSlGyFflLqSY82CRQI6nWZ/xZt0ZvmXuErUjIx0YYQNfZsz5CNjLQ=="], "@astrojs/compiler": ["@astrojs/compiler@2.13.1", "", {}, "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg=="], + "@astrojs/compiler-binding": ["@astrojs/compiler-binding@0.3.1", "", { "optionalDependencies": { "@astrojs/compiler-binding-darwin-arm64": "0.3.1", "@astrojs/compiler-binding-darwin-x64": "0.3.1", "@astrojs/compiler-binding-linux-arm64-gnu": "0.3.1", "@astrojs/compiler-binding-linux-arm64-musl": "0.3.1", "@astrojs/compiler-binding-linux-x64-gnu": "0.3.1", "@astrojs/compiler-binding-linux-x64-musl": "0.3.1", "@astrojs/compiler-binding-wasm32-wasi": "0.3.1", "@astrojs/compiler-binding-win32-arm64-msvc": "0.3.1", "@astrojs/compiler-binding-win32-x64-msvc": "0.3.1" } }, "sha512-DaAUj29AIBU2XdJ8uwcab8lW5O2pk9pY8AXkcMw0sw77nVa3oeTYRcO+Dvbbpoexf6ThMc0FMWYCQ/wN1/T7oQ=="], + + "@astrojs/compiler-binding-darwin-arm64": ["@astrojs/compiler-binding-darwin-arm64@0.3.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-IEmEF2fUIlTHtpeE/isyEGVOB14cEyh/LZOFYt6wn3jNyVpdC8aR5OZ+RzFUR/f+8ZDM1LaMwZKvoA7eMyJeFw=="], + + "@astrojs/compiler-binding-darwin-x64": ["@astrojs/compiler-binding-darwin-x64@0.3.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-GF2kIxjpPDLsn94zbZNMsxEmkU828QqnmM7kiQJnaooS3jmI+I7kk6+oI6EpwOsK3femCMdcm+wmOsEqtGrmjQ=="], + + "@astrojs/compiler-binding-linux-arm64-gnu": ["@astrojs/compiler-binding-linux-arm64-gnu@0.3.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-XJL3SDmOtVrqFhCirNcHwE91+IesJqlgNo23I4qW9QUYfwzm/TBZuH61fgqsb1ttgR1mMYz6ooPWs0JDhwMqpQ=="], + + "@astrojs/compiler-binding-linux-arm64-musl": ["@astrojs/compiler-binding-linux-arm64-musl@0.3.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-xqE8BVbDoBueK/B47w30PtkVofUWJKGkwoMVE+EOMLf11rnoANxIAdA9FPqY+rng4oNI5ndHGsri1yPj2k8vZQ=="], + + "@astrojs/compiler-binding-linux-x64-gnu": ["@astrojs/compiler-binding-linux-x64-gnu@0.3.1", "", { "os": "linux", "cpu": "x64" }, "sha512-1y0StU1qiCuDFH3rmbRJXcxdfHxFPrES1Rd+RLffosvUR7I2cH5SF5SFnBN9vXpzpkmyElZm3Yr47iJBPN7vVA=="], + + "@astrojs/compiler-binding-linux-x64-musl": ["@astrojs/compiler-binding-linux-x64-musl@0.3.1", "", { "os": "linux", "cpu": "x64" }, "sha512-16q0fYf7kpbmdObZEeZJEup8hQv/whgNwVjrSvT8umrKwLDSnNIWiQpm09lQQu6bweZB0XyIvHwlPitvJhC+hg=="], + + "@astrojs/compiler-binding-wasm32-wasi": ["@astrojs/compiler-binding-wasm32-wasi@0.3.1", "", { "dependencies": { "@napi-rs/wasm-runtime": "^1.1.6" }, "cpu": "none" }, "sha512-cB456shIwDv/PrVT+2QG7LFndpHkVge5HjqADKZgGaAc9JHVktCtjSrcdkRQ+3tbkPazNKaTLRjXLIiz2NIx9g=="], + + "@astrojs/compiler-binding-win32-arm64-msvc": ["@astrojs/compiler-binding-win32-arm64-msvc@0.3.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-ur/9+If/yTE69mmeX5MqSZndL0HOyx67GeNZUy3N7wVdWpLz9UTJXwyWS4UR2PUQHitghjsM5xoX0Ge56WRVQQ=="], + + "@astrojs/compiler-binding-win32-x64-msvc": ["@astrojs/compiler-binding-win32-x64-msvc@0.3.1", "", { "os": "win32", "cpu": "x64" }, "sha512-k0W+kDBzDkNZOqu4kElDvCOIbKw5Ut9S1WZ1Krj3KTgNuBERNKXsMMsRLLcbgfdMdbe7bTekQLshZrrvmYpmwA=="], + + "@astrojs/compiler-rs": ["@astrojs/compiler-rs@0.3.1", "", { "dependencies": { "@astrojs/compiler-binding": "0.3.1" } }, "sha512-aT7xkgsbNoS6nriY5qKpbihK43slFHO41iqgHCTdOvn1ifaQxLCc5yXy+6GzAtiafoaC1zA7OwVXCXMsvUZOkg=="], + "@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.1", "", {}, "sha512-7dwEVigz9vUWDw3nRwLQ/yH/xYovlUA0ZD86xoeKEBmkz9O6iELG1yri67PgAPW6VLL/xInA4t7H0CK6VmtkKQ=="], - "@astrojs/language-server": ["@astrojs/language-server@2.16.10", "", { "dependencies": { "@astrojs/compiler": "^2.13.1", "@astrojs/yaml2ts": "^0.2.4", "@jridgewell/sourcemap-codec": "^1.5.5", "@volar/kit": "~2.4.28", "@volar/language-core": "~2.4.28", "@volar/language-server": "~2.4.28", "@volar/language-service": "~2.4.28", "muggle-string": "^0.4.1", "tinyglobby": "^0.2.16", "volar-service-css": "0.0.70", "volar-service-emmet": "0.0.70", "volar-service-html": "0.0.70", "volar-service-prettier": "0.0.70", "volar-service-typescript": "0.0.70", "volar-service-typescript-twoslash-queries": "0.0.70", "volar-service-yaml": "0.0.70", "vscode-html-languageservice": "^5.6.2", "vscode-uri": "^3.1.0" }, "peerDependencies": { "prettier": "^3.0.0", "prettier-plugin-astro": ">=0.11.0" }, "optionalPeers": ["prettier", "prettier-plugin-astro"], "bin": { "astro-ls": "./bin/nodeServer.js" } }, "sha512-87VQ/5GSdHlRnUA+hGuerYyIGAj+9RbZmATyuKLEUePinUXhQ5YkRnRrHhOD9sSi5JOErLjrLkHnfZFEvGrV8w=="], + "@astrojs/language-server": ["@astrojs/language-server@2.16.12", "", { "dependencies": { "@astrojs/compiler": "^2.13.1", "@astrojs/yaml2ts": "^0.2.4", "@jridgewell/sourcemap-codec": "^1.5.5", "@volar/kit": "~2.4.28", "@volar/language-core": "~2.4.28", "@volar/language-server": "~2.4.28", "@volar/language-service": "~2.4.28", "muggle-string": "^0.4.1", "tinyglobby": "^0.2.16", "volar-service-css": "0.0.71", "volar-service-emmet": "0.0.71", "volar-service-html": "0.0.71", "volar-service-prettier": "0.0.71", "volar-service-typescript": "0.0.71", "volar-service-typescript-twoslash-queries": "0.0.71", "volar-service-yaml": "0.0.71", "vscode-html-languageservice": "^5.6.2", "vscode-uri": "^3.1.0" }, "peerDependencies": { "prettier": "^3.0.0", "prettier-plugin-astro": ">=0.11.0" }, "optionalPeers": ["prettier", "prettier-plugin-astro"], "bin": { "astro-ls": "./bin/nodeServer.js" } }, "sha512-3LpFphBCzveUgm5ZVDINB/v3YA4TgPa1EMOEFn3Zt/Ww6jojR25iN+kmzeUz7v/b9xkmq+hMACTX4hizN3VCEQ=="], "@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/markdown-satteri": ["@astrojs/markdown-satteri@0.3.4", "", { "dependencies": { "@astrojs/internal-helpers": "0.10.1", "@astrojs/prism": "4.0.2", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "satteri": "^0.9.1" } }, "sha512-6Lvt/bQZEBW+zzdhPblvfZEy5PGEYJaUsUqaCgwHeRPxZJL1gc9I+DRLKWJjjYTWDzVUTzXlMq4WwSK+X34CVw=="], + "@astrojs/mdx": ["@astrojs/mdx@4.3.14", "", { "dependencies": { "@astrojs/markdown-remark": "6.3.11", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.15.0", "es-module-lexer": "^1.7.0", "estree-util-visit": "^2.0.0", "hast-util-to-html": "^9.0.5", "piccolore": "^0.1.3", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", "source-map": "^0.7.6", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-FBrqJQORVm+rkRa2TS5CjU9PBA6hkhrwLVBSS9A77gN2+iehvjq1w6yya/d0YKC7osiVorKkr3Qd9wNbl0ZkGA=="], + "@astrojs/node": ["@astrojs/node@11.0.2", "", { "dependencies": { "@astrojs/internal-helpers": "0.10.1", "send": "^1.2.1", "server-destroy": "^1.0.1" }, "peerDependencies": { "astro": "^7.0.0" } }, "sha512-/ijULxT+A5Cm8wSwWZ2vgqfim1b05D6B8n/a9l6MMA4FCotIH73g7fL7y76XojKXpTe75FVvQH92OxsMqea9kQ=="], + "@astrojs/prism": ["@astrojs/prism@3.2.0", "", { "dependencies": { "prismjs": "^1.29.0" } }, "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw=="], + "@astrojs/react": ["@astrojs/react@6.0.1", "", { "dependencies": { "@astrojs/internal-helpers": "0.10.1", "@vitejs/plugin-react": "^5.2.0", "devalue": "^5.8.1", "ultrahtml": "^1.6.0", "vite": "^8.0.13" }, "peerDependencies": { "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", "react": "^17.0.2 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" } }, "sha512-Afs1sEm72P2plDnrOGxmIteJ7bjx/VqxlcaQLNip5eHJ5tIvKUORQetC9UKcvgwKnj51t60HWl5mOANkOsWs4w=="], + "@astrojs/sitemap": ["@astrojs/sitemap@3.7.3", "", { "dependencies": { "sitemap": "^9.0.0", "stream-replace-string": "^2.0.0", "zod": "^4.3.6" } }, "sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA=="], "@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=="], @@ -1227,6 +1281,8 @@ "@astrojs/underscore-redirects": ["@astrojs/underscore-redirects@1.0.0", "", {}, "sha512-qZxHwVnmb5FXuvRsaIGaqWgnftjCuMY+GSbaVZdBmE4j8AfgPqKPxYp8SUERyJcjpKCEmO4wD6ybuGH8A2kVRQ=="], + "@astrojs/vercel": ["@astrojs/vercel@11.0.3", "", { "dependencies": { "@astrojs/internal-helpers": "0.10.1", "@vercel/analytics": "^1.6.1", "@vercel/functions": "^3.4.3", "@vercel/nft": "^1.3.2", "@vercel/routing-utils": "^5.3.3", "esbuild": "^0.28.0", "tinyglobby": "^0.2.15" }, "peerDependencies": { "astro": "^7.0.0" } }, "sha512-UMhcZ/lWB0/B2l1L8BJh6QxysjZt8SLS9e40xRfBdVhfi3Y6SIDw+99rY/+OGW/yem/S7sBRkvqvto8neevO2A=="], + "@astrojs/yaml2ts": ["@astrojs/yaml2ts@0.2.4", "", { "dependencies": { "yaml": "^2.8.3" } }, "sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A=="], "@aws-crypto/crc32": ["@aws-crypto/crc32@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg=="], @@ -1249,7 +1305,7 @@ "@aws-sdk/client-firehose": ["@aws-sdk/client-firehose@3.933.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.932.0", "@aws-sdk/credential-provider-node": "3.933.0", "@aws-sdk/middleware-host-header": "3.930.0", "@aws-sdk/middleware-logger": "3.930.0", "@aws-sdk/middleware-recursion-detection": "3.933.0", "@aws-sdk/middleware-user-agent": "3.932.0", "@aws-sdk/region-config-resolver": "3.930.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@aws-sdk/util-user-agent-browser": "3.930.0", "@aws-sdk/util-user-agent-node": "3.932.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.2", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", "@smithy/middleware-endpoint": "^4.3.9", "@smithy/middleware-retry": "^4.4.9", "@smithy/middleware-serde": "^4.2.5", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", "@smithy/smithy-client": "^4.9.5", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.8", "@smithy/util-defaults-mode-node": "^4.2.11", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-tDrtgczN2lQsflLDPYu/wdOoyCZLVYtgzmWnYzSEOBWd/cp2AbuQ7D+FemSwUTzyoMTuhhIevyEJKzqsF+QYxA=="], - "@aws-sdk/client-lambda": ["@aws-sdk/client-lambda@3.1057.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.974.15", "@aws-sdk/credential-provider-node": "^3.972.47", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/fetch-http-handler": "^5.4.5", "@smithy/node-http-handler": "^4.7.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-JoaE3QNvPqOSHJtcAFfza7BRoGUNerIKlSVhsKCBsa1i54Vto1YWUS7itkUELK2rpvS8kNZMPliPxDdi/oV5dw=="], + "@aws-sdk/client-lambda": ["@aws-sdk/client-lambda@3.1090.0", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/credential-provider-node": "^3.972.70", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-Gu4bEgTr+f859KLdPkjINhzBCxwQctSmoJ3I5XlVdFGt565w6UCI5tw4sEbC+qltq1RMoORTTRjrbL5jExANaA=="], "@aws-sdk/client-s3": ["@aws-sdk/client-s3@3.933.0", "", { "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.932.0", "@aws-sdk/credential-provider-node": "3.933.0", "@aws-sdk/middleware-bucket-endpoint": "3.930.0", "@aws-sdk/middleware-expect-continue": "3.930.0", "@aws-sdk/middleware-flexible-checksums": "3.932.0", "@aws-sdk/middleware-host-header": "3.930.0", "@aws-sdk/middleware-location-constraint": "3.930.0", "@aws-sdk/middleware-logger": "3.930.0", "@aws-sdk/middleware-recursion-detection": "3.933.0", "@aws-sdk/middleware-sdk-s3": "3.932.0", "@aws-sdk/middleware-ssec": "3.930.0", "@aws-sdk/middleware-user-agent": "3.932.0", "@aws-sdk/region-config-resolver": "3.930.0", "@aws-sdk/signature-v4-multi-region": "3.932.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@aws-sdk/util-user-agent-browser": "3.930.0", "@aws-sdk/util-user-agent-node": "3.932.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.2", "@smithy/eventstream-serde-browser": "^4.2.5", "@smithy/eventstream-serde-config-resolver": "^4.3.5", "@smithy/eventstream-serde-node": "^4.2.5", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-blob-browser": "^4.2.6", "@smithy/hash-node": "^4.2.5", "@smithy/hash-stream-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/md5-js": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", "@smithy/middleware-endpoint": "^4.3.9", "@smithy/middleware-retry": "^4.4.9", "@smithy/middleware-serde": "^4.2.5", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", "@smithy/smithy-client": "^4.9.5", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.8", "@smithy/util-defaults-mode-node": "^4.2.11", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", "@smithy/util-stream": "^4.5.6", "@smithy/util-utf8": "^4.2.0", "@smithy/util-waiter": "^4.2.5", "tslib": "^2.6.2" } }, "sha512-KxwZvdxdCeWK6o8mpnb+kk7Kgb8V+8AjTwSXUWH1UAD85B0tjdo1cSfE5zoR5fWGol4Ml5RLez12a6LPhsoTqA=="], @@ -1259,23 +1315,23 @@ "@aws-sdk/core": ["@aws-sdk/core@3.932.0", "", { "dependencies": { "@aws-sdk/types": "3.930.0", "@aws-sdk/xml-builder": "3.930.0", "@smithy/core": "^3.18.2", "@smithy/node-config-provider": "^4.3.5", "@smithy/property-provider": "^4.2.5", "@smithy/protocol-http": "^5.3.5", "@smithy/signature-v4": "^5.3.5", "@smithy/smithy-client": "^4.9.5", "@smithy/types": "^4.9.0", "@smithy/util-base64": "^4.3.0", "@smithy/util-middleware": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-AS8gypYQCbNojwgjvZGkJocC2CoEICDx9ZJ15ILsv+MlcCVLtUJSRSx3VzJOUY2EEIaGLRrPNlIqyn/9/fySvA=="], - "@aws-sdk/credential-provider-cognito-identity": ["@aws-sdk/credential-provider-cognito-identity@3.972.38", "", { "dependencies": { "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-OHkK6xOx/IHkSbQdDWxnVCLU+j28EFl8wyWgBILQDFAPY8n240C/O4gjmFx+zFU12lL8njgJQ5GWAIWq88CnSQ=="], + "@aws-sdk/credential-provider-cognito-identity": ["@aws-sdk/credential-provider-cognito-identity@3.972.58", "", { "dependencies": { "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-s5uoABv5eOzuH/S+XngHjHSrY8mK0UTBUFs8pm1ynBNuxXmYp176zarDyxN9lUS3Rry0wjzNvJUV09QROaO98g=="], - "@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.972.41", "", { "dependencies": { "@aws-sdk/core": "^3.974.15", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-n1EbJ98yvPWWdHZZv8bRBMqqDQJrtgtxyJ4xLy2Uqrh25BCOZQ7nnS1CsFXvuH8r0b0KVHDZEGEH5FxmEMP8jg=="], + "@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.972.59", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-Ny5e4Mfh3QPmiAc0AiUe+cbTXDlxkU3Rc+EpWOfyWeWEy6yp7Fa1KmfNeCc+1a8by9zQ9gtohmiQUkMPScF3ng=="], - "@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.972.43", "", { "dependencies": { "@aws-sdk/core": "^3.974.15", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/fetch-http-handler": "^5.4.5", "@smithy/node-http-handler": "^4.7.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-TT76RN1NkI9WoyZqCNxOw6/WBMF7pYOTJcXbMokNFU+euSG40Kaf/t/FhDACVZWP+43wEM6ZynIPIkzS1wR1iA=="], + "@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.972.61", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-8jAjgStl5Ytq4+HF3X/9f+EmRinaRbGRRtQGktlPfBRVx73H+R1y48vIeXerQtYGFaUqkEp3fT6jP854rVO2yQ=="], - "@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.972.46", "", { "dependencies": { "@aws-sdk/core": "^3.974.15", "@aws-sdk/credential-provider-env": "^3.972.41", "@aws-sdk/credential-provider-http": "^3.972.43", "@aws-sdk/credential-provider-login": "^3.972.45", "@aws-sdk/credential-provider-process": "^3.972.41", "@aws-sdk/credential-provider-sso": "^3.972.45", "@aws-sdk/credential-provider-web-identity": "^3.972.45", "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/credential-provider-imds": "^4.3.6", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-hvcgcwOiS0nb2XFb5Op1Pz/vYaWz5K8kKullziGpdNRuG0NwzRXseuPt2CoBqknHGaSPVesu1aOn2OcctEYdCA=="], + "@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.973.4", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/credential-provider-env": "^3.972.59", "@aws-sdk/credential-provider-http": "^3.972.61", "@aws-sdk/credential-provider-login": "^3.972.66", "@aws-sdk/credential-provider-process": "^3.972.59", "@aws-sdk/credential-provider-sso": "^3.973.3", "@aws-sdk/credential-provider-web-identity": "^3.972.65", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/credential-provider-imds": "^4.4.9", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-e6ZvVsj90aRALf1kHP+J4iqC1496ZpVgqI/+u0LJ5HL7q7ATauGy4gdDvRCP13L1pN/fMiZLah162PGIYkbUVQ=="], - "@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.45", "", { "dependencies": { "@aws-sdk/core": "^3.974.15", "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-MZQv4SNjByk1iOKmrqmzcUF/uCB05wjvEHyXKxmGQTUANTIVayX6HPUF0bzkWLvtnkH7sAn9kUCfkXbSpj9sDA=="], + "@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.66", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-g2fsqm87r/nKthLZ0VkkDBElkGg0PvSa8d97HQ6EilMbJTZ6hxa8FxkSZyJfgPfFdZn0TTmkOffQmTSUcAHIng=="], "@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.933.0", "", { "dependencies": { "@aws-sdk/credential-provider-env": "3.932.0", "@aws-sdk/credential-provider-http": "3.932.0", "@aws-sdk/credential-provider-ini": "3.933.0", "@aws-sdk/credential-provider-process": "3.932.0", "@aws-sdk/credential-provider-sso": "3.933.0", "@aws-sdk/credential-provider-web-identity": "3.933.0", "@aws-sdk/types": "3.930.0", "@smithy/credential-provider-imds": "^4.2.5", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-L2dE0Y7iMLammQewPKNeEh1z/fdJyYEU+/QsLBD9VEh+SXcN/FIyTi21Isw8wPZN6lMB9PDVtISzBnF8HuSFrw=="], - "@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.972.41", "", { "dependencies": { "@aws-sdk/core": "^3.974.15", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-7I/n1zkysouLOWvkEhjNEP4vMnD2v4kzzr3/3QBdrripEpn7ap1/I5DF3Hou1SUqkKWo1f3oPGMyFAA1FAMvsQ=="], + "@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.972.59", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-DlZF2/MhLlatDdlrIy3CUCpfdbLrKx+3SMjVo+WyHnPpwzkc/M3vwAHw4OVJf7DMvO+4vfRqSCMc/E9I1auN0g=="], - "@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.972.45", "", { "dependencies": { "@aws-sdk/core": "^3.974.15", "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/token-providers": "3.1056.0", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-oHgbz/eFD8IKiksqDsz9ZMU4A59BpQq4QwJedBnGD80ZqYcHPPHZBwjBnxLVkB7iRVVHWpDclR8yWdD2PkQIUA=="], + "@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.973.3", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/token-providers": "3.1088.0", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-hmdDHoy2G5Es2e8IgelNMYUuSQI6uCIAKZMJ2u2PdKDhxvbk1uWD/g4+R7R5c/tJfKEB1+KjjWiaoCr/S+ZTiQ=="], - "@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.45", "", { "dependencies": { "@aws-sdk/core": "^3.974.15", "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-CDhzKdb2onv5bpnjn/acgdNmJOQthPDLsPizU7rZflsEcgMMp8Mlri+U5hdxf8ldvZJpvM3vLU6D56vfJm5AMQ=="], + "@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.65", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-gHQb/Kt0chjk/JQDa/GJDqmAvEuVn8n7z10wK2h0LFM9TUDRkohgOO4aEF+s2sBLM0br7Cl5W6P7phgjrrJvLQ=="], "@aws-sdk/credential-providers": ["@aws-sdk/credential-providers@3.1057.0", "", { "dependencies": { "@aws-sdk/client-cognito-identity": "3.1057.0", "@aws-sdk/core": "^3.974.15", "@aws-sdk/credential-provider-cognito-identity": "^3.972.38", "@aws-sdk/credential-provider-env": "^3.972.41", "@aws-sdk/credential-provider-http": "^3.972.43", "@aws-sdk/credential-provider-ini": "^3.972.46", "@aws-sdk/credential-provider-login": "^3.972.45", "@aws-sdk/credential-provider-node": "^3.972.47", "@aws-sdk/credential-provider-process": "^3.972.41", "@aws-sdk/credential-provider-sso": "^3.972.45", "@aws-sdk/credential-provider-web-identity": "^3.972.45", "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/credential-provider-imds": "^4.3.6", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-rbrEHtz11g0kxsSkYr3fx2HABNNblp4AhB2MgPvJHgYOWfJ2eBviU7Mvoaef0PW8QH6lbZDfJcnM7eKvtvz3sw=="], @@ -1299,13 +1355,13 @@ "@aws-sdk/middleware-user-agent": ["@aws-sdk/middleware-user-agent@3.932.0", "", { "dependencies": { "@aws-sdk/core": "3.932.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@smithy/core": "^3.18.2", "@smithy/protocol-http": "^5.3.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-9BGTbJyA/4PTdwQWE9hAFIJGpsYkyEW20WON3i15aDqo5oRZwZmqaVageOD57YYqG8JDJjvcwKyDdR4cc38dvg=="], - "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.13", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "^3.974.15", "@aws-sdk/signature-v4-multi-region": "^3.996.30", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/fetch-http-handler": "^5.4.5", "@smithy/node-http-handler": "^4.7.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-2pA6eyb5nSo/ZD2cayhOTEMoGQYgspq0RI05GDLkzQ3ajZ6isS6waV6E92Am/hz4LIlLUTrbwPLurJ/fuiHvkg=="], + "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.33", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/signature-v4-multi-region": "^3.996.41", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-dVZOroI/r3/ENvqNGgjMPul+jjlz9GddfVusgTXlVjfZj5isibOxecLkGQbRPp8XOuX+RAfjXLFgPkD1JS5xrw=="], "@aws-sdk/region-config-resolver": ["@aws-sdk/region-config-resolver@3.930.0", "", { "dependencies": { "@aws-sdk/types": "3.930.0", "@smithy/config-resolver": "^4.4.3", "@smithy/node-config-provider": "^4.3.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-KL2JZqH6aYeQssu1g1KuWsReupdfOoxD6f1as2VC+rdwYFUu4LfzMsFfXnBvvQWWqQ7rZHWOw1T+o5gJmg7Dzw=="], "@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.932.0", "", { "dependencies": { "@aws-sdk/middleware-sdk-s3": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/protocol-http": "^5.3.5", "@smithy/signature-v4": "^5.3.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-NCIRJvoRc9246RZHIusY1+n/neeG2yGhBGdKhghmrNdM+mLLN6Ii7CKFZjx3DhxtpHMpl1HWLTMhdVrGwP2upw=="], - "@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1056.0", "", { "dependencies": { "@aws-sdk/core": "^3.974.15", "@aws-sdk/nested-clients": "^3.997.13", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-81duvlltQlsfn5K+o8zILcystBRdbT1G2JJYVCML5NZHBz4CL/zf+sAemCtBh/uh6RQUMyInGeZLQ7/8igZhbA=="], + "@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1088.0", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-4ObatWt2qpJg5FBk4LOOKrTQYzaqeewAtdO3r9ZO8lH9YqLtpTzLyIdy0mJ+nVdfYOnqISkKNfmzP22bNDhwyw=="], "@aws-sdk/types": ["@aws-sdk/types@3.930.0", "", { "dependencies": { "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-we/vaAgwlEFW7IeftmCLlLMw+6hFs3DzZPJw7lVHbj/5HJ0bz9gndxEsS2lQoeJ1zhiiLqAqvXxmM43s0MBg0A=="], @@ -1313,7 +1369,7 @@ "@aws-sdk/util-endpoints": ["@aws-sdk/util-endpoints@3.930.0", "", { "dependencies": { "@aws-sdk/types": "3.930.0", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-endpoints": "^3.2.5", "tslib": "^2.6.2" } }, "sha512-M2oEKBzzNAYr136RRc6uqw3aWlwCxqTP1Lawps9E1d2abRPvl1p1ztQmmXp1Ak4rv8eByIZ+yQyKQ3zPdRG5dw=="], - "@aws-sdk/util-locate-window": ["@aws-sdk/util-locate-window@3.965.5", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ=="], + "@aws-sdk/util-locate-window": ["@aws-sdk/util-locate-window@3.965.8", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-uUbMs1cBZPafD0ohUj6EwNf0fPZ534NvBxHox4hjX+0Rxq5paSYUem7+hi833pYrzrcnBATKIYpR02MDXT5M9g=="], "@aws-sdk/util-user-agent-browser": ["@aws-sdk/util-user-agent-browser@3.930.0", "", { "dependencies": { "@aws-sdk/types": "3.930.0", "@smithy/types": "^4.9.0", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-q6lCRm6UAe+e1LguM5E4EqM9brQlDem4XDcQ87NzEvlTW6GzmNCO0w1jS0XgCFXQHjDxjdlNFX+5sRbHijwklg=="], @@ -1325,39 +1381,39 @@ "@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.2.4", "", {}, "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ=="], - "@azure/abort-controller": ["@azure/abort-controller@2.1.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA=="], + "@azure/abort-controller": ["@azure/abort-controller@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-fNAjWnA/nZ2jz31kxR/AqRaUT8ewHBw/WuBIosK0moMy1C9e5ValbDfFdIxJzVOOYaYkV/b2F1S4H/aHiqfVQg=="], - "@azure/core-auth": ["@azure/core-auth@1.10.1", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-util": "^1.13.0", "tslib": "^2.6.2" } }, "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg=="], + "@azure/core-auth": ["@azure/core-auth@1.11.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-util": "^1.13.0", "tslib": "^2.6.2" } }, "sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg=="], - "@azure/core-client": ["@azure/core-client@1.10.1", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", "@azure/core-rest-pipeline": "^1.22.0", "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", "tslib": "^2.6.2" } }, "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w=="], + "@azure/core-client": ["@azure/core-client@1.11.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", "@azure/core-rest-pipeline": "^1.22.0", "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", "tslib": "^2.6.2" } }, "sha512-JjQWO6akOck45PH/XBrxzsQGAiKrfFl4m5iggJ0ItMIz5omRufOXWpqCPpdjKN3vKDzlSUvFjaMb7Zwf0gvAdA=="], "@azure/core-http": ["@azure/core-http@3.0.5", "", { "dependencies": { "@azure/abort-controller": "^1.0.0", "@azure/core-auth": "^1.3.0", "@azure/core-tracing": "1.0.0-preview.13", "@azure/core-util": "^1.1.1", "@azure/logger": "^1.0.0", "@types/node-fetch": "^2.5.0", "@types/tunnel": "^0.0.3", "form-data": "^4.0.0", "node-fetch": "^2.6.7", "process": "^0.11.10", "tslib": "^2.2.0", "tunnel": "^0.0.6", "uuid": "^8.3.0", "xml2js": "^0.5.0" } }, "sha512-T8r2q/c3DxNu6mEJfPuJtptUVqwchxzjj32gKcnMi06rdiVONS9rar7kT9T2Am+XvER7uOzpsP79WsqNbdgdWg=="], - "@azure/core-http-compat": ["@azure/core-http-compat@2.4.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2" }, "peerDependencies": { "@azure/core-client": "^1.10.0", "@azure/core-rest-pipeline": "^1.22.0" } }, "sha512-f1P96IB399YiN2ARYHP7EpZi3Bf3wH4SN2lGzrw7JVwm7bbsVYtf2iKSBwTywD2P62NOPZGHFSZi+6jjb75JuA=="], + "@azure/core-http-compat": ["@azure/core-http-compat@2.5.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2" }, "peerDependencies": { "@azure/core-client": "^1.10.0", "@azure/core-rest-pipeline": "^1.22.0" } }, "sha512-BoSmXPx2er1Ai+wKlDvj29jIQespCNBwEmKyZVHO2kEFsWbGjAjwMCGzug3DJM5/QYIV3vej0S1zcU5bq9fa8w=="], "@azure/core-lro": ["@azure/core-lro@2.7.2", "", { "dependencies": { "@azure/abort-controller": "^2.0.0", "@azure/core-util": "^1.2.0", "@azure/logger": "^1.0.0", "tslib": "^2.6.2" } }, "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw=="], - "@azure/core-paging": ["@azure/core-paging@1.6.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA=="], + "@azure/core-paging": ["@azure/core-paging@1.7.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-7GEAoIsaoBr6KELNRb8nypowCqvk8dnCHFCYg4XD4lOQGY2GqjQg5IhkRjyBFRO18CGSMq05PaNqSOE9GQro3g=="], - "@azure/core-rest-pipeline": ["@azure/core-rest-pipeline@1.23.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", "@typespec/ts-http-runtime": "^0.3.4", "tslib": "^2.6.2" } }, "sha512-Evs1INHo+jUjwHi1T6SG6Ua/LHOQBCLuKEEE6efIpt4ZOoNonaT1kP32GoOcdNDbfqsD2445CPri3MubBy5DEQ=="], + "@azure/core-rest-pipeline": ["@azure/core-rest-pipeline@1.25.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.10.0", "@azure/core-tracing": "^1.3.0", "@azure/core-util": "^1.13.0", "@azure/logger": "^1.3.0", "@typespec/ts-http-runtime": "^0.3.4", "tslib": "^2.6.2" } }, "sha512-bMs8ekJLjX8wPV+9IPBges1SLPyuDtE9g5gLDWOpxzKcoOFQnpLGkbcT1tdw3FaAmDS1gnPmMmJ6y/T5B96kIA=="], - "@azure/core-tracing": ["@azure/core-tracing@1.3.1", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ=="], + "@azure/core-tracing": ["@azure/core-tracing@1.4.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-eGwxD0AtncrxeBM4tG8R55Pc3rdX1hNW2WibJAgYpCVA6E93mvvVH+LcssoVjOBrSKWS55yEIHsk0X8ctHmfOQ=="], - "@azure/core-util": ["@azure/core-util@1.13.1", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A=="], + "@azure/core-util": ["@azure/core-util@1.14.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, "sha512-9n2pWK61veAuN0V20t9lOuoV4CFMdyAZ1ygZzvBGk/pBBJRib/PjL9PLXa/aI2CcPpyHfqVsxxqLCYl6uZlfDw=="], - "@azure/core-xml": ["@azure/core-xml@1.5.1", "", { "dependencies": { "fast-xml-parser": "^5.5.9", "tslib": "^2.8.1" } }, "sha512-xcNRHqCoSp4AunOALEae6A8f3qATb83gSrm31Iqb01OzblvC3/W/bfXozcq78EzIdzZzuH1bZ2NvRR0TdX709w=="], + "@azure/core-xml": ["@azure/core-xml@1.6.0", "", { "dependencies": { "fast-xml-parser": "^5.5.9", "tslib": "^2.8.1" } }, "sha512-e7lX/dk//F6Qf7BB6PTY4+p2yuOQtyOeHGyapYHNwqSp2OnYpwQt49A/Nin2XmKBQ69pwagR4k/lQBq8lbHQkA=="], - "@azure/logger": ["@azure/logger@1.3.0", "", { "dependencies": { "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA=="], + "@azure/logger": ["@azure/logger@1.4.0", "", { "dependencies": { "@typespec/ts-http-runtime": "^0.3.0", "tslib": "^2.6.2" } }, "sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA=="], - "@azure/storage-blob": ["@azure/storage-blob@12.31.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.9.0", "@azure/core-client": "^1.9.3", "@azure/core-http-compat": "^2.2.0", "@azure/core-lro": "^2.2.0", "@azure/core-paging": "^1.6.2", "@azure/core-rest-pipeline": "^1.19.1", "@azure/core-tracing": "^1.2.0", "@azure/core-util": "^1.11.0", "@azure/core-xml": "^1.4.5", "@azure/logger": "^1.1.4", "@azure/storage-common": "^12.3.0", "events": "^3.0.0", "tslib": "^2.8.1" } }, "sha512-DBgNv10aCSxopt92DkTDD0o9xScXeBqPKGmR50FPZQaEcH4JLQ+GEOGEDv19V5BMkB7kxr+m4h6il/cCDPvmHg=="], + "@azure/storage-blob": ["@azure/storage-blob@12.33.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.9.0", "@azure/core-client": "^1.9.3", "@azure/core-http-compat": "^2.2.0", "@azure/core-lro": "^2.2.0", "@azure/core-paging": "^1.6.2", "@azure/core-rest-pipeline": "^1.19.1", "@azure/core-tracing": "^1.2.0", "@azure/core-util": "^1.11.0", "@azure/core-xml": "^1.4.5", "@azure/logger": "^1.1.4", "@azure/storage-common": "^12.4.1", "events": "^3.0.0", "tslib": "^2.8.1" } }, "sha512-2SX8oP8PyblUcAFZSg39c8Ls+tFjavM6sBeV+qpw33mRzRhI/5hrFJmJ/x0H9xx5l6ECPvgSP8uPxqTeVbHNIA=="], - "@azure/storage-common": ["@azure/storage-common@12.3.0", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.9.0", "@azure/core-http-compat": "^2.2.0", "@azure/core-rest-pipeline": "^1.19.1", "@azure/core-tracing": "^1.2.0", "@azure/core-util": "^1.11.0", "@azure/logger": "^1.1.4", "events": "^3.3.0", "tslib": "^2.8.1" } }, "sha512-/OFHhy86aG5Pe8dP5tsp+BuJ25JOAl9yaMU3WZbkeoiFMHFtJ7tu5ili7qEdBXNW9G5lDB19trwyI6V49F/8iQ=="], + "@azure/storage-common": ["@azure/storage-common@12.4.1", "", { "dependencies": { "@azure/abort-controller": "^2.1.2", "@azure/core-auth": "^1.9.0", "@azure/core-http-compat": "^2.2.0", "@azure/core-rest-pipeline": "^1.24.0", "@azure/core-tracing": "^1.2.0", "@azure/core-util": "^1.11.0", "@azure/logger": "^1.1.4", "events": "^3.3.0", "tslib": "^2.8.1" } }, "sha512-t14unw/WofGDUi7TKJrsyXyPsN+NLgRm7hMaq0llxNmTIzt7f257+6LE6FKIJPh88zLj6M7LPvzve0fEYg/L3A=="], "@babel/code-frame": ["@babel/code-frame@7.29.7", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.29.7", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw=="], "@babel/compat-data": ["@babel/compat-data@7.29.7", "", {}, "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg=="], - "@babel/core": ["@babel/core@7.28.4", "", { "dependencies": { "@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.4", "@babel/parser": "^7.28.4", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.4", "@babel/types": "^7.28.4", "@jridgewell/remapping": "^2.3.5", "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-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA=="], + "@babel/core": ["@babel/core@7.29.7", "", { "dependencies": { "@babel/code-frame": "^7.29.7", "@babel/generator": "^7.29.7", "@babel/helper-compilation-targets": "^7.29.7", "@babel/helper-module-transforms": "^7.29.7", "@babel/helpers": "^7.29.7", "@babel/parser": "^7.29.7", "@babel/template": "^7.29.7", "@babel/traverse": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/remapping": "^2.3.5", "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-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA=="], "@babel/generator": ["@babel/generator@7.29.7", "", { "dependencies": { "@babel/parser": "^7.29.7", "@babel/types": "^7.29.7", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ=="], @@ -1417,14 +1473,34 @@ "@babel/types": ["@babel/types@7.29.7", "", { "dependencies": { "@babel/helper-string-parser": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7" } }, "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA=="], - "@bcoe/v8-coverage": ["@bcoe/v8-coverage@1.0.2", "", {}, "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA=="], + "@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.2", "", {}, "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA=="], + + "@bruits/satteri-darwin-arm64": ["@bruits/satteri-darwin-arm64@0.9.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow=="], + + "@bruits/satteri-darwin-x64": ["@bruits/satteri-darwin-x64@0.9.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-6T26Z5Kf3cFW2PSlk9p7zT7yVxvuBSiJvYyz9u8KjYwMTqZyIDOj2wDyNpxKV4+6yUVG7rddq2QwvG/8LJA2+Q=="], - "@bufbuild/protobuf": ["@bufbuild/protobuf@2.12.0", "", {}, "sha512-B/XlCaFIP8LOwzo+bz5uFzATYokcwCKQcghqnlfwSmM5eX/qTkvDBnDPs+gXtX/RyjxJ4DRikECcPJbyALA8FA=="], + "@bruits/satteri-linux-arm64-gnu": ["@bruits/satteri-linux-arm64-gnu@0.9.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-u51id17uJwNEMK9nBlICsq6U31c+XVqQueVBkwRIzZG+gMpS8TOJctt5h5Wz33Z8xnMdTd+adtACVz0yHgGuOA=="], - "@bufbuild/protoplugin": ["@bufbuild/protoplugin@2.12.0", "", { "dependencies": { "@bufbuild/protobuf": "2.12.0", "@typescript/vfs": "^1.6.2", "typescript": "5.4.5" } }, "sha512-ORlDITp8AFUXzIhLRoMCG+ud+D3MPKWb5HQXBoskMMnjeyEjE1H1qLonVNPyOr8lkx3xSfYUo8a0dvOZJVAzow=="], + "@bruits/satteri-linux-arm64-musl": ["@bruits/satteri-linux-arm64-musl@0.9.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-v39HxiwGC5Rqm01HksP6+5Y+xKLPlsuVFgIgpEAo+SiQ22c+mJVhS3u7Z6ePAKdhL5NJoK1xq70kLz3L13AhpQ=="], + + "@bruits/satteri-linux-x64-gnu": ["@bruits/satteri-linux-x64-gnu@0.9.5", "", { "os": "linux", "cpu": "x64" }, "sha512-F3uO8uFp3pAP5ZGXttwvh57GS7s0lL953tnNdyI2gRyP4kOOkp6pyGojNJzCjkDvWI2Cvb9iNrKok3aqQPauAw=="], + + "@bruits/satteri-linux-x64-musl": ["@bruits/satteri-linux-x64-musl@0.9.5", "", { "os": "linux", "cpu": "x64" }, "sha512-bicEqglLlz++mWyADaZoP0JY20s4vDfLjaPYgQqC+NI4zZLTOOg1T4GB8aqtc822Pqji8SQBmSrTb7CrP8i08Q=="], + + "@bruits/satteri-wasm32-wasi": ["@bruits/satteri-wasm32-wasi@0.9.5", "", { "dependencies": { "@emnapi/core": "1.11.1", "@emnapi/runtime": "1.11.1", "@napi-rs/wasm-runtime": "^1.1.6" }, "cpu": "none" }, "sha512-zauAuMwfPnKPUkd4AFixRFpXdgKwP2mKgxrIIo2gJzW0/ZneF9dbHnLkojSpaBnCCp7VUL1hIi5WWZvB1CqmAQ=="], + + "@bruits/satteri-win32-arm64-msvc": ["@bruits/satteri-win32-arm64-msvc@0.9.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-SrfE7NEsgZjBvU3c+RR6oQRu0ToXY5uVJEbieXEF0YTctIV2zAVlbaMjWLts074QCgh3a+XHWkR/lWh2VH2LUg=="], + + "@bruits/satteri-win32-x64-msvc": ["@bruits/satteri-win32-x64-msvc@0.9.5", "", { "os": "win32", "cpu": "x64" }, "sha512-5Kw9ZAtTGS8WHizyn+CJhjjfIQrw+7jcZodpmpXJjefnO15M8UexIi6JR2E5thyvsmHyhL6ZDDMUNR4bKJPd4g=="], + + "@bufbuild/protobuf": ["@bufbuild/protobuf@2.12.1", "", {}, "sha512-BvAMfS6LrgZiryOAZ4pBYucu4wG/Ei/9o9DZ9akbREnMLbPJiom2i8b9C8IsKErQoiKqVhrerzt3kOT/RrzLHg=="], + + "@bufbuild/protoplugin": ["@bufbuild/protoplugin@2.12.1", "", { "dependencies": { "@bufbuild/protobuf": "2.12.1", "@typescript/vfs": "^1.6.2", "typescript": "5.4.5" } }, "sha512-PY58KxQVAD1BnnKtStOctsMoegEVGfBnY5AOqVQOIu711nA13oYtTqJM8df5lUQg2J1DR3XxUXptE+fWX5oLdA=="], "@capsizecss/unpack": ["@capsizecss/unpack@2.4.0", "", { "dependencies": { "blob-to-buffer": "^1.2.8", "cross-fetch": "^3.0.4", "fontkit": "^2.0.2" } }, "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q=="], + "@chevrotain/types": ["@chevrotain/types@11.1.2", "", {}, "sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw=="], + "@clack/core": ["@clack/core@1.0.0-alpha.1", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-rFbCU83JnN7l3W1nfgCqqme4ZZvTTgsiKQ6FM0l+r0P+o2eJpExcocBUWUIwnDzL76Aca9VhUdWmB2MbUv+Qyg=="], "@clack/prompts": ["@clack/prompts@1.0.0-alpha.1", "", { "dependencies": { "@clack/core": "1.0.0-alpha.1", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-07MNT0OsxjKOcyVfX8KhXBhJiyUbDP1vuIAcHc+nx5v93MJO23pX3X/k3bWz6T3rpM9dgWPq90i4Jq7gZAyMbw=="], @@ -1447,14 +1523,16 @@ "@cloudflare/workers-types": ["@cloudflare/workers-types@4.20251008.0", "", {}, "sha512-dZLkO4PbCL0qcCSKzuW7KE4GYe49lI12LCfQ5y9XeSwgYBoAUbwH4gmJ6A0qUIURiTJTkGkRkhVPqpq2XNgYRA=="], + "@corvu/dialog": ["@corvu/dialog@0.2.4", "", { "dependencies": { "@corvu/utils": "~0.4.2", "solid-dismissible": "~0.1.1", "solid-focus-trap": "~0.1.8", "solid-presence": "~0.2.0", "solid-prevent-scroll": "~0.1.10" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-n54vJq+fOy8GVrnYBdJpD6JXNuyx7LOeMrRxwzAvZnYGpW8+AA12tnb/P/2emJj/HjOO5otheGKb0breshdFlA=="], + + "@corvu/drawer": ["@corvu/drawer@0.2.4", "", { "dependencies": { "@corvu/dialog": "~0.2.4", "@corvu/utils": "~0.4.2", "@solid-primitives/memo": "^1.4.1", "solid-transition-size": "~0.1.4" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-7jQoGZ8ROB9CmXam2nMY2wEskU3IoFwZQywkF/7vrBc/edGsPv7mOVQ1GN6G+4nd7nrMZ3UtqHAhmRh9V0azlw=="], + "@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.2.0", "", {}, "sha512-kzyuwOAQnXJNLS9PSyrk0CWk35nWJW/zl/6KvnTBMFK65gm7U1/Z5BqjxeapjZCIhQcM/DsrEmcbRwDyXyXK4A=="], - "@develar/schema-utils": ["@develar/schema-utils@2.6.5", "", { "dependencies": { "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" } }, "sha512-0cp4PsWQ/9avqTVMCtZ+GirikIA36ikvjtHweU4/j8yLtgObI0+JUPhYFScgwlteveGB1rt3Cm8UhN04XayDig=="], - "@dnd-kit/abstract": ["@dnd-kit/abstract@0.5.0", "", { "dependencies": { "@dnd-kit/geometry": "^0.5.0", "@dnd-kit/state": "^0.5.0", "tslib": "^2.6.2" } }, "sha512-hi13iMJgjPX/KDYVKg5VeDIhmYiV6buc9bAX+tCLYf4QdyYjPbsXjn2sPo6m7fQ6SGJBEFgHJ2PemeKDUbwBaA=="], "@dnd-kit/collision": ["@dnd-kit/collision@0.5.0", "", { "dependencies": { "@dnd-kit/abstract": "^0.5.0", "@dnd-kit/geometry": "^0.5.0", "tslib": "^2.6.2" } }, "sha512-xUqRn3lS7oqLkT0AnnHS/STh/Czvwe1UapZFYiLbsUGxopMsQd4teaPCzPouOThoMdGEe+dHWjfqJl6t9iG4mQ=="], @@ -1473,13 +1551,13 @@ "@drizzle-team/brocli": ["@drizzle-team/brocli@0.11.0", "", {}, "sha512-hD3pekGiPg0WPCCGAZmusBBJsDqGUR66Y452YgQsZOnkdQ7ViEPKuyP4huUGEZQefp8g34RRodXYmJ2TbCH+tg=="], - "@effect/opentelemetry": ["@effect/opentelemetry@4.0.0-beta.83", "", { "peerDependencies": { "@opentelemetry/api": "^1.9", "@opentelemetry/api-logs": ">=0.203.0 <0.300.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-logs": ">=0.203.0 <0.300.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.33.0", "effect": "^4.0.0-beta.83" }, "optionalPeers": ["@opentelemetry/api", "@opentelemetry/api-logs", "@opentelemetry/resources", "@opentelemetry/sdk-logs", "@opentelemetry/sdk-metrics", "@opentelemetry/sdk-trace-base", "@opentelemetry/sdk-trace-node", "@opentelemetry/sdk-trace-web"] }, "sha512-cPfCfp/ghu0itbX6Dqjdr4N0rbjng5ON4sUpnLHV5JJySG8zZpWmuOZLWIrfrNKT2ctYR1BYmp1aYCgkItaJLw=="], + "@effect/opentelemetry": ["@effect/opentelemetry@4.0.0-beta.101", "", { "peerDependencies": { "@opentelemetry/api": "^1.9", "@opentelemetry/api-logs": ">=0.203.0 <0.300.0", "@opentelemetry/resources": "^2.0.0", "@opentelemetry/sdk-logs": ">=0.203.0 <0.300.0", "@opentelemetry/sdk-metrics": "^2.0.0", "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/sdk-trace-web": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.33.0", "effect": "^4.0.0-beta.101" }, "optionalPeers": ["@opentelemetry/api", "@opentelemetry/api-logs", "@opentelemetry/resources", "@opentelemetry/sdk-logs", "@opentelemetry/sdk-metrics", "@opentelemetry/sdk-trace-base", "@opentelemetry/sdk-trace-node", "@opentelemetry/sdk-trace-web"] }, "sha512-IdejlqRLbjRHJgVnea4s8CxTWfvkSjM0HlnpNfP07IGTbhmAvPs7PMaWt1xzYWbOnI7CriQwxv+54eW1PwIkZg=="], - "@effect/platform-node": ["@effect/platform-node@4.0.0-beta.83", "", { "dependencies": { "@effect/platform-node-shared": "^4.0.0-beta.83", "mime": "^4.1.0", "undici": "^8.2.0" }, "peerDependencies": { "effect": "^4.0.0-beta.83", "ioredis": "^5.7.0" } }, "sha512-RmpVGu/+X/Bif3/g1Rzj8oFzTOknoVB3yHCa0b179vytPpKe+Kj9ZwKNcAnKWqHUDkbSPBq1Ca60mvOHr2/+LQ=="], + "@effect/platform-node": ["@effect/platform-node@4.0.0-beta.101", "", { "dependencies": { "@effect/platform-node-shared": "^4.0.0-beta.101", "mime": "^4.1.0", "undici": "^8.7.0" }, "peerDependencies": { "effect": "^4.0.0-beta.101", "ioredis": "^5.7.0" } }, "sha512-pClk7dmMtHgM6Byu7CzGfrPvZ1/4BwmrRlCg2Op+iJozMkwVUxq8v4beK8b9SvxsliJjHZFznjvkVLX7LQjBqw=="], - "@effect/platform-node-shared": ["@effect/platform-node-shared@4.0.0-beta.83", "", { "dependencies": { "@types/ws": "^8.18.1", "ws": "^8.20.0" }, "peerDependencies": { "effect": "^4.0.0-beta.83" } }, "sha512-+yr/+PJmKTgmJq1QOINSBPgLu7Cjc4CZcotBXnGjyDEizOmimFgTkN2B8PBJAKIKUWYWfobjXqC+58/VhhPKAw=="], + "@effect/platform-node-shared": ["@effect/platform-node-shared@4.0.0-beta.101", "", { "dependencies": { "@types/ws": "^8.18.1", "ws": "^8.21.0" }, "peerDependencies": { "effect": "^4.0.0-beta.101" } }, "sha512-g4L7XiyJSNJLJVhlslyg2zBCQsoKQf1y1gd+Yfd+3wD9ymC+m7ymbd/5FGqnT1aXV6E2AwRr4D/R1eyRUikvWQ=="], - "@effect/sql-sqlite-bun": ["@effect/sql-sqlite-bun@4.0.0-beta.83", "", { "peerDependencies": { "effect": "^4.0.0-beta.83" } }, "sha512-6OaxLsWffxkh9pXYUSyj/AxjVb9URY2rG9U6atjxClWy30Jx77R9Pm3Rrc7cQ63kQurePavEw1bQbzQ/SILiQQ=="], + "@effect/sql-sqlite-bun": ["@effect/sql-sqlite-bun@4.0.0-beta.101", "", { "peerDependencies": { "effect": "^4.0.0-beta.101" } }, "sha512-s6AC7LXCEjCN+nKegKFY4MOi6bmT1+SLR9YHEYwhY3P5qyQQB4R5yYLgt+3J4EPp5fa3t4FIDdPEUwz9LdKm6g=="], "@electron/asar": ["@electron/asar@3.4.1", "", { "dependencies": { "commander": "^5.0.0", "glob": "^7.1.6", "minimatch": "^3.0.4" }, "bin": { "asar": "bin/asar.js" } }, "sha512-i4/rNPRS84t0vSRa2HorerGRXWyF4vThfHesw0dmcWHp+cspK743UanA0suA5Q5y8kzY2y6YKrvbIUn69BCAiA=="], @@ -1491,7 +1569,7 @@ "@electron/osx-sign": ["@electron/osx-sign@1.3.3", "", { "dependencies": { "compare-version": "^0.1.2", "debug": "^4.3.4", "fs-extra": "^10.0.0", "isbinaryfile": "^4.0.8", "minimist": "^1.2.6", "plist": "^3.0.5" }, "bin": { "electron-osx-flat": "bin/electron-osx-flat.js", "electron-osx-sign": "bin/electron-osx-sign.js" } }, "sha512-KZ8mhXvWv2rIEgMbWZ4y33bDHyUKMXnx4M0sTyPNK/vcB81ImdeY9Ggdqy0SWbMDgmbqyQ+phgejh6V3R2QuSg=="], - "@electron/rebuild": ["@electron/rebuild@4.0.4", "", { "dependencies": { "@malept/cross-spawn-promise": "^2.0.0", "debug": "^4.1.1", "node-abi": "^4.2.0", "node-api-version": "^0.2.1", "node-gyp": "^12.2.0", "read-binary-file-arch": "^1.0.6" }, "bin": { "electron-rebuild": "lib/cli.js" } }, "sha512-Rzc39XPdk/+/wBG8MfwAHohXflep0ITUfulb6Rgz3R0NeSB1noE+E9/M/cb8ftCAiyDD9PPhLuuWgE1GaInbKg=="], + "@electron/rebuild": ["@electron/rebuild@4.2.0", "", { "dependencies": { "@malept/cross-spawn-promise": "^2.0.0", "debug": "^4.1.1", "node-abi": "^4.2.0", "node-api-version": "^0.2.1", "node-gyp": "^12.2.0", "read-binary-file-arch": "^1.0.6" }, "bin": { "electron-rebuild": "lib/cli.js" } }, "sha512-RKL/O+jGoXJMxrx/5771y1n0xTKmFuOYGO3gMmwypBM6rsH0kou0mswwdXA2JrhIkE4xyC7v9vGk0n6NPzgOxQ=="], "@electron/universal": ["@electron/universal@2.0.3", "", { "dependencies": { "@electron/asar": "^3.3.1", "@malept/cross-spawn-promise": "^2.0.0", "debug": "^4.3.1", "dir-compare": "^4.2.0", "fs-extra": "^11.1.1", "minimatch": "^9.0.3", "plist": "^3.1.0" } }, "sha512-Wn9sPYIVFRFl5HmwMJkARCCf7rqK/EurkfQ/rJZ14mHP3iYTjZSIOSVonEAnhWeAXwtw7zOekGRlc6yTtZ0t+g=="], @@ -1511,11 +1589,11 @@ "@emmetio/stream-reader-utils": ["@emmetio/stream-reader-utils@0.1.0", "", {}, "sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A=="], - "@emnapi/core": ["@emnapi/core@1.9.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA=="], + "@emnapi/core": ["@emnapi/core@1.11.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ=="], - "@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="], + "@emnapi/runtime": ["@emnapi/runtime@1.11.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw=="], - "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], "@emotion/is-prop-valid": ["@emotion/is-prop-valid@0.8.8", "", { "dependencies": { "@emotion/memoize": "0.7.4" } }, "sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA=="], @@ -1581,68 +1659,54 @@ "@expressive-code/plugin-text-markers": ["@expressive-code/plugin-text-markers@0.41.7", "", { "dependencies": { "@expressive-code/core": "^0.41.7" } }, "sha512-Ewpwuc5t6eFdZmWlFyeuy3e1PTQC0jFvw2Q+2bpcWXbOZhPLsT7+h8lsSIJxb5mS7wZko7cKyQ2RLYDyK6Fpmw=="], - "@fastify/ajv-compiler": ["@fastify/ajv-compiler@4.0.5", "", { "dependencies": { "ajv": "^8.12.0", "ajv-formats": "^3.0.1", "fast-uri": "^3.0.0" } }, "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A=="], - "@fastify/busboy": ["@fastify/busboy@2.1.1", "", {}, "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="], - "@fastify/error": ["@fastify/error@4.2.0", "", {}, "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ=="], + "@ff-labs/fff-bin-android-arm64": ["@ff-labs/fff-bin-android-arm64@0.10.1", "", { "os": "android", "cpu": "arm64" }, "sha512-6Bsaa6yKEd2HV1M2WtqSYhoZucKYffIUms6GYoPN48QHP8hZgO8GXJ85/JDxKlkCJsN2hw1ROiwQK0+xUHYhFQ=="], - "@fastify/fast-json-stringify-compiler": ["@fastify/fast-json-stringify-compiler@5.0.3", "", { "dependencies": { "fast-json-stringify": "^6.0.0" } }, "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ=="], + "@ff-labs/fff-bin-darwin-arm64": ["@ff-labs/fff-bin-darwin-arm64@0.10.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-7yUP+56sG3UTrLg7eepOD16yM2dgiD7g6Ase2XWQB7oXwLV7mBMylPKIli2pP3kHzfw9K+BS3WAwHKHJ2QhxYw=="], - "@fastify/forwarded": ["@fastify/forwarded@3.0.1", "", {}, "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw=="], + "@ff-labs/fff-bin-darwin-x64": ["@ff-labs/fff-bin-darwin-x64@0.10.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-9zb+P1xtyqu/jVklm5RKF2zm9doRRsBNbkF/a8S4aSqSJoNlQR8ZF7C129fzOLfffVAjjgcO2l8oJgxOzHYiwQ=="], - "@fastify/merge-json-schemas": ["@fastify/merge-json-schemas@0.2.1", "", { "dependencies": { "dequal": "^2.0.3" } }, "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A=="], + "@ff-labs/fff-bin-linux-arm64-gnu": ["@ff-labs/fff-bin-linux-arm64-gnu@0.10.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-KTwr9CUfCJv0vtG2xG+nMxDae/2NJY2/oVmtgSvTnH9baI6JprqsFGphbukx7mdW/QMPwBiYtoO8ZGoC7i92jA=="], - "@fastify/proxy-addr": ["@fastify/proxy-addr@5.1.0", "", { "dependencies": { "@fastify/forwarded": "^3.0.0", "ipaddr.js": "^2.1.0" } }, "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw=="], + "@ff-labs/fff-bin-linux-arm64-musl": ["@ff-labs/fff-bin-linux-arm64-musl@0.10.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-oznmSpV+zjiAPiwqbA4y+SAsMaYvDhGllHiT9L4ebdQnSOfcQzlUwvo45OhBPwHBt47tIois4bkF/MITlDk54A=="], - "@fastify/rate-limit": ["@fastify/rate-limit@10.3.0", "", { "dependencies": { "@lukeed/ms": "^2.0.2", "fastify-plugin": "^5.0.0", "toad-cache": "^3.7.0" } }, "sha512-eIGkG9XKQs0nyynatApA3EVrojHOuq4l6fhB4eeCk4PIOeadvOJz9/4w3vGI44Go17uaXOWEcPkaD8kuKm7g6Q=="], + "@ff-labs/fff-bin-linux-x64-gnu": ["@ff-labs/fff-bin-linux-x64-gnu@0.10.1", "", { "os": "linux", "cpu": "x64" }, "sha512-KDpl8lwSEOauP/6FSJIvnARzE+ILm2rVIRQAio9dc5nn56EvlsryBWry0c5V0Tbw1PV0lNrZ+bzcIiPuTacvzw=="], - "@ff-labs/fff-bin-darwin-arm64": ["@ff-labs/fff-bin-darwin-arm64@0.9.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-xyivu2xB++O5xXDx5Qm50JsU2aXt8YgXlGVhH/HE7UMYDrE6L6f1RYdYs8Y0bn0D3D0+bFBrN5ELPszK9E4Wbw=="], + "@ff-labs/fff-bin-linux-x64-musl": ["@ff-labs/fff-bin-linux-x64-musl@0.10.1", "", { "os": "linux", "cpu": "x64" }, "sha512-mZCpojVtGNDr/wdCUEAHdfrl6qORvKHv3Pw35TaOdshnG4wocoA5bBKTGj/zmAU11o0GMK4V+wUhdNrgqoE10w=="], - "@ff-labs/fff-bin-darwin-x64": ["@ff-labs/fff-bin-darwin-x64@0.9.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xLooAhCnTDCipPSMMZz7kGF3lhRHx6aP5fb6DJ0Ipyw/w/UWJb+xITJFszUl/QnIBoJ/qjDc93/FZMo1dk6gVA=="], + "@ff-labs/fff-bin-win32-arm64": ["@ff-labs/fff-bin-win32-arm64@0.10.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-SbT76ETXC5AgV9J8sVDozKG8wzrrxsOn8lbBprlOtx+O5V5EYmS1W7BlsatTHy6ddQ3uU5oOYO04PWZBuP6wXg=="], - "@ff-labs/fff-bin-linux-arm64-gnu": ["@ff-labs/fff-bin-linux-arm64-gnu@0.9.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-m5+8vA+1veaUUWonwva1WsU6m1HRm8CpYUzr06KDB65mewlmPbqz7+Fh7hjEfiD8C4mHVHe6RysULvAH1yhsdw=="], + "@ff-labs/fff-bin-win32-x64": ["@ff-labs/fff-bin-win32-x64@0.10.1", "", { "os": "win32", "cpu": "x64" }, "sha512-dcpHUCBEZoXKQCdKa3bADfgcNyeyfM8tatXrILqIFYi9GL8E4GnzKx1rGkgP5ukVtuj0WuoJyyqSvGjpJPIT8w=="], - "@ff-labs/fff-bin-linux-arm64-musl": ["@ff-labs/fff-bin-linux-arm64-musl@0.9.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-EMeWm7CSTVkizy4ZEzUkLDP024tVcbCUthduuIhekFQRDsiaAze0YboIylWb9HBHJCZlCCoZrWAl4nnJbsX7AA=="], + "@ff-labs/fff-bun": ["@ff-labs/fff-bun@0.10.1", "", { "optionalDependencies": { "@ff-labs/fff-bin-android-arm64": "0.10.1", "@ff-labs/fff-bin-darwin-arm64": "0.10.1", "@ff-labs/fff-bin-darwin-x64": "0.10.1", "@ff-labs/fff-bin-linux-arm64-gnu": "0.10.1", "@ff-labs/fff-bin-linux-arm64-musl": "0.10.1", "@ff-labs/fff-bin-linux-x64-gnu": "0.10.1", "@ff-labs/fff-bin-linux-x64-musl": "0.10.1", "@ff-labs/fff-bin-win32-arm64": "0.10.1", "@ff-labs/fff-bin-win32-x64": "0.10.1" }, "os": [ "!aix", "!sunos", "!freebsd", "!openbsd", ], "cpu": [ "x64", "arm64", ] }, "sha512-9oUCxypGbf2q3vNfKZ31wdzt5KqjhA9S6TwQaFol/j1lkSHVGvtIa3RvdGHPs1UUuvR/MO7b6pHj054BR9bXPQ=="], - "@ff-labs/fff-bin-linux-x64-gnu": ["@ff-labs/fff-bin-linux-x64-gnu@0.9.4", "", { "os": "linux", "cpu": "x64" }, "sha512-pglE0uLkhnlE6bStXqfgUjYTSj+2sVwXaPfoA0QksidAsQor6NRt8004mygzC9DPubgHq5B9QezPfEwigKaP9Q=="], + "@floating-ui/core": ["@floating-ui/core@1.8.0", "", { "dependencies": { "@floating-ui/utils": "^0.2.12" } }, "sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ=="], - "@ff-labs/fff-bin-linux-x64-musl": ["@ff-labs/fff-bin-linux-x64-musl@0.9.4", "", { "os": "linux", "cpu": "x64" }, "sha512-VNKxgl8qs3aTfXViX7lqRK1aLu311h8dtBFqG4Scv+9Oi7WprybUp5L7IZ8sxKERaDAaiJMXHodXa1c90QdK8w=="], + "@floating-ui/dom": ["@floating-ui/dom@1.8.0", "", { "dependencies": { "@floating-ui/core": "^1.8.0", "@floating-ui/utils": "^0.2.12" } }, "sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg=="], - "@ff-labs/fff-bin-win32-arm64": ["@ff-labs/fff-bin-win32-arm64@0.9.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-uFEt0aNL54vQxq1ivjxRuo+thnhS4wLqa4INl4VXnXJUmwB42XXxD+gsj7vzhBLLx4cFf0aWgy/+TVDR8yjZtQ=="], + "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.9", "", { "dependencies": { "@floating-ui/dom": "^1.8.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-JDjEFGCpImxDCA7JJKviA0M9+RtmJdj0m/NVU5IMgBK+AmZouAQQ7/+2GLH0GXXY0YMw9oXPB8hKdbPYg5QLYg=="], - "@ff-labs/fff-bin-win32-x64": ["@ff-labs/fff-bin-win32-x64@0.9.4", "", { "os": "win32", "cpu": "x64" }, "sha512-Yd2Eyxj+slWv+0QDW9/xBpu9FXq+hwD0rXQD5184/88d+xwWCLKhEP2w8I6OO9XCg+kLT79UJb+k0WwXUtBtMw=="], + "@floating-ui/utils": ["@floating-ui/utils@0.2.12", "", {}, "sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww=="], - "@ff-labs/fff-bun": ["@ff-labs/fff-bun@0.9.4", "", { "optionalDependencies": { "@ff-labs/fff-bin-darwin-arm64": "0.9.4", "@ff-labs/fff-bin-darwin-x64": "0.9.4", "@ff-labs/fff-bin-linux-arm64-gnu": "0.9.4", "@ff-labs/fff-bin-linux-arm64-musl": "0.9.4", "@ff-labs/fff-bin-linux-x64-gnu": "0.9.4", "@ff-labs/fff-bin-linux-x64-musl": "0.9.4", "@ff-labs/fff-bin-win32-arm64": "0.9.4", "@ff-labs/fff-bin-win32-x64": "0.9.4" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ] }, "sha512-7HUraaK/g5dStAnuKAuzsXVOQvqqX0ylo5G+DxYwsCjCDc42bjoEAAHqz/3Sn3raUNw97KMoz87XR9QyrLEfVw=="], + "@fontsource/commit-mono": ["@fontsource/commit-mono@5.2.5", "", {}, "sha512-htX8yQWtiPt5L1Hzh4sirvfUJT2+KYiquDB/Q2sY2tWQYplpBUOD5zHnIM3k36Hnm4V+JIIqA/wmwupSQ68WjA=="], - "@floating-ui/core": ["@floating-ui/core@1.7.5", "", { "dependencies": { "@floating-ui/utils": "^0.2.11" } }, "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ=="], - - "@floating-ui/dom": ["@floating-ui/dom@1.7.6", "", { "dependencies": { "@floating-ui/core": "^1.7.5", "@floating-ui/utils": "^0.2.11" } }, "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ=="], + "@fontsource/ibm-plex-mono": ["@fontsource/ibm-plex-mono@5.2.5", "", {}, "sha512-G09N3GfuT9qj3Ax2FDZvKqZttzM3v+cco2l8uXamhKyXLdmlaUDH5o88/C3vtTHj2oT7yRKsvxz9F+BXbWKMYA=="], - "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.8", "", { "dependencies": { "@floating-ui/dom": "^1.7.6" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A=="], + "@fontsource/inter": ["@fontsource/inter@5.2.8", "", {}, "sha512-P6r5WnJoKiNVV+zvW2xM13gNdFhAEpQ9dQJHt3naLvfg+LkF2ldgSLiF4T41lf1SQCM9QmkqPTn4TH568IRagg=="], - "@floating-ui/utils": ["@floating-ui/utils@0.2.11", "", {}, "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg=="], + "@fontsource/noto-sans-math": ["@fontsource/noto-sans-math@5.2.5", "", {}, "sha512-1bxEvVlF51Vfgpju32mRZzI/CHvsfqjXjI2+sAuEyHYvXABUAIyj+93sCO3QZIoMG5drWyrzgoCqRQRaL6wQ8Q=="], - "@fontsource/ibm-plex-mono": ["@fontsource/ibm-plex-mono@5.2.5", "", {}, "sha512-G09N3GfuT9qj3Ax2FDZvKqZttzM3v+cco2l8uXamhKyXLdmlaUDH5o88/C3vtTHj2oT7yRKsvxz9F+BXbWKMYA=="], + "@fontsource/noto-sans-symbols": ["@fontsource/noto-sans-symbols@5.2.5", "", {}, "sha512-mxoIRstsmZpZFzd/SRWiD+l6T7TGhpgCrGs7TEnnuGSQIfjVMrQT9Zej2enh9pkfmPNAFyeaGJkHkszJ1hH++w=="], - "@fontsource/inter": ["@fontsource/inter@5.2.8", "", {}, "sha512-P6r5WnJoKiNVV+zvW2xM13gNdFhAEpQ9dQJHt3naLvfg+LkF2ldgSLiF4T41lf1SQCM9QmkqPTn4TH568IRagg=="], + "@fontsource/noto-sans-symbols-2": ["@fontsource/noto-sans-symbols-2@5.2.5", "", {}, "sha512-F4O9WLifwoZS1quNzY1ebjMNo2cQPe/UP68Dmud0ONi2lOxaR6xp6fFPO2gG17MI7DwAnfMyQFl64A2tAd28hg=="], "@gar/promise-retry": ["@gar/promise-retry@1.0.3", "", {}, "sha512-GmzA9ckNokPypTg10pgpeHNQe7ph+iIKKmhKu3Ob9ANkswreCx7R3cKmY781K8QK3AqVL3xVh9A42JvIAbkkSA=="], - "@gitlab/opencode-gitlab-auth": ["@gitlab/opencode-gitlab-auth@1.3.3", "", { "dependencies": { "@fastify/rate-limit": "^10.2.0", "@opencode-ai/plugin": "*", "fastify": "^5.2.0", "open": "^10.0.0" } }, "sha512-FT+KsCmAJjtqWr1YAq0MywGgL9kaLQ4apmsoowAXrPqHtoYf2i/nY10/A+L06kNj22EATeEDRpbB1NWXMto/SA=="], - "@graphql-typed-document-node/core": ["@graphql-typed-document-node/core@3.2.0", "", { "peerDependencies": { "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ=="], "@happy-dom/global-registrator": ["@happy-dom/global-registrator@20.0.11", "", { "dependencies": { "@types/node": "^20.0.0", "happy-dom": "^20.0.11" } }, "sha512-GqNqiShBT/lzkHTMC/slKBrvN0DsD4Di8ssBk4aDaVgEn+2WMzE6DXxq701ndSXj7/0cJ8mNT71pM7Bnrr6JRw=="], - "@hey-api/codegen-core": ["@hey-api/codegen-core@0.5.5", "", { "dependencies": { "@hey-api/types": "0.1.2", "ansi-colors": "4.1.3", "c12": "3.3.3", "color-support": "1.1.3" }, "peerDependencies": { "typescript": ">=5.5.3" } }, "sha512-f2ZHucnA2wBGAY8ipB4wn/mrEYW+WUxU2huJmUvfDO6AE2vfILSHeF3wCO39Pz4wUYPoAWZByaauftLrOfC12Q=="], - - "@hey-api/json-schema-ref-parser": ["@hey-api/json-schema-ref-parser@1.2.2", "", { "dependencies": { "@jsdevtools/ono": "^7.1.3", "@types/json-schema": "^7.0.15", "js-yaml": "^4.1.1", "lodash": "^4.17.21" } }, "sha512-oS+5yAdwnK20lSeFO1d53Ku+yaGCsY8PcrmSq2GtSs3bsBfRnHAbpPKSVzQcaxAOrzj5NB+f34WhZglVrNayBA=="], - - "@hey-api/openapi-ts": ["@hey-api/openapi-ts@0.90.10", "", { "dependencies": { "@hey-api/codegen-core": "^0.5.5", "@hey-api/json-schema-ref-parser": "1.2.2", "@hey-api/types": "0.1.2", "ansi-colors": "4.1.3", "color-support": "1.1.3", "commander": "14.0.2", "open": "11.0.0", "semver": "7.7.3" }, "peerDependencies": { "typescript": ">=5.5.3" }, "bin": { "openapi-ts": "bin/run.js" } }, "sha512-o0wlFxuLt1bcyIV/ZH8DQ1wrgODTnUYj/VfCHOOYgXUQlLp9Dm2PjihOz+WYrZLowhqUhSKeJRArOGzvLuOTsg=="], - - "@hey-api/types": ["@hey-api/types@0.1.2", "", {}, "sha512-uNNtiVAWL7XNrV/tFXx7GLY9lwaaDazx1173cGW3+UEaw4RUPsHEmiB4DSpcjNxMIcrctfz2sGKLnVx5PBG2RA=="], - "@hono/node-server": ["@hono/node-server@1.19.14", "", { "peerDependencies": { "hono": "^4" } }, "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw=="], "@hono/standard-validator": ["@hono/standard-validator@0.2.0", "", { "peerDependencies": { "@standard-schema/spec": "1.0.0", "hono": ">=3.9.0" } }, "sha512-pFq0UVAnjzXcDAgqFpDeVL3MOUPrlIh/kPqBDvbCYoThVhhS+Vf37VcdsakdOFFGiqoiYVxp3LifXFhGhp/rgQ=="], @@ -1651,6 +1715,14 @@ "@ibm/telemetry-js": ["@ibm/telemetry-js@1.11.0", "", { "bin": { "ibmtelemetry": "dist/collect.js" } }, "sha512-RO/9j+URJnSfseWg9ZkEX9p+a3Ousd33DBU7rOafoZB08RqdzxFVYJ2/iM50dkBuD0o7WX7GYt1sLbNgCoE+pA=="], + "@iconify-json/lucide": ["@iconify-json/lucide@1.2.118", "", { "dependencies": { "@iconify/types": "*" } }, "sha512-JBnK4YOq6K/lA0JP//27QxFxJ4120TjvfXAzGZZIGjCcXcRRRFxl1rcV7+IWdcVCe90KXdqVaAwLaLf6G3HELw=="], + + "@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="], + + "@iconify/utils": ["@iconify/utils@3.1.4", "", { "dependencies": { "@antfu/install-pkg": "^1.1.0", "@iconify/types": "^2.0.0", "import-meta-resolve": "^4.2.0" } }, "sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw=="], + + "@img/colour": ["@img/colour@1.1.0", "", {}, "sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ=="], + "@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=="], "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="], @@ -1663,6 +1735,10 @@ "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="], + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="], + + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="], + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="], "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="], @@ -1675,6 +1751,10 @@ "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="], + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="], + + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="], + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="], "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="], @@ -1685,6 +1765,8 @@ "@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="], + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="], + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="], "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], @@ -1695,18 +1777,12 @@ "@ioredis/commands": ["@ioredis/commands@1.10.0", "", {}, "sha512-UmeW7z4LfctwoQ5wkhVzgq8tXkreED2xZGpX+Bg+zA+WJFZCT6c062AfCK/Dfk81xZnnwdhJCUMkitihRaoC2Q=="], - "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], - - "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.1", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ=="], - "@isaacs/cliui": ["@isaacs/cliui@9.0.0", "", {}, "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg=="], "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], "@isaacs/string-locale-compare": ["@isaacs/string-locale-compare@1.1.0", "", {}, "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ=="], - "@joshwooding/vite-plugin-react-docgen-typescript": ["@joshwooding/vite-plugin-react-docgen-typescript@0.7.0", "", { "dependencies": { "glob": "^13.0.1", "react-docgen-typescript": "^2.2.2" }, "peerDependencies": { "typescript": ">= 4.3.x", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["typescript"] }, "sha512-qvsTEwEFefhdirGOPnu9Wp6ChfIwy2dBCRuETU3uE+4cC+PFoxMSiiEhxk4lOluA34eARHA0OxqsEUYDqRMgeQ=="], - "@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=="], @@ -1721,8 +1797,6 @@ "@js-temporal/polyfill": ["@js-temporal/polyfill@0.5.1", "", { "dependencies": { "jsbi": "^4.3.0" } }, "sha512-hloP58zRVCRSpgDxmqCWJNlizAlUgJFqG2ypq79DCvyv9tHjRYMDOcPFjzfl/A1/YxDvRCZz8wvZvmapQnKwFQ=="], - "@jsdevtools/ono": ["@jsdevtools/ono@7.1.3", "", {}, "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="], - "@jsx-email/all": ["@jsx-email/all@2.2.3", "", { "dependencies": { "@jsx-email/body": "1.0.2", "@jsx-email/button": "1.0.4", "@jsx-email/column": "1.0.3", "@jsx-email/container": "1.0.2", "@jsx-email/font": "1.0.3", "@jsx-email/head": "1.0.2", "@jsx-email/heading": "1.0.2", "@jsx-email/hr": "1.0.2", "@jsx-email/html": "1.0.2", "@jsx-email/img": "1.0.2", "@jsx-email/link": "1.0.2", "@jsx-email/markdown": "2.0.4", "@jsx-email/preview": "1.0.2", "@jsx-email/render": "1.1.1", "@jsx-email/row": "1.0.2", "@jsx-email/section": "1.0.2", "@jsx-email/tailwind": "2.4.4", "@jsx-email/text": "1.0.2" }, "peerDependencies": { "react": "^18.2.0" } }, "sha512-OBvLe/hVSQc0LlMSTJnkjFoqs3bmxcC4zpy/5pT5agPCSKMvAKQjzmsc2xJ2wO73jSpRV1K/g38GmvdCfrhSoQ=="], "@jsx-email/body": ["@jsx-email/body@1.0.2", "", { "peerDependencies": { "react": "^18.2.0" } }, "sha512-NjR2tgLH4XGfGkm+O8kcVwi9MBqZsXZCLlmk3HlMux3/n/+a5zB+yhJqXWZBJl2i+6cSF+E2O6hK11ekyK9WWQ=="], @@ -1767,14 +1841,10 @@ "@kobalte/core": ["@kobalte/core@0.13.11", "", { "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-hK7TYpdib/XDb/r/4XDBFaO9O+3ZHz4ZWryV4/3BfES+tSQVgg2IJupDnztKXB0BqbSRy/aWlHKw1SPtNPYCFQ=="], - "@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=="], + "@kobalte/utils": ["@kobalte/utils@0.9.2", "", { "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-jRVXr+zsVHxzDXRoh+CDeXzvCsFJ6uiHhqqNQ26Cw9ZsZ3D6nqPUBt1gGVtj2ZPmRL3a9Uk1v8D1aJ8/I12Dow=="], "@kurkle/color": ["@kurkle/color@0.3.4", "", {}, "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w=="], - "@leichtgewicht/ip-codec": ["@leichtgewicht/ip-codec@2.0.5", "", {}, "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw=="], - - "@lukeed/ms": ["@lukeed/ms@2.0.2", "", {}, "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA=="], - "@lydell/node-pty": ["@lydell/node-pty@1.2.0-beta.12", "", { "optionalDependencies": { "@lydell/node-pty-darwin-arm64": "1.2.0-beta.12", "@lydell/node-pty-darwin-x64": "1.2.0-beta.12", "@lydell/node-pty-linux-arm64": "1.2.0-beta.12", "@lydell/node-pty-linux-x64": "1.2.0-beta.12", "@lydell/node-pty-win32-arm64": "1.2.0-beta.12", "@lydell/node-pty-win32-x64": "1.2.0-beta.12" } }, "sha512-qIK890UwPupoj07osVvgOIa++1mxeHbcGry4PKRHhNVNs81V2SCG34eJr46GybiOmBtc8Sj5PB1/GGM5PL549g=="], "@lydell/node-pty-darwin-arm64": ["@lydell/node-pty-darwin-arm64@1.2.0-beta.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tqaifcY9Cr41SblO1+FLzh8oxxtkNhuW9Dhl22lKme9BreYvKvxEZcdPIXTuqkJc5tagOEC4QHShKmJjLyLXLQ=="], @@ -1793,10 +1863,14 @@ "@malept/flatpak-bundler": ["@malept/flatpak-bundler@0.4.0", "", { "dependencies": { "debug": "^4.1.1", "fs-extra": "^9.0.0", "lodash": "^4.17.15", "tmp-promise": "^3.0.2" } }, "sha512-9QOtNffcOF/c1seMCDnjckb3R9WHcG34tky+FHpNKKCW0wc/scYLwMtO+ptyGUfMW0/b/n4qRiALlaFHc9Oj7Q=="], + "@mapbox/node-pre-gyp": ["@mapbox/node-pre-gyp@2.0.3", "", { "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-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg=="], + "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], "@mdx-js/react": ["@mdx-js/react@3.1.1", "", { "dependencies": { "@types/mdx": "^2.0.0" }, "peerDependencies": { "@types/react": ">=16", "react": ">=16" } }, "sha512-f++rKLQgUVYDAtECQ6fn/is15GkEH9+nZPM3MS0RcxVqoTfawHvDlSCH7JbMhAM6uJ32v3eXLvLmLvjGu7PTQw=="], + "@mermaid-js/parser": ["@mermaid-js/parser@1.2.0", "", { "dependencies": { "@chevrotain/types": "~11.1.2" } }, "sha512-oYPyv8A4As1yH5Bx+04iQEQxXuIQDe0GKCNSRgao6z8AM9jixXIfP0vsppRLvGf+nKIOb9/LdpWA4YuJiVvESA=="], + "@mixmark-io/domino": ["@mixmark-io/domino@2.2.0", "", {}, "sha512-Y28PR25bHXUg88kCV7nivXrP2Nj2RueZ3/l/jdx6J9f8J4nsEGcgX0Qe6lt7Pa+J79+kPiJU3LguR6O/6zrLOw=="], "@modelcontextprotocol/sdk": ["@modelcontextprotocol/sdk@1.29.0", "", { "dependencies": { "@hono/node-server": "^1.19.9", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "content-type": "^1.0.5", "cors": "^2.8.5", "cross-spawn": "^7.0.5", "eventsource": "^3.0.2", "eventsource-parser": "^3.0.0", "express": "^5.2.1", "express-rate-limit": "^8.2.1", "hono": "^4.11.4", "jose": "^6.1.3", "json-schema-typed": "^8.0.2", "pkce-challenge": "^5.0.0", "raw-body": "^3.0.0", "zod": "^3.25 || ^4.0", "zod-to-json-schema": "^3.25.1" }, "peerDependencies": { "@cfworker/json-schema": "^4.1.1" }, "optionalPeers": ["@cfworker/json-schema"] }, "sha512-zo37mZA9hJWpULgkRpowewez1y6ML5GsXJPY8FI0tBBCd77HEvza4jDqRKOXgHNn867PVGCyTdzqpz0izu5ZjQ=="], @@ -1825,11 +1899,35 @@ "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4", "", { "os": "win32", "cpu": "x64" }, "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ=="], - "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="], + "@napi-rs/canvas": ["@napi-rs/canvas@1.0.2", "", { "optionalDependencies": { "@napi-rs/canvas-android-arm64": "1.0.2", "@napi-rs/canvas-darwin-arm64": "1.0.2", "@napi-rs/canvas-darwin-x64": "1.0.2", "@napi-rs/canvas-linux-arm-gnueabihf": "1.0.2", "@napi-rs/canvas-linux-arm64-gnu": "1.0.2", "@napi-rs/canvas-linux-arm64-musl": "1.0.2", "@napi-rs/canvas-linux-riscv64-gnu": "1.0.2", "@napi-rs/canvas-linux-x64-gnu": "1.0.2", "@napi-rs/canvas-linux-x64-musl": "1.0.2", "@napi-rs/canvas-win32-arm64-msvc": "1.0.2", "@napi-rs/canvas-win32-x64-msvc": "1.0.2" } }, "sha512-EYEqlMYaCbpZDz+IgDH5xp9MTd3ui4dmGqbQYryhMLnSRxrhHKq5KQWHHKxFUcEP4Hp8/BWgvqXocX4j7iSbOQ=="], + + "@napi-rs/canvas-android-arm64": ["@napi-rs/canvas-android-arm64@1.0.2", "", { "os": "android", "cpu": "arm64" }, "sha512-IMXKVQod0ol4vt3gmClUfXz4JAgHYESGPCUqmH3lQxBoL0K/2greJaQE1HVBVxWWFKfLc4OLZVdxg7kXVyXv+g=="], + + "@napi-rs/canvas-darwin-arm64": ["@napi-rs/canvas-darwin-arm64@1.0.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Sc8tPi6cF+5lqOzCCKFALJHhDiRwyMzTPYm3bbhdXsOunU0lQO5f05ucyOzN2r55I23Hg5bsjH63uSCvWp3EgQ=="], + + "@napi-rs/canvas-darwin-x64": ["@napi-rs/canvas-darwin-x64@1.0.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-niDXZ9LhKB1zLrUdYB64RHQFDGz9rr0eGx061qtJJU3U20EMMIx28ADF5fVYbhtOgkWQrBjFicfaye1yM0U62A=="], + + "@napi-rs/canvas-linux-arm-gnueabihf": ["@napi-rs/canvas-linux-arm-gnueabihf@1.0.2", "", { "os": "linux", "cpu": "arm" }, "sha512-sgatQL9JxGRH/Amzcvu0P3t8Am3duou74CisfuJ41Dwt8cWy723z/9KZ8LlgmxfypEwEZxSTNFJtU8d281lmhQ=="], + + "@napi-rs/canvas-linux-arm64-gnu": ["@napi-rs/canvas-linux-arm64-gnu@1.0.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-dgKuX0peF3xwY6ZF5QxGS4wbfDqpoFAJYXiLSp+guZKARQUKMkRqZSDrXKj7nfrec3UCMzC0PFCPte0ES98AiA=="], + + "@napi-rs/canvas-linux-arm64-musl": ["@napi-rs/canvas-linux-arm64-musl@1.0.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-qwROoDIC9upfvDoRLuPn2aNg9CGW1x0Ygr4k2Or+8paA9d0qBLwk87U+g8KQpoOviKoPoiwl97kvBYuYD7qZoA=="], + + "@napi-rs/canvas-linux-riscv64-gnu": ["@napi-rs/canvas-linux-riscv64-gnu@1.0.2", "", { "os": "linux", "cpu": "none" }, "sha512-fXRjnPihdnbO6qy1QQOgxAonb68A0TCEG7rj1x7v7rxNElsE8EVIKIEUTvyDtU+sthYSbX+8e7g3oZiLGnOmxw=="], + + "@napi-rs/canvas-linux-x64-gnu": ["@napi-rs/canvas-linux-x64-gnu@1.0.2", "", { "os": "linux", "cpu": "x64" }, "sha512-nPR97DXhbWIAy7yazF3jc06kEPMqYMLmPzFOVNlwKPfIoSChnI+x7dc0hTLaihz3jxrjL6j4BbA7earxfx4X3g=="], + + "@napi-rs/canvas-linux-x64-musl": ["@napi-rs/canvas-linux-x64-musl@1.0.2", "", { "os": "linux", "cpu": "x64" }, "sha512-l7zZY5+jL5qnBZtDz7CoBtY6p7EkHu422g/0zWwrOrzIwWyWxZFRfZZORY1UG7YApymPLx+UbOkN206xXn/c1Q=="], + + "@napi-rs/canvas-win32-arm64-msvc": ["@napi-rs/canvas-win32-arm64-msvc@1.0.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-yE0koHCFF4PIbMc2o2SEALhnipz7WBISh5glLvQiomtIoCcW0np3H4Lw93ceJAfJttTTeIIWFbwH84F7EVzjMQ=="], + + "@napi-rs/canvas-win32-x64-msvc": ["@napi-rs/canvas-win32-x64-msvc@1.0.2", "", { "os": "win32", "cpu": "x64" }, "sha512-okU8/t2foV6C31n0GtvEMbfD5rOFc70+/6xUNME9Guld29sgSOIGUEDScAWFlcP3k5TYQRl9TNkwJEEjh15w8A=="], + + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.6", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg=="], "@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], - "@nodable/entities": ["@nodable/entities@2.1.1", "", {}, "sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg=="], + "@nodable/entities": ["@nodable/entities@3.0.0", "", {}, "sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw=="], "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], @@ -1883,7 +1981,7 @@ "@octokit/endpoint": ["@octokit/endpoint@9.0.6", "", { "dependencies": { "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" } }, "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw=="], - "@octokit/graphql": ["@octokit/graphql@9.0.2", "", { "dependencies": { "@octokit/request": "^10.0.4", "@octokit/types": "^15.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-iz6KzZ7u95Fzy9Nt2L8cG88lGRMr/qy1Q36ih/XVzMIlPDMYwaNLE/ENhqmIzgPrlNWiYJkwmveEetvxAgFBJw=="], + "@octokit/graphql": ["@octokit/graphql@7.1.1", "", { "dependencies": { "@octokit/request": "^8.4.1", "@octokit/types": "^13.0.0", "universal-user-agent": "^6.0.0" } }, "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g=="], "@octokit/oauth-authorization-url": ["@octokit/oauth-authorization-url@8.0.0", "", {}, "sha512-7QoLPRh/ssEA/HuHBHdVdSgF8xNLz/Bc5m9fZkArJE5bb6NmVkDm3anKxXPmN1zh6b5WKZPRr3697xKT/yM3qQ=="], @@ -1907,18 +2005,20 @@ "@octokit/types": ["@octokit/types@14.1.0", "", { "dependencies": { "@octokit/openapi-types": "^25.1.0" } }, "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g=="], - "@octokit/webhooks-types": ["@octokit/webhooks-types@7.6.1", "", {}, "sha512-S8u2cJzklBC0FgTwWVLaM8tMrDuDMVE4xiTK4EYXM9GntyvrdbSoxqDQa+Fh57CCNApyIpyeqPhhFEmHPfrXgw=="], - "@one-ini/wasm": ["@one-ini/wasm@0.1.1", "", {}, "sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw=="], "@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=="], + "@opencode-ai/ai": ["@opencode-ai/ai@workspace:packages/ai"], + "@opencode-ai/app": ["@opencode-ai/app@workspace:packages/app"], "@opencode-ai/cli": ["@opencode-ai/cli@workspace:packages/cli"], "@opencode-ai/client": ["@opencode-ai/client@workspace:packages/client"], + "@opencode-ai/codemode": ["@opencode-ai/codemode@workspace:packages/codemode"], + "@opencode-ai/console-app": ["@opencode-ai/console-app@workspace:packages/console/app"], "@opencode-ai/console-core": ["@opencode-ai/console-core@workspace:packages/console/core"], @@ -1947,8 +2047,6 @@ "@opencode-ai/httpapi-codegen": ["@opencode-ai/httpapi-codegen@workspace:packages/httpapi-codegen"], - "@opencode-ai/llm": ["@opencode-ai/llm@workspace:packages/llm"], - "@opencode-ai/plugin": ["@opencode-ai/plugin@workspace:packages/plugin"], "@opencode-ai/protocol": ["@opencode-ai/protocol@workspace:packages/protocol"], @@ -1957,7 +2055,7 @@ "@opencode-ai/script": ["@opencode-ai/script@workspace:packages/script"], - "@opencode-ai/sdk": ["@opencode-ai/sdk@workspace:packages/sdk/js"], + "@opencode-ai/sdk": ["@opencode-ai/sdk@1.18.5", "", { "dependencies": { "cross-spawn": "7.0.6" } }, "sha512-7KgMvP5/1oxbhHj6kYBtPSTEdFKYpUeEYOzBTKdzSaRpapUpFFdn6Hkus3rr0rljO0kukWZIgRd3DrVBwTULGA=="], "@opencode-ai/sdk-next": ["@opencode-ai/sdk-next@workspace:packages/sdk-next"], @@ -1965,6 +2063,8 @@ "@opencode-ai/session-ui": ["@opencode-ai/session-ui@workspace:packages/session-ui"], + "@opencode-ai/simulation": ["@opencode-ai/simulation@workspace:packages/simulation"], + "@opencode-ai/slack": ["@opencode-ai/slack@workspace:packages/slack"], "@opencode-ai/stats-app": ["@opencode-ai/stats-app@workspace:packages/stats/app"], @@ -1979,8 +2079,14 @@ "@opencode-ai/ui": ["@opencode-ai/ui@workspace:packages/ui"], + "@opencode-ai/updates": ["@opencode-ai/updates@workspace:packages/updates"], + + "@opencode-ai/util": ["@opencode-ai/util@workspace:packages/util"], + "@opencode-ai/web": ["@opencode-ai/web@workspace:packages/web"], + "@opencode-ai/www": ["@opencode-ai/www@workspace:packages/www"], + "@openrouter/ai-sdk-provider": ["@openrouter/ai-sdk-provider@2.9.0", "", { "peerDependencies": { "ai": "^6.0.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Seva+NCa0WUQnJIUE5GzHsUv1WTIeyqwz0ELl2VtS6NP+eF+77yCXGFVOMbvoCM7QMjlnhv7931e89R+8pJdcQ=="], "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], @@ -2007,29 +2113,31 @@ "@opentelemetry/sdk-trace-node": ["@opentelemetry/sdk-trace-node@2.6.1", "", { "dependencies": { "@opentelemetry/context-async-hooks": "2.6.1", "@opentelemetry/core": "2.6.1", "@opentelemetry/sdk-trace-base": "2.6.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-Hh2i4FwHWRFhnO2Q/p6svMxy8MPsNCG0uuzUY3glqm0rwM0nQvbTO1dXSp9OqQoTKXcQzaz9q1f65fsurmOhNw=="], - "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.41.1", "", {}, "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA=="], + "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.43.0", "", {}, "sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg=="], + + "@opentui/core": ["@opentui/core@0.4.5", "", { "dependencies": { "bun-ffi-structs": "0.2.4", "diff": "9.0.0", "marked": "17.0.1", "string-width": "7.2.0", "strip-ansi": "7.1.2" }, "optionalDependencies": { "@opentui/core-darwin-arm64": "0.4.5", "@opentui/core-darwin-x64": "0.4.5", "@opentui/core-linux-arm64": "0.4.5", "@opentui/core-linux-arm64-musl": "0.4.5", "@opentui/core-linux-x64": "0.4.5", "@opentui/core-linux-x64-musl": "0.4.5", "@opentui/core-win32-arm64": "0.4.5", "@opentui/core-win32-x64": "0.4.5" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-JsgRTPkA6e+Vxmumxai6SElOSlRQkbzNKHlCfemlArRiLhfC1IZ9RXJo2QH4xSu+uBOWAM90uss73/pPlkdEig=="], - "@opentui/core": ["@opentui/core@0.3.4", "", { "dependencies": { "bun-ffi-structs": "0.2.2", "diff": "9.0.0", "marked": "17.0.1", "string-width": "7.2.0", "strip-ansi": "7.1.2", "yoga-layout": "3.2.1" }, "optionalDependencies": { "@opentui/core-darwin-arm64": "0.3.4", "@opentui/core-darwin-x64": "0.3.4", "@opentui/core-linux-arm64": "0.3.4", "@opentui/core-linux-arm64-musl": "0.3.4", "@opentui/core-linux-x64": "0.3.4", "@opentui/core-linux-x64-musl": "0.3.4", "@opentui/core-win32-arm64": "0.3.4", "@opentui/core-win32-x64": "0.3.4" }, "peerDependencies": { "web-tree-sitter": "0.25.10" } }, "sha512-y0DlrChP9lcJ4jC5z/1wMS34+ygfSTW7gD5OJHwJaAScfmlFvuJOZbwmCGrJURZ+5wFBxuOi9LatZsmeAUIKAA=="], + "@opentui/core-darwin-arm64": ["@opentui/core-darwin-arm64@0.4.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8KUG0oRidnR+oW1RSZJ72/PhZLl+qRRMk5U/mieF4c0SJ5V3tYACpBZAKzQfHNd1f7QzD8FHZct1lPpQgtmkWg=="], - "@opentui/core-darwin-arm64": ["@opentui/core-darwin-arm64@0.3.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4A7JYXUsZqhu9PPCe07E30ourSJYkitkwMujUyNKjM5e/dHNDVnz+5r5cO3M5snofLafc1DN7+9jEPn4UQzchQ=="], + "@opentui/core-darwin-x64": ["@opentui/core-darwin-x64@0.4.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-R2bocsg55gwjOqCp/MWFgFYzRmsduKegB6nzgFAPCvAD/L5Jf30xpWJWFlSg3x8vxe1L9WJ84dfqa4M7mZZ3wA=="], - "@opentui/core-darwin-x64": ["@opentui/core-darwin-x64@0.3.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-Jvm9E8n2sPhKEyKSXn9GlmJcj8WoJXJTooXb3djwjVaiimjihIj0XxHzCWhdqbDtQp+VxDFyCKoQagOOz20qhA=="], + "@opentui/core-linux-arm64": ["@opentui/core-linux-arm64@0.4.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-R4MZ25a4CzOAGVjW9aj1hUfzQGVfCJwrwBDbNs2SXaIvzcZqkxCVtU4FoQ5LsaD0j/BdNQVg2CIfFkFsm1fDuQ=="], - "@opentui/core-linux-arm64": ["@opentui/core-linux-arm64@0.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-0uPuHCeZxm/O7+L+iNQl8zRAfehiwYstKkT9J0uTZO64/byBCLvy5lvn1DiE/72s/nTJ5nwpLN+pQs2/WYVKLQ=="], + "@opentui/core-linux-arm64-musl": ["@opentui/core-linux-arm64-musl@0.4.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-ieqdyKI6EIYPalYAETB2wsdP83hr5Ifi+dFnBFUmdEEFHsoKwBmn2S7bsTOYlX7Bg03F4/YPIg+IvRpeC+cUJw=="], - "@opentui/core-linux-arm64-musl": ["@opentui/core-linux-arm64-musl@0.3.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-sJYUzYcSOb5PCXRlhwsse/fdsMiVomNvIwq/2TDhAANef+YPO3Br+OH9kQRbuj0bjVDmUS36SGYWSTFu2lUO+A=="], + "@opentui/core-linux-x64": ["@opentui/core-linux-x64@0.4.5", "", { "os": "linux", "cpu": "x64" }, "sha512-SNyuQoxMKI1vuJhgxSSW96adWM6LqFl2SoS3GM4tGeneGOanVVG2Y06PvlytXvF4cKik97t0rqkVMRetmOs93w=="], - "@opentui/core-linux-x64": ["@opentui/core-linux-x64@0.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-btYIQeNdPbN4JCrCjVB/RwMGrnRY7qWB2piNEfALSByuULKNjPKQ33PYIj38Yd01zCvCV7FotIeXEGSHx3tgCA=="], + "@opentui/core-linux-x64-musl": ["@opentui/core-linux-x64-musl@0.4.5", "", { "os": "linux", "cpu": "x64" }, "sha512-mKVKcIcPiSVVZZsdPSBoWwoa2/TCeQAaMDeHF7PFw2kt5bTXZPP7xxWfRQLCNIcA1eaGl59UuwUWHDR2Ve548Q=="], - "@opentui/core-linux-x64-musl": ["@opentui/core-linux-x64-musl@0.3.4", "", { "os": "linux", "cpu": "x64" }, "sha512-fhmUey4oJJ2+N62xlIgAPxAl36Fa7wYffqDOT4QLpm0jfyD5xzo+wL/hr2zUqaEI439R8Iq6jHNxf/Nsx1WuuQ=="], + "@opentui/core-win32-arm64": ["@opentui/core-win32-arm64@0.4.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-GHTTsqeR45q2Iek9Rb7ty+x/hAKn2jZ1ujlCgPR8LBKyF7h0E1dNFryoZ7ehMc3kJndP1sKn836IemKFqxuDdQ=="], - "@opentui/core-win32-arm64": ["@opentui/core-win32-arm64@0.3.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-sh432vPU+eLp8eA4I0KWKKn7D0VHbk01YTg6mA9/ihCNYHntc6LZ8/sLvsPv8CvKscMotfIkh3M5YhdS36BuXw=="], + "@opentui/core-win32-x64": ["@opentui/core-win32-x64@0.4.5", "", { "os": "win32", "cpu": "x64" }, "sha512-Y8T/yXCDGagRGiQrtmuB6AhRcPucKFs/Dre3v8kJwNYqDccI4FzUPKclZ7djfmRZNjl7JUqPhZZP/PwDpQocMg=="], - "@opentui/core-win32-x64": ["@opentui/core-win32-x64@0.3.4", "", { "os": "win32", "cpu": "x64" }, "sha512-dw8FcjUZaLAjw25P3/7BarobCh/QOHn3srYaWYQdysoqyvSlPkQumpI8kV/KgpJtdITU1GW02MQC4EeLIFFalA=="], + "@opentui/keymap": ["@opentui/keymap@0.4.5", "", { "dependencies": { "@opentui/core": "0.4.5" }, "peerDependencies": { "@opentui/react": "0.4.5", "@opentui/solid": "0.4.5", "react": ">=19.2.0", "solid-js": "1.9.12" }, "optionalPeers": ["@opentui/react", "@opentui/solid", "react", "solid-js"] }, "sha512-S1wzKHhF70zT6bH+VBFY+lSeTImLcIFW28JNQiME8MoPcy6KGPs7rKFSHrb/U7P8rsTJeRfW5A4d1Cy6PKodDg=="], - "@opentui/keymap": ["@opentui/keymap@0.3.4", "", { "dependencies": { "@opentui/core": "0.3.4" }, "peerDependencies": { "@opentui/react": "0.3.4", "@opentui/solid": "0.3.4", "react": ">=19.2.0", "solid-js": "1.9.12" }, "optionalPeers": ["@opentui/react", "@opentui/solid", "react", "solid-js"] }, "sha512-8fo6BZWQgCjANfbKkzPo0ghAzS1E7TlHjDDS+SUhrX01qEUO1clFTRssKluHbXd2UJY1Ehle01TV5bFmY78f8w=="], + "@opentui/solid": ["@opentui/solid@0.4.5", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.4.5", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.12", "entities": "7.0.1", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.12" } }, "sha512-B0RSkXnrtPVfEJOX+Hj+axjLJ3lzbG1BZw5I7Pvb9OPp48Vzg2cW2a3cSa86/q48ndLt647i/XwFPIw/jqnI5g=="], - "@opentui/solid": ["@opentui/solid@0.3.4", "", { "dependencies": { "@babel/core": "7.28.0", "@babel/preset-typescript": "7.27.1", "@opentui/core": "0.3.4", "babel-plugin-module-resolver": "5.0.2", "babel-preset-solid": "1.9.12", "entities": "7.0.1", "s-js": "^0.4.9" }, "peerDependencies": { "solid-js": "1.9.12" } }, "sha512-gin1VnsVBahX0nrU3mpgh5U1qvyJBIZu4NE5mc0YnObWOEf9HVNxKY4/BpUvQPh91kT6zeOzTBvAvYK4R7g9MQ=="], + "@orama/orama": ["@orama/orama@3.1.18", "", {}, "sha512-a61ljmRVVyG5MC/698C8/FfFDw5a8LOIvyOLW5fztgUXqUpc1jOfQzOitSCbge657OgXXThmY3Tk8fpiDb4UcA=="], "@oslojs/asn1": ["@oslojs/asn1@1.0.0", "", { "dependencies": { "@oslojs/binary": "1.0.0" } }, "sha512-zw/wn0sj0j0QKbIXfIlnEcTviaCzYOY3V5rAyjR6YtOByFtJiT574+8p9Wlach0lZH9fddD4yb9laEAIl4vXQA=="], @@ -2111,45 +2219,45 @@ "@oxc-parser/binding-win32-x64-msvc": ["@oxc-parser/binding-win32-x64-msvc@0.127.0", "", { "os": "win32", "cpu": "x64" }, "sha512-rOrnSQSCbhI2kowr9XxE7m9a8oQXnBHjnS6j95LxxAnEZ0+Fz20WlRXG4ondQb+ejjt2KOsa65sE6++L6kUd+w=="], - "@oxc-project/types": ["@oxc-project/types@0.127.0", "", {}, "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ=="], + "@oxc-project/types": ["@oxc-project/types@0.139.0", "", {}, "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw=="], - "@oxc-resolver/binding-android-arm-eabi": ["@oxc-resolver/binding-android-arm-eabi@11.20.0", "", { "os": "android", "cpu": "arm" }, "sha512-IjfWOXRgJFNdORDl+Uf1aibNgZY2guOD3zmOhx1BGVb/MIiqlFTdmjpQNplSN58lhWehnX4UNqC3QwpUo8pjJg=="], + "@oxc-resolver/binding-android-arm-eabi": ["@oxc-resolver/binding-android-arm-eabi@11.24.2", "", { "os": "android", "cpu": "arm" }, "sha512-y09e0L0SRI2OA2tUIrjBgoV3eH5hvUKXNkJqXmNo5V2WxIjyC7I7aJfRLMEVpA8yi95f90gFDvO0VMgrDw+vwA=="], - "@oxc-resolver/binding-android-arm64": ["@oxc-resolver/binding-android-arm64@11.20.0", "", { "os": "android", "cpu": "arm64" }, "sha512-QqslZAuFQG8Q9xm7JuIn8JUbvywhSBMVhuQHtYW+auirZJloS41oxUUaBXk7uUhZJgp44c5zQLeVvmFaDQB+2Q=="], + "@oxc-resolver/binding-android-arm64": ["@oxc-resolver/binding-android-arm64@11.24.2", "", { "os": "android", "cpu": "arm64" }, "sha512-cl4icWaZFnLdg8m6qtnh5rBMuGbxc/ptStFHLeCNwr+2cZjkjNwQu/jYRS0CHlnPecOJMpuS5M6/BH+0J/YkEg=="], - "@oxc-resolver/binding-darwin-arm64": ["@oxc-resolver/binding-darwin-arm64@11.20.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-MUcavykj2ewlR+kc5arpg4tC2RvzJkUxWtNv74pf7lcNk00GpIpN43vXMj+j6r4eMmfZhlb8hueKoIb8e9kAGQ=="], + "@oxc-resolver/binding-darwin-arm64": ["@oxc-resolver/binding-darwin-arm64@11.24.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-At29QEMF6HajbQvgY8K6OXnHD1x9rad74xBEfmCB6ZqCGsdq75aK7tOYcTbOanMy8qdIBrfL3SMr3p/lfSlb9w=="], - "@oxc-resolver/binding-darwin-x64": ["@oxc-resolver/binding-darwin-x64@11.20.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-BGB16nRUK5Etiv//ihPyzj8Lj1px0mhh4YIfe0FDf045ywknfSm0GEbiRESpr6Q4K82AvnyaRIhhluHByvS4bg=="], + "@oxc-resolver/binding-darwin-x64": ["@oxc-resolver/binding-darwin-x64@11.24.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-A5Kqr1EUj4oIL5CF4WRssq/o5P0Y11cwoFouMRmQ7YnC/A8V93nv1nb7aSU8HwcgmXropjLNkVTl4MN87cu28Q=="], - "@oxc-resolver/binding-freebsd-x64": ["@oxc-resolver/binding-freebsd-x64@11.20.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JZgtePaqj3qmD5XFHJaSLWzHRxQu0LaPkdoM1KJXYADvAaa83ijXHclV3ej3CueeW0wxfIAbGCZVP45J0CA7uQ=="], + "@oxc-resolver/binding-freebsd-x64": ["@oxc-resolver/binding-freebsd-x64@11.24.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-R5xkRBRRz7ceH/P5Jrc6G7FmdUdgpLYyESFAUDVTNQ9K0sGPxcp4ljiwEwEqsvNcQ4sYbMRrWcHHBCu7ksAJVw=="], - "@oxc-resolver/binding-linux-arm-gnueabihf": ["@oxc-resolver/binding-linux-arm-gnueabihf@11.20.0", "", { "os": "linux", "cpu": "arm" }, "sha512-hOQ/p3ry3v3SchUBXicrrnszaI/UmYzM4wtS4RGfwgVUX7a+HbyQSzJ5aOzu+o6XZkFkS3ZXN4PZAzhOb77OSg=="], + "@oxc-resolver/binding-linux-arm-gnueabihf": ["@oxc-resolver/binding-linux-arm-gnueabihf@11.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-k/RuYL4L/R58IBn3wT5ma3Wh4k62bp1eYCFRWCmMsasUOqL+H6sW0VGFadEzKWXFFlz+2uIMoeMk9ySSZJHgbg=="], - "@oxc-resolver/binding-linux-arm-musleabihf": ["@oxc-resolver/binding-linux-arm-musleabihf@11.20.0", "", { "os": "linux", "cpu": "arm" }, "sha512-2ArPksaw0AqeuGBfoS715VF+JvJQAhD2niWgjE5hVO+L+nAfikVQopvngCMX9x4BD8itWoQ3dnikrQyl5Ho5Jg=="], + "@oxc-resolver/binding-linux-arm-musleabihf": ["@oxc-resolver/binding-linux-arm-musleabihf@11.24.2", "", { "os": "linux", "cpu": "arm" }, "sha512-bnHAak3ujYfH5pKk4NieFNbvYvernfoQDgwLddbZ3OtMYrem87/qjlA+u+aKG0oZcqSLGCful/6/CEA+aeAgaA=="], - "@oxc-resolver/binding-linux-arm64-gnu": ["@oxc-resolver/binding-linux-arm64-gnu@11.20.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0bJnmYFp62JdZ4nVMDUZ/C58BCZOCcqgKtnUlp7L9Ojf/czIN+3j72YlLPeWLkzlr6SlYvIQA4SGV/HyO0d+qg=="], + "@oxc-resolver/binding-linux-arm64-gnu": ["@oxc-resolver/binding-linux-arm64-gnu@11.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-vDT3KHgzYp47gmtNOqL2VNhCyl5Zv643eyxm//A68J8DeUGXrvD1pZFiaT4jSfe+RInfnn1R2yVHye4enx6RnA=="], - "@oxc-resolver/binding-linux-arm64-musl": ["@oxc-resolver/binding-linux-arm64-musl@11.20.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-wKHHzPKZo7Ufhv/Bt6yxT7FOgnIgW4gwXcJUipkShGp68W3wGVqvr1Sr0fY65lN0Oy6y41+g2kIDvkgZaMMUkw=="], + "@oxc-resolver/binding-linux-arm64-musl": ["@oxc-resolver/binding-linux-arm64-musl@11.24.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-+kMlQvbzfyEYtu5FcjE4p+ttBLpKW4d/AsAsuE69BxV6V4twZJeIQZFfD8gh/wqglY0MkPSezWXQH0jBV13MUw=="], - "@oxc-resolver/binding-linux-ppc64-gnu": ["@oxc-resolver/binding-linux-ppc64-gnu@11.20.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-RN8goF7Ie0B79L4i4G6OeBocTgSC56vJbQ65VJje+oXnldVpLnOU7j/AQ/dP94TcCS+Yh6WG8u3Qt4ETteXFNQ=="], + "@oxc-resolver/binding-linux-ppc64-gnu": ["@oxc-resolver/binding-linux-ppc64-gnu@11.24.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-shjfMhmZ3gq9fv/w7bi3PnZlgOPG+2QAOFf0BJF0EgBSIGZ6PMLN2zbGEblTUYB/NKVDRyYhE2ff3dJ1QqNPkA=="], - "@oxc-resolver/binding-linux-riscv64-gnu": ["@oxc-resolver/binding-linux-riscv64-gnu@11.20.0", "", { "os": "linux", "cpu": "none" }, "sha512-5l1yU6/xQEqLZRzxqmMxJfWPslpwCmBsdDGaBvABPehxquCXDC7dd7oraNdKSJUMDXSM7VvVj8H2D2FTjU7oWw=="], + "@oxc-resolver/binding-linux-riscv64-gnu": ["@oxc-resolver/binding-linux-riscv64-gnu@11.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-zGelwFR5oRo+b69k8Lrzun86DyUHzfKN6cnjbR9l7Z7NIRznOE/2ZvPa1IUKqAL2PzAXOdwkfVqNvO1H2RlpAw=="], - "@oxc-resolver/binding-linux-riscv64-musl": ["@oxc-resolver/binding-linux-riscv64-musl@11.20.0", "", { "os": "linux", "cpu": "none" }, "sha512-xHEvkbgz6UC+A3JOyDQy76LkUaxsNSfIr3/GV8slwZsnuooJiIB34gzJfsyvR4JdCYNUUPsRJc/w/oWkODu+hg=="], + "@oxc-resolver/binding-linux-riscv64-musl": ["@oxc-resolver/binding-linux-riscv64-musl@11.24.2", "", { "os": "linux", "cpu": "none" }, "sha512-qxZ1SWCXJY0eyhAlP6Lmo9F2Nrtx7EkYj9oCgL8apDPCwXwCEDA2U697bbT81JIc2IrVjxO4KX6WU2N+oN9Z4w=="], - "@oxc-resolver/binding-linux-s390x-gnu": ["@oxc-resolver/binding-linux-s390x-gnu@11.20.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-aWPDUUmSeyHvlW+SoEUd+JIJsQhVhu6a5tBpDRMu058naPAchTgAVGCFy35zjbnFlt0i8hLWziff6HX0D3LU4g=="], + "@oxc-resolver/binding-linux-s390x-gnu": ["@oxc-resolver/binding-linux-s390x-gnu@11.24.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-sGCecF3cx2DFlH4t/z7ApnOnXqN48p5p5mlHDEnHTAukQa2P+qMVE4CwyWE9W+q/m3QJ7kKfGrIjax31f44oFQ=="], - "@oxc-resolver/binding-linux-x64-gnu": ["@oxc-resolver/binding-linux-x64-gnu@11.20.0", "", { "os": "linux", "cpu": "x64" }, "sha512-x2YeSimvhJjKLVD8KSu8f/rqU1potcdEMkApIPJqjZWN7c2Fpt4g2X32WDg1p+XDAmyT7nuQGe0vnhvXeLbH+g=="], + "@oxc-resolver/binding-linux-x64-gnu": ["@oxc-resolver/binding-linux-x64-gnu@11.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-k/VlMMcSzMlahb3/fENM4rTlsJ0s3fFROA0KXPBmKggqmTSaE383sl8F3KCOXPLmVsYfW6hCitMhXCEtNeZxxg=="], - "@oxc-resolver/binding-linux-x64-musl": ["@oxc-resolver/binding-linux-x64-musl@11.20.0", "", { "os": "linux", "cpu": "x64" }, "sha512-kcRLEIxpZefeYfLChjpgFf3ilBzRDZ+yobMrpRsQlSrxuFGtm3U6PMU7AaEpMqo3NfDGVyJJseAjnRLzMFHjwQ=="], + "@oxc-resolver/binding-linux-x64-musl": ["@oxc-resolver/binding-linux-x64-musl@11.24.2", "", { "os": "linux", "cpu": "x64" }, "sha512-8hbnZyNi97b/8wapYaIF9+t9GmZKBW2vunaOc3h9HGJptH7b7XpvZqOTBSm/MpTjr7H497BlgOaSfLUdhmy2bw=="], - "@oxc-resolver/binding-openharmony-arm64": ["@oxc-resolver/binding-openharmony-arm64@11.20.0", "", { "os": "none", "cpu": "arm64" }, "sha512-HHcfnApSZGtKhTiHqe8OZruOZe5XuFQH5/E0Yhj3u8fnFvzkM4/k6WjacUf4SvA0SPEAbfbgYmVPuo0VX/fIBQ=="], + "@oxc-resolver/binding-openharmony-arm64": ["@oxc-resolver/binding-openharmony-arm64@11.24.2", "", { "os": "none", "cpu": "arm64" }, "sha512-MvyGik3a6pVgZ0t/kWlbmFxFLmXQJwgLsY2eYFHLpy0wGwRbfzeIGgDwQ3kXqE30z+kSXennRkCrT7TUvkptNg=="], - "@oxc-resolver/binding-wasm32-wasi": ["@oxc-resolver/binding-wasm32-wasi@11.20.0", "", { "dependencies": { "@emnapi/core": "1.10.0", "@emnapi/runtime": "1.10.0", "@napi-rs/wasm-runtime": "^1.1.4" }, "cpu": "none" }, "sha512-Tn0y1XOFYHNfK1wp1Z5QK8Rcld/bsOwRISQXfqAZ5IBpv8Gz1IvV39fUWNprqNdRizgcvFhOzWwFun2zkJsyBg=="], + "@oxc-resolver/binding-wasm32-wasi": ["@oxc-resolver/binding-wasm32-wasi@11.24.2", "", { "dependencies": { "@emnapi/core": "1.11.2", "@emnapi/runtime": "1.11.2", "@napi-rs/wasm-runtime": "^1.1.6" }, "cpu": "none" }, "sha512-vHcssMPwO08RTvj/c0iOBz90attxyG3wQJ0dTcyEQK43LRpcdLWZlV5feBhv6Isn6ahbQIzHbCgfa81+RiML0Q=="], - "@oxc-resolver/binding-win32-arm64-msvc": ["@oxc-resolver/binding-win32-arm64-msvc@11.20.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-qPi25YNPe4YenS8MgsQU2+bIFHxxpLx1LVna2444cEHqNPhNjvWf9zqj4aWE43H9LpAsTmkkAlA3eL5ElBU3mA=="], + "@oxc-resolver/binding-win32-arm64-msvc": ["@oxc-resolver/binding-win32-arm64-msvc@11.24.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-uokJqro2iBqkFvJdKQLP7d8/BUmFwESQFVmIJUQKj1Xn1a/LysJoe1vmeECLF5b3jsV8CAL5sEMJXX6SdK9Nhg=="], - "@oxc-resolver/binding-win32-x64-msvc": ["@oxc-resolver/binding-win32-x64-msvc@11.20.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Wb14jWEW8huH6It9F6sXd9vrYmIS7pMrgkU6sxpLxkP+9z+wRgs71hUEhRpcn8FOXAFa27FVWfY2tRpbfTzfLw=="], + "@oxc-resolver/binding-win32-x64-msvc": ["@oxc-resolver/binding-win32-x64-msvc@11.24.2", "", { "os": "win32", "cpu": "x64" }, "sha512-UqGPmo56KDfLlfXFAFIrNflHT8tFxWGEivWg3Zeyp4Uy2NlKN1FGPr6/BxcLGG3+kZ6Wp14g5Uj+n71boqZfiw=="], "@oxc-transform/binding-android-arm64": ["@oxc-transform/binding-android-arm64@0.96.0", "", { "os": "android", "cpu": "arm64" }, "sha512-wOm+ZsqFvyZ7B9RefUMsj0zcXw77Z2pXA51nbSQyPXqr+g0/pDGxriZWP8Sdpz/e4AEaKPA9DvrwyOZxu7GRDQ=="], @@ -2275,7 +2383,7 @@ "@parcel/watcher-win32-x64": ["@parcel/watcher-win32-x64@2.5.1", "", { "os": "win32", "cpu": "x64" }, "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA=="], - "@peculiar/asn1-schema": ["@peculiar/asn1-schema@2.7.0", "", { "dependencies": { "@peculiar/utils": "^2.0.2", "asn1js": "^3.0.6", "tslib": "^2.8.1" } }, "sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg=="], + "@peculiar/asn1-schema": ["@peculiar/asn1-schema@2.8.0", "", { "dependencies": { "@peculiar/utils": "^2.0.2", "asn1js": "^3.0.10", "tslib": "^2.8.1" } }, "sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q=="], "@peculiar/json-schema": ["@peculiar/json-schema@1.1.12", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-coUfuoMeIB7B8/NMekxaDzLhaYmp0HZNPEjYRm9goRou8UZIC3z21s0sL9AWoCw4EG876QyO3kYrc61WNF9B/w=="], @@ -2291,8 +2399,6 @@ "@pierre/trees": ["@pierre/trees@1.0.0-beta.4", "", { "dependencies": { "preact": "11.0.0-beta.0", "preact-render-to-string": "6.6.5" }, "peerDependencies": { "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0" } }, "sha512-OfT1yk9ne8Te5+GB5zUY8yqE6B8BqjBHQJleH4lu8ltwNpoocZl4vXt1AzlEExpxI/pp+AFX5QG+lR3JjtTEag=="], - "@pinojs/redact": ["@pinojs/redact@0.4.0", "", {}, "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="], - "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], "@planetscale/database": ["@planetscale/database@1.19.0", "", {}, "sha512-Tv4jcFUFAFjOWrGSio49H6R2ijALv0ZzVBfJKIdm+kl9X046Fh4LLawrF9OMsglVbK6ukqMJsUCeucGAFTBcMA=="], @@ -2305,7 +2411,7 @@ "@poppinss/exception": ["@poppinss/exception@1.2.3", "", {}, "sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw=="], - "@preact/signals-core": ["@preact/signals-core@1.14.3", "", {}, "sha512-m0K3vnbSLC5rHs2ZVfeAMvBtT1zIyq4mxx5OlNncSgMj5Iz6W5Rn3kPrDxAC+iIKmiVe0lSl6U37t5ZkEWoVAw=="], + "@preact/signals-core": ["@preact/signals-core@1.14.4", "", {}, "sha512-HNB6HYeYKhQbJ1aKl+YRjrS4+QWHLKX6qKoUsfS/m0vqzsVaEBiZiaKbG/e+NKk2ch5ALQr/ihWaMHxiCuuWHA=="], "@protobuf-ts/plugin": ["@protobuf-ts/plugin@2.11.1", "", { "dependencies": { "@bufbuild/protobuf": "^2.4.0", "@bufbuild/protoplugin": "^2.4.0", "@protobuf-ts/protoc": "^2.11.1", "@protobuf-ts/runtime": "^2.11.1", "@protobuf-ts/runtime-rpc": "^2.11.1", "typescript": "^3.9" }, "bin": { "protoc-gen-ts": "bin/protoc-gen-ts", "protoc-gen-dump": "bin/protoc-gen-dump" } }, "sha512-HyuprDcw0bEEJqkOWe1rnXUP0gwYLij8YhPuZyZk6cJbIgc/Q0IFgoHQxOXNIXAcXM4Sbehh6kjVnCzasElw1A=="], @@ -2327,13 +2433,11 @@ "@protobufjs/float": ["@protobufjs/float@1.0.2", "", {}, "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ=="], - "@protobufjs/inquire": ["@protobufjs/inquire@1.1.2", "", {}, "sha512-pa0vFRuws4wkvaXKK1uXZMAwAX4/t8ANaJo45iw/oQHNQ9q5xUzwgFmVJGXiga2BeN+zpX7Vf9vmsiIa2J+MUw=="], - "@protobufjs/path": ["@protobufjs/path@1.1.2", "", {}, "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA=="], "@protobufjs/pool": ["@protobufjs/pool@1.1.0", "", {}, "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw=="], - "@protobufjs/utf8": ["@protobufjs/utf8@1.1.1", "", {}, "sha512-oOAWABowe8EAbMyWKM0tYDKi8Yaox52D+HWZhAIJqQXbqe0xI/GV7FhLWqlEKreMkfDjshR5FKgi3mnle0h6Eg=="], + "@protobufjs/utf8": ["@protobufjs/utf8@1.1.2", "", {}, "sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug=="], "@radix-ui/colors": ["@radix-ui/colors@1.0.1", "", {}, "sha512-xySw8f0ZVsAEP+e7iLl3EvcBXX7gsIlC1Zso/sPBW9gIWerBTgz6axrjU+MZ39wD+WFi5h5zdWpsg3+hwt2Qsg=="], @@ -2399,59 +2503,109 @@ "@remix-run/router": ["@remix-run/router@1.9.0", "", {}, "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA=="], - "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.1.5", "", { "os": "android", "cpu": "arm64" }, "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ=="], + + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.1.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw=="], + + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.1.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g=="], + + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.1.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA=="], + + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.1.5", "", { "os": "linux", "cpu": "arm" }, "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw=="], + + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.1.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q=="], + + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.1.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA=="], + + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.1.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg=="], + + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.1.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA=="], + + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.1.5", "", { "os": "linux", "cpu": "x64" }, "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ=="], + + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.1.5", "", { "os": "linux", "cpu": "x64" }, "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg=="], + + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.1.5", "", { "os": "none", "cpu": "arm64" }, "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw=="], + + "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.1.5", "", { "dependencies": { "@emnapi/core": "1.11.1", "@emnapi/runtime": "1.11.1", "@napi-rs/wasm-runtime": "^1.1.6" }, "cpu": "none" }, "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA=="], + + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.1.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw=="], + + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.1.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], "@rollup/pluginutils": ["@rollup/pluginutils@5.4.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-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg=="], - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.60.4", "", { "os": "android", "cpu": "arm" }, "sha512-F5QXMSiFebS9hKZj02XhWLLnRpJ3B3AROP0tWbFBSj+6kCbg5m9j5JoHKd4mmSVy5mS/IMQloYgYxCuJC0fxEQ=="], + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.62.2", "", { "os": "android", "cpu": "arm" }, "sha512-6o7ZLZK+BeenkZCFNDXqpbjw9bD6nuWonvS/lwQJp7NoVVxm6p3qE7qQ5jGuBjiFsgvqjD8mZAU5oWxTmbOeOg=="], + + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.62.2", "", { "os": "android", "cpu": "arm64" }, "sha512-BaH7BllCACHoH1LguOU56UItGfUWjujlO65kS9LAodViaN4bwIKd7oeW/ZHJ/4ljr/7MIiENnNy3HJ0zXv8Zkw=="], + + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.62.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-v39RCCvj4He82I9sFmk+M1VZ0PLM9sfsLVikjfx2hYBNALhrrOR2D3JjQA6AhlaSOgcR+RzrKY7e1+bT6SUO/A=="], + + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.62.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-yl0y2vq3S3lHeuXhEdss6TWfKW8vkujImO12tn4ZkG/4oghr09LvdYm2RElVjokTQiUvDUGXLGsYeLqUMCKpGA=="], - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.60.4", "", { "os": "android", "cpu": "arm64" }, "sha512-GxxTKApUpzRhof7poWvCJHRF51C67u1R7D6DiluBE8wKU1u5GWE8t+v81JvJYtbawoBFX1hLv5Ei4eVjkWokaw=="], + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.62.2", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-tT4pvt4qXD+vEoezupCWi+a1F0vvDiksiHc+PxRlYTOH1I6/X4id9jPxTP+Fg+545euaFT1jJVs4CEdHZAU1vw=="], - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.60.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tua0TaJxMOB1R0V0RS1jFZ/RpURFDJIOR2A6jWwQeawuFyS4gBW+rntLRaQd0EQ4bd6Vp44Z2rXW+YYDBsj6IA=="], + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.62.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-6nU5F2wCW+qvCBhTn1pdIU3bzsIoF7EUwsCDRxilWGprQR6yd508YnH9+OKFCwpfS8pjZqDUmnCAr7exax0XCg=="], - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.60.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-CSKq7MsP+5PFIcydhAiR1K0UhEI1A2jWXVKHPCBZ151yOutENwvnPocgVHkivu2kviURtCEB6zUQw0vs8RrhMg=="], + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.62.2", "", { "os": "linux", "cpu": "arm" }, "sha512-n1GJHPOvpIfhi3TmrCeh6S6URt9BFCt0KQE3qvexyGCTAKpR4Lg+eWvNZEqu7epxwus/8ElT3hacYEucm49SZg=="], - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.60.4", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-+O8OkVdyvXMtJEciu2wS/pzm1IxntEEQx3z5TAVy4l32G0etZn+RsA48ARRrFm6Ri8fvqPQfgrvNxSjKAbnd3g=="], + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.62.2", "", { "os": "linux", "cpu": "arm" }, "sha512-JqgflS8wEB+UXV/vS1RpRbifGBeN4D5lz8D8oOFbFZw4vedvdOgCFAjfBmIMdW3yL10XpQQ0Ambepw6MXrhOnA=="], - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.60.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-Iw3oMskH3AfNuhU0MSN7vNbdi4me/NiYo2azqPz/Le16zHSa+3RRmliCMWWQmh4lcndccU40xcJuTYJZxNo/lw=="], + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.62.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-wnFJkogWvN4jm/hQRF2UBaeUmk20j5+DmHvoyWii2b8HJDyvz1MF2OU/6ynXt2KR63rbZLWkFpoytpdc/yBuSA=="], - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.60.4", "", { "os": "linux", "cpu": "arm" }, "sha512-EIPRXTVQpHyF8WOo219AD2yEltPehLTcTMz2fn6JsatLYSzQf00hj3rulF+yauOlF9/FtM2WpkT/hJh/KJFGhA=="], + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.62.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-HVu2bp0zhvJ8xHEV9+UUs7S90VadmBSY3LcIMvozbPo4AuMGDWlz3ymHLHZPX4hR67TKTt8Qp5PJ5RBg/i+RMQ=="], - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.60.4", "", { "os": "linux", "cpu": "arm" }, "sha512-J3Yh9PzzF1Ovah2At+lHiGQdsYgArxBbXv/zHfSyaiFQEqvNv7DcW98pCrmdjCZBrqBiKrKKe2V+aaSGWuBe/w=="], + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-mQqqAV8QaoSgr9I2fKDLY2BAVvmKjWoGiu/cSYQonsLvtqwEn1E4QYfnCOcp5zoEqNhsDYin1s6jx/VJmrxlZg=="], - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.60.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-BFDEZMYfUvLn37ONE1yMBojPxnMlTFsdyNoqncT0qFq1mAfllL+ATMMJd8TeuVMiX84s1KbcxcZbXInmcO2mRg=="], + "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-IxKLoxCQ2IWi6bT2akyDUBGsOImDKB+sPp4EsTmwFQ/fMwpCKm8uLSSgP/Kx/QYUgKis6SEZ5/Nlhup0DIA0PQ=="], - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.60.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-pc9EYOSlOgdQ2uPl1o9PF6/kLSgaUosia7gOuS8mB69IxJvlclko1MECXysjs5ryez1/5zjYqx3+xYU0TU6R1A=="], + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.62.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-Mk5ha2RQSgyFfmYYLkBpPnUk8D8FriBxesO1u9O75X0mHgXL1UQcH5Itl2lurWL2tj0RxV9b9tJgipac0hRY9A=="], - "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-NxnomyxYerDh5n4iLrNa+sH+Z+U4BMEE46V2PgQ/hoB909i8gV1M5wPojWg9fk1jWpO3IQnOs20K4wyZuFLEFQ=="], + "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.62.2", "", { "os": "linux", "cpu": "ppc64" }, "sha512-CjvEnqJL/0/TQ3TXX3OPIJ/kmBellrWd4heXUmHeJlTnmwjKpSJzoehLaL6Xk0ZnMHBu9dZuFADNOrtjF4v+2w=="], - "@rollup/rollup-linux-loong64-musl": ["@rollup/rollup-linux-loong64-musl@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-nbJnQ8a3z1mtmrwImCYhc6BGpThAyYVRQxw9uKSKG4wR6aAYno9sVjJ0zaZcW9BPJX1GbrDPf+SvdWjgTuDmnw=="], + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-1SiZbzwdkaDURsew/tSOrooKiYy7EQGT6m8ufavAi9NEyQb/6VuIxFXAL1fqa4iZe3g4NbNk4P7J32z2tw5Mgg=="], - "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.60.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-2EU6acNrQLd8tYvo/LXW535wupT3m6fo7HKo6lr7ktQoItxTyOL1ZCR/GfGCuXl2vR+zmfI6eRXkSemafv+iVg=="], + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.62.2", "", { "os": "linux", "cpu": "none" }, "sha512-nQts12zJ3NQRoE6uYljOH89v7szzLDvG2JD/vsX+vGXU8w/At1GowTZ5/7qeFQ8m7L55rpR8Okugnuo5bgjy2Q=="], - "@rollup/rollup-linux-ppc64-musl": ["@rollup/rollup-linux-ppc64-musl@4.60.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-WeBtoMuaMxiiIrO2IYP3xs6GMWkJP2C0EoT8beTLkUPmzV1i/UcOSVw1d5r9KBODtHKilG5yFxsGRnBbK3wJ4A=="], + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.62.2", "", { "os": "linux", "cpu": "s390x" }, "sha512-E9/ll019jhPIJgpzfZoIkBGhcz+kKNgVWYRY0zr9srBdPPFVpvOKW8VaJKUbeK+eZXyQF9ltME+Kk6affeaPgg=="], - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-FJHFfqpKUI3A10WrWKiFbBZ7yVbGT4q4B5o1qKFFojqpaYoh9LrQgqWCmmcxQzVSXYtyB5bzkXrYzlHTs21MYA=="], + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.62.2", "", { "os": "linux", "cpu": "x64" }, "sha512-5BqxR/pshjey51iliyzTD5Xi3EN0aLmQ2lZ3lvefVV9c82BvrLo2/6OT55iifpWBufs6kdwWbuOKS841DrmK9A=="], - "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.60.4", "", { "os": "linux", "cpu": "none" }, "sha512-mcEl6CUT5IAUmQf1m9FYSmVqCJlpQ8r8eyftFUHG8i9OhY7BkBXSUdnLH5DOf0wCOjcP9v/QO93zpmF1SptCCw=="], + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.62.2", "", { "os": "linux", "cpu": "x64" }, "sha512-uNN83XxQrRAh/w0/pmAfibcwyb6YWt4gP+dpnQKPVJshAloQ785ii8CT8ZCIxkGg9opVsvAlGhFitSm6D1Jjpg=="], - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.60.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-ynt3JxVd2w2buzoKDWIyiV1pJW93xlQic1THVLXilz429oijRpSHivZAgp65KBu+cMcgf1eVVjdnTLvPxgCuoQ=="], + "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.62.2", "", { "os": "openbsd", "cpu": "x64" }, "sha512-srjEIxSH3LRnJN6THczDHWQplqEMFiAJrTab0msUryh9kwNpkICf3Ea6q6MN/2cZwRFUNx5w+h6Hpi4QuHS6Zg=="], - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.60.4", "", { "os": "linux", "cpu": "x64" }, "sha512-Boiz5+MsaROEWDf+GGEwF8VMHGhlUoQMtIPjOgA5fv4osupqTVnJteQNKJwUcnUog2G55jYXH7KZFFiJe0TEzQ=="], + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.62.2", "", { "os": "none", "cpu": "arm64" }, "sha512-8hOJnxgbyObnCm5AlRA3A931xX19xq80RjVTKgJOvEKWqJruP/Uf12IbAOaDjjEXYRewwHLfmF0YRIdK3OwKWA=="], - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.60.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+qfSY27qIrFfI/Hom04KYFw3GKZSGU4lXus51wsb5EuySfFlWRwjkKWoE9emgRw/ukoT4Udsj4W/+xxG8VbPKg=="], + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.62.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-mmF4AY1i0hG/bLWUctUq59gtmgaSIRa3cu/A3JFRp/sCNEme2bgDEiDS22P9FbnJB8NJNF4jPJiSP5RHQpUTDg=="], - "@rollup/rollup-openbsd-x64": ["@rollup/rollup-openbsd-x64@4.60.4", "", { "os": "openbsd", "cpu": "x64" }, "sha512-VpTfOPHgVXEBeeR8hZ2O0F3aSso+JDWqTWmTmzcQKted54IAdUVbxE+j/MVxUsKa8L20HJhv3vUezVPoquqWjA=="], + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.62.2", "", { "os": "win32", "cpu": "ia32" }, "sha512-DZgkknc6jhHrk46V25vbAM0zZkyP0nSDkJB8/dRkLTxv470dOmWDqGoEJl/9A0dFfS7yE3REOwNDxpHwSLSt0Q=="], - "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.60.4", "", { "os": "none", "cpu": "arm64" }, "sha512-IPOsh5aRYuLv/nkU51X10Bf75Bsf6+gZdx1X+QP5QM6lIJFHHqbHLG0uJn/hWthzo13UAc2umiUorqZy3axoZg=="], + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.62.2", "", { "os": "win32", "cpu": "x64" }, "sha512-T6xr6ucWSFto+VGajA8YH26LdpHRuP4YLHEKAtCWvJDOlnmWcDZVCI2Jmjr+IFHDlt2zRaTAKE4tfjTaWLgJBg=="], - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.60.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-4QzE9E81OohJ/HKzHhsqU+zcYYojVOXlFMs1DdyMT6qXl/niOH7AVElmmEdUNHHS/oRkc++d5k6Vy85zFs0DEw=="], + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.62.2", "", { "os": "win32", "cpu": "x64" }, "sha512-BfzEnDJOt9T8M989/lA37EcJgat01wLRnoi5dQf3QzOH7jzpqTAzdDbVfRljVr5r+jzKqpbHeyOfAaXxAd0PAA=="], - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.60.4", "", { "os": "win32", "cpu": "ia32" }, "sha512-zTPgT1YuHHcd+Tmx7h8aml0FWFVelV5N54oHow9SLj+GfoDy/huQ+UV396N/C7KpMDMiPspRktzM1/0r1usYEA=="], + "@scalar/astro": ["@scalar/astro@0.4.11", "", { "dependencies": { "@scalar/client-side-rendering": "0.3.4" }, "peerDependencies": { "astro": "^4.0.0 || ^5.0.0" } }, "sha512-iZHZrLb0bx/s9efUkn5JKdZeyawODmfnoJl5hTu1uJxUwjKtAVtx8MFVXo8JkyC3/s8XFXGGs66d+S/Ji8eYJg=="], - "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.60.4", "", { "os": "win32", "cpu": "x64" }, "sha512-DRS4G7mi9lJxqEDezIkKCaUIKCrLUUDCUaCsTPCi/rtqaC6D/jjwslMQyiDU50Ka0JKpeXeRBFBAXwArY52vBw=="], + "@scalar/client-side-rendering": ["@scalar/client-side-rendering@0.3.4", "", { "dependencies": { "@scalar/schemas": "0.7.4", "@scalar/types": "0.16.4", "@scalar/validation": "0.6.2" } }, "sha512-kb3B+FGjvAUr2DU0fe9dVKBLwot1TjOO+iHCTmY8r8FUJySmYKGQYCicRzzilOyTjvKspiZBCEr03PWaWW+1gw=="], - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.60.4", "", { "os": "win32", "cpu": "x64" }, "sha512-QVTUovf40zgTqlFVrKA1uXMVvU2QWEFWfAH8Wdc48IxLvrJMQVMBRjuQyUpzZCDkakImib9eVazbWlC6ksWtJw=="], + "@scalar/helpers": ["@scalar/helpers@0.9.2", "", {}, "sha512-hjyMpMZjTBZQhyByZmz5oUgRKUQJO5V5AOiJxsVEGbUmgA7sJRQeTrXLB+BEwzaKS5nm2opJeNyMBYLFNK4hiQ=="], + + "@scalar/json-magic": ["@scalar/json-magic@0.12.19", "", { "dependencies": { "@scalar/helpers": "0.9.2", "pathe": "^2.0.3", "yaml": "^2.8.3" } }, "sha512-1T4QoFYZ1nKt25xFeHtghAuZzaLq2X4CpCSLFXG0Fjcz6K2HIZqo+RtywfI0WD8RRRRgS34keo7X4Gv1BQUNoQ=="], + + "@scalar/openapi-parser": ["@scalar/openapi-parser@0.28.10", "", { "dependencies": { "@scalar/helpers": "0.9.2", "@scalar/json-magic": "0.12.19", "@scalar/openapi-types": "0.9.3", "@scalar/openapi-upgrader": "0.2.11", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "ajv-formats": "^3.0.1", "jsonpointer": "^5.0.1", "leven": "^4.0.0", "yaml": "^2.8.3" } }, "sha512-jn3ftvtNTcWOgxf7XVn9CvJGMjFS7QU1b6FiGmibzAlR/6pOP3Ei7sBBnfIY4PBwHjHgMAGBoGApfOV8h75gPQ=="], + + "@scalar/openapi-types": ["@scalar/openapi-types@0.9.3", "", {}, "sha512-34qglt5jSo55iZfH9i7EhjQCdE0Po2xZeh8wytQKolSnXrxsYMSyFDJEBxz1Gaew4on9N3XIWsd0QpwKVA5CSA=="], + + "@scalar/openapi-upgrader": ["@scalar/openapi-upgrader@0.2.11", "", { "dependencies": { "@scalar/openapi-types": "0.9.3" } }, "sha512-eYEFBO8mZfgXEO/hv8rdL5OA4oOB8orFT5kXNK4I/x9xca2D7A4BteuFXqRaw9lE1CIjtG+StlAUYVz5omTXew=="], + + "@scalar/schemas": ["@scalar/schemas@0.7.4", "", { "dependencies": { "@scalar/helpers": "0.9.2", "@scalar/validation": "0.6.2" } }, "sha512-Or31zxR+ceGGhkVU5XBO2Zv7oyGDtjsJOjM2Rr0WRZ1/tRsQc2/FsVv+9kPmCA7sqFL8BKWlNfTXcPITI7WRHw=="], + + "@scalar/types": ["@scalar/types@0.16.4", "", { "dependencies": { "@scalar/helpers": "0.9.2", "nanoid": "^5.1.6", "type-fest": "^5.3.1", "zod": "^4.3.5" } }, "sha512-fLf0ANAC3iQq0sIVdmH6aGM+pFSLyD8GfGBxSWcLpI0jE0iFAzX2A3p0qVZm7vqBT4TQnn0fSwg5U+h+FZ52BA=="], + + "@scalar/validation": ["@scalar/validation@0.6.2", "", {}, "sha512-Sc1TkcwGV6aVCO51AyKeaGiP8gpwAHxEtO5d3tZzPV+KsnlC/YokQxFxwBrbIXw73k9hmcExnJyGu3k5i6n6VA=="], "@selderee/plugin-htmlparser2": ["@selderee/plugin-htmlparser2@0.11.0", "", { "dependencies": { "domhandler": "^5.0.3", "selderee": "^0.11.0" } }, "sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ=="], @@ -2509,6 +2663,8 @@ "@shikijs/transformers": ["@shikijs/transformers@3.9.2", "", { "dependencies": { "@shikijs/core": "3.9.2", "@shikijs/types": "3.9.2" } }, "sha512-MW5hT4TyUp6bNAgTExRYLk1NNasVQMTCw1kgbxHcEC0O5cbepPWaB+1k+JzW9r3SP2/R8kiens8/3E6hGKfgsA=="], + "@shikijs/twoslash": ["@shikijs/twoslash@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/types": "4.3.1", "twoslash": "^0.3.9" }, "peerDependencies": { "typescript": ">=5.5.0" } }, "sha512-xK8inH/gK++1V4rTxrwCwjvaNwkkJ7oDjOIpdqONVxIpAFnVC3gzqjH5KiXGTelUcxpUJ3PtOKWct1YQ0kAloA=="], + "@shikijs/types": ["@shikijs/types@3.9.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-/M5L0Uc2ljyn2jKvj4Yiah7ow/W+DJSglVafvWAJ/b8AZDeeRAdMu3c2riDzB7N42VD+jSnWxeP9AKtd4TfYVw=="], "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], @@ -2527,7 +2683,7 @@ "@silvia-odwyer/photon-node": ["@silvia-odwyer/photon-node@0.3.4", "", {}, "sha512-bnly4BKB3KDTFxrUIcgCLbaeVVS8lrAkri1pEzskpmxu9MdfGQTy8b8EgcD83ywD3RPMsIulY8xJH5Awa+t9fA=="], - "@sindresorhus/is": ["@sindresorhus/is@7.2.0", "", {}, "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw=="], + "@sindresorhus/is": ["@sindresorhus/is@4.6.0", "", {}, "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw=="], "@slack/bolt": ["@slack/bolt@3.22.0", "", { "dependencies": { "@slack/logger": "^4.0.0", "@slack/oauth": "^2.6.3", "@slack/socket-mode": "^1.3.6", "@slack/types": "^2.13.0", "@slack/web-api": "^6.13.0", "@types/express": "^4.16.1", "@types/promise.allsettled": "^1.0.3", "@types/tsscmp": "^1.0.0", "axios": "^1.7.4", "express": "^4.21.0", "path-to-regexp": "^8.1.0", "promise.allsettled": "^1.0.2", "raw-body": "^2.3.3", "tsscmp": "^1.0.6" } }, "sha512-iKDqGPEJDnrVwxSVlFW6OKTkijd7s4qLBeSufoBsTM0reTyfdp/5izIQVkxNfzjHi3o6qjdYbRXkYad5HBsBog=="], @@ -2537,93 +2693,93 @@ "@slack/socket-mode": ["@slack/socket-mode@1.3.6", "", { "dependencies": { "@slack/logger": "^3.0.0", "@slack/web-api": "^6.12.1", "@types/node": ">=12.0.0", "@types/ws": "^7.4.7", "eventemitter3": "^5", "finity": "^0.5.4", "ws": "^7.5.3" } }, "sha512-G+im7OP7jVqHhiNSdHgv2VVrnN5U7KY845/5EZimZkrD4ZmtV0P3BiWkgeJhPtdLuM7C7i6+M6h6Bh+S4OOalA=="], - "@slack/types": ["@slack/types@2.21.1", "", {}, "sha512-I8vmSjNYWsaxuWPx6dz4yeh0h7vRBWbgAMK14LEmblbZ404BtrPbXs6jDPx4cYgGf8msDGF4A9opLZBu21FViQ=="], + "@slack/types": ["@slack/types@2.22.0", "", {}, "sha512-sZ9lIgJhPX2qft/tKWiklFlc0o1FWeI7QtciZJfW1+ErH1eGGHvOZ8e73sleTCFEFJp1q/R0WeS8Oa7AsiDprg=="], "@slack/web-api": ["@slack/web-api@6.13.0", "", { "dependencies": { "@slack/logger": "^3.0.0", "@slack/types": "^2.11.0", "@types/is-stream": "^1.1.0", "@types/node": ">=12.0.0", "axios": "^1.7.4", "eventemitter3": "^3.1.0", "form-data": "^2.5.0", "is-electron": "2.2.2", "is-stream": "^1.1.0", "p-queue": "^6.6.1", "p-retry": "^4.0.0" } }, "sha512-dv65crIgdh9ZYHrevLU6XFHTQwTyDmNqEqzuIrV+Vqe/vgiG6w37oex5ePDU1RGm2IJ90H8iOvHFvzdEO/vB+g=="], - "@smithy/config-resolver": ["@smithy/config-resolver@4.5.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-HehAZr4sq2m+4zHgEqDvtWENy/B5yywMKA8Pl4gBcU3F4ekelpZqDLDxQHdJlguaKNyTq31cZYjLWomzdujQrA=="], + "@smithy/config-resolver": ["@smithy/config-resolver@4.6.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-OSWakjTQRuMCps5YE8fOxGdDv7gEtanlyn5KtfCBgDE+dvaUPJH7xDQRADRnnBoMh792cGFUsvFLmxobxOpbkg=="], - "@smithy/core": ["@smithy/core@3.24.5", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-Kt8phUg45M15EjhYAbZ+fFikYneijLu9Liugz8ZsYz2i8j0hzGv27LWKpEHYRfvj+LyCOSijpcR/2i8RouV+cA=="], + "@smithy/core": ["@smithy/core@3.29.5", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-i0dk2t5B+CwV/dcJdUHILYkOQF5lof8f44dFCfDWToGCxjT9YQ+CgHqTAvJxzc3+zqQwm2QtVoJ5IqiNar/CnQ=="], - "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.3.6", "", { "dependencies": { "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-tHhdiWZfG1ZIh2YcRfPJmY2gHcBmqbAzqm3ER4TIDFYsSEqTD5tICT7cgQ/kI8LRakxp12myOYyK68XPn7MnHw=="], + "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-MJenAe4OKRZUo1LdYYFDCsSHxaHvInIU/z52GsheO9vl1/VSySVCr0zkyKD6TFiGkSUaWGxvKZ/70OvgUZR5HQ=="], - "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.7", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.11.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ=="], + "@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.14", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.14.1", "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw=="], - "@smithy/eventstream-serde-browser": ["@smithy/eventstream-serde-browser@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-M9rMkTar7JcRrvUHsK1271AuWDmrISIPQpQ4TSHmYZ4KMisGnMH0gfjCWnBwdndR7skvvp/UheHhZGvO3Cr8/g=="], + "@smithy/eventstream-serde-browser": ["@smithy/eventstream-serde-browser@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-zey14RlIRiCM3OqDI2f+dMJnUgKnRTQfnnbnPjJToUh7Jc4AI7LGSWa1uLMJx1o6FeODC5iYz6HhpPeNv9LfPw=="], - "@smithy/eventstream-serde-config-resolver": ["@smithy/eventstream-serde-config-resolver@4.4.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-lUwPPu7DNNVJjeS+gV7g2rDHbW9X1wSRQIsIyzOgBtP7KDMefLhz0kz42AWAxZIFPcOO3pUbtq76LSkVcxLKRw=="], + "@smithy/eventstream-serde-config-resolver": ["@smithy/eventstream-serde-config-resolver@4.5.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-tO9Odivl70u8YwSxg0mnZ3DRqN8aVwISWb6GQBx+fX6rFPhS6fub6dPg+2N8osdoOp6TQa2hRUwMUJVDw/CPJg=="], - "@smithy/eventstream-serde-node": ["@smithy/eventstream-serde-node@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-QydEYKqvdiS6dJb0tOfDiogt12FzzImt2FnL7gMD72hNrkiUAUKqtStRmkTrdzDKFJ46abe3yH94luCuhtnCkQ=="], + "@smithy/eventstream-serde-node": ["@smithy/eventstream-serde-node@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-Z7W4LpEWHcOOwGwXpPujDVcpOeDwEtfyBFfj/2eqXjMsBu+dk1cmiJx8kM13IQ4v2WbTlhmkydVc7ViHoT6i3A=="], - "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.4.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-SK3VMeH0fibgdTg2QeB+O4p7Yy/2E5HBOHJeC58FshkDdeuX8lOgO7PfjYfLyPLP1ch55j91cQqKBzDS0mRjSQ=="], + "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.6.7", "", { "dependencies": { "@smithy/core": "^3.29.5", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3zpg8yqqyXzoK2TsRDdkqVOj2RDBFfLXwCczOZ5c7TWB4eiaebfSCsbMjDPYB3PJ9ihV62QaeadZ+wLadZtNGA=="], - "@smithy/hash-blob-browser": ["@smithy/hash-blob-browser@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-DNInwxNX32WtmhiKVrplzFtkKk5ePNHitJYPCnsPrD2EHm06iWJKQo8F8eq5ss94yp/xSfmojYD7nFBsgzrHHQ=="], + "@smithy/hash-blob-browser": ["@smithy/hash-blob-browser@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-DFOpzjXqmxvGtR9i+MdjMduBsDg1l+szdg8vGzPdM3z6I+GA/9T1Y2snHP9LzIH0lVfbVPMOlUm2vlpmr9eAeQ=="], - "@smithy/hash-node": ["@smithy/hash-node@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-/tUIDaB36qjLq/CIhMRIiFXCT7rVGBGAhFmMA9PbC/iW2u3QPNATZuFSdK0JBO3qeSPoHBeudFMmsbFq2Mf5EQ=="], + "@smithy/hash-node": ["@smithy/hash-node@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-y0CfGFpEVyGg6EfrBj0BWkgfaRiXk+dG4t3xYNPMbnkOBBy8Yv8THUDsmkHXe2PyzYIzC6uPlT97kZoX6KF9vg=="], - "@smithy/hash-stream-node": ["@smithy/hash-stream-node@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-dLboKYf5ezU+b8SDDzVNjSHWHYPiU9aTI7IfIh9GhUpvCkwfdw1zUtK6dAGFHOrI5l1nVmsEWZrcAHophlNKug=="], + "@smithy/hash-stream-node": ["@smithy/hash-stream-node@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-ejfPsyC4svGSFNCzkAyMmPpmbenmQiUDtPHN8nv/84cPJAHMsdVC7+uvlby2awzvolUOeaKFR0qJdefXK2cPIg=="], - "@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-c8C1GzrU4PcY1QT/HP0ILCTLutyVONT93kPSisOyHoZaXlKQZtV6+RKqolhBtPolGULf59vq2yseagU6+WY82w=="], + "@smithy/invalid-dependency": ["@smithy/invalid-dependency@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-gF+13AFjZoEjRcUNdkA2Q8tjL2/m3f7ipcZ2w35Hj6Sm9A+gj+yEsuGV70X3UPHar5tTl+385F4Zi9DBaIW3Ag=="], - "@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-AzWk7NstKv+z3h0GmZlQkDdgcnh3tvBWnBr0zoBY/agV/zaMqEBnpqgF1S+sJAy5yfE1b2KZqiz+uHHV70vOYg=="], + "@smithy/is-array-buffer": ["@smithy/is-array-buffer@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-cSYSMD4kxTkKwWjpn7BH8Ex7H5HcO/pBoA/JDwvVtJ6nUNKCtgz6HxcZENFZ9jVCC++0oHMqBgKUvymOtharYw=="], - "@smithy/md5-js": ["@smithy/md5-js@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-U/zFWFDuNFspkLAtUbatmpevrRjXwQkoGPJTg1hapUsjLKK+aN3u4seX4+aSBzLom+RnZSdWncfSIgG100vsGg=="], + "@smithy/md5-js": ["@smithy/md5-js@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-XI5xhWxRkWuiLNj0/Z30vLTPpZe9UQcg57Ox/n4vzGmFiHSrD+xAmx6ubEcWt6u69IOH+4LAucpaZk5AMxB8oQ=="], - "@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-lzOzJ4c0t3vkBut02CjdWNgduN3mUWjc1WK9TPr75KVV6OgVWico9wMDn9ZnQN97VJPYfweBW6Dm5CElvQl8BQ=="], + "@smithy/middleware-content-length": ["@smithy/middleware-content-length@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-fF04hl+iHSBW1xuXKaKDwp2/OSiClOYHi16+KZxmlTu/DIoy0VyOVaPnJh+ZlKXeYKMz/jR8/eoQ1rDHpft8qA=="], - "@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.5.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-8DnkSoUMQAcuT/DHdigsFPti8M/Dm6TPCAsrIQ/bUDGxRkrgGuI++3dXRr8CoUyc9r0kGSCcZHjJje407ydgBQ=="], + "@smithy/middleware-endpoint": ["@smithy/middleware-endpoint@4.6.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-AxGe7eMGOwmANI/K6O6a95hTInLocQslDVwCiidV7tat0JDcbpRr0c33VwieO8P3mlh7mqiNhBlyG7VlzZxZIg=="], - "@smithy/middleware-retry": ["@smithy/middleware-retry@4.6.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-fumMIfh5xOFjirylbSzmBX9bgQtrWFtQrosPfkjsJSBzqXVbQMNDGIC8oJBz4V3bokIm2F0CL3bziLtbXR7cbA=="], + "@smithy/middleware-retry": ["@smithy/middleware-retry@4.7.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-JY4Oi57f0uVIncDmNnUEGNkyoJZ7bw9rVZPIrgRyEPdDhcCDvhYYomY/FTQBS4JnrJx168c739NLoJzsygGdxA=="], - "@smithy/middleware-serde": ["@smithy/middleware-serde@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-+7glfRrb7byruZCPAM53TvmK8cx/ghzAThB4EvPzHynAYobtISl0g+DzzSVEC0NQob5BunP9gC9GP+Fcz6H9yw=="], + "@smithy/middleware-serde": ["@smithy/middleware-serde@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-x1LF7xwoZfvnU1G6wYV9Zm788t13CTvx+QPtdBMxNOBnAc1xArpO4ekr0lPEs7nKbvYgCecLwBZa3hjwMHWwtA=="], - "@smithy/middleware-stack": ["@smithy/middleware-stack@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-Yj4wjBQZXHePRIy9cBIKfCOn/kPjRlgDPGlr7DjIhwrnz8kWu7Ux7UwPr51P/wcug5oq4nWdBXSY4TV5afBdew=="], + "@smithy/middleware-stack": ["@smithy/middleware-stack@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-Uw0gfjz9HgGaaL6+AIMMfs0put11pnuRJltHNU6TU73BfR3Cowms14WM4ovSDxkpJrgNlSQb1XKJVVNUtHhIkQ=="], - "@smithy/node-config-provider": ["@smithy/node-config-provider@4.4.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-c2G9QJ4xVZLwAkAf+WQESSSCkKbtt33ytje1klGvTcBn6cKuqV28E+62wbRPHwuTikkB3LQ7CBnNrayCoJur5A=="], + "@smithy/node-config-provider": ["@smithy/node-config-provider@4.5.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-8J0iQAEQ+WKwUh8NuR7SEr3wdSbXSvTQ2PLMcgWmL8TGqHsy0glEnaZvbuYCQr4RkZjxJ3mfSI2BsbPrxcsRIA=="], - "@smithy/node-http-handler": ["@smithy/node-http-handler@4.7.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-3dA9TQ+ybRSZ/m0wnbZhiBy4Dezjgq1Ib/ZZrYTpJDBgpoLLU/SDzZc/g0x0MNAdOJe1wPcM+x2PBRmoOur+Sw=="], + "@smithy/node-http-handler": ["@smithy/node-http-handler@4.9.7", "", { "dependencies": { "@smithy/core": "^3.29.5", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-wCU8HCLjAtAVqxxe0j2xff9LcEPw3yjBbg5IdQDIYFnxnPxbxcSLc7rgex7kqm9L/WYOnJEgaWQlfDkZleozMA=="], - "@smithy/property-provider": ["@smithy/property-provider@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-QNc22/FgfEm/9/rkefShfQUVckH3HWiQ2RPs+40hwAdY65hbg88gombeHwkfMzmVDZjolcyQeyOjnxZRmpavIA=="], + "@smithy/property-provider": ["@smithy/property-provider@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-xAxI0w1j9CxzSL3LwRY65/LOuctKBvpnUqEcx5kTNNDqB+8+tw+MjFzCnW2meRswGjSRDYqNvtMie6CxkYmkrA=="], - "@smithy/protocol-http": ["@smithy/protocol-http@5.4.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-jOD+4WNWQLntiLJn3r82C7BLheEbRCKTbU5U5bskZmT7nwRiGkh0IghuHwHRZ1ZEFXpHltQxxp9/koOPsdluJg=="], + "@smithy/protocol-http": ["@smithy/protocol-http@5.5.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-0AnsOUvCHQBOXnBJbrX9QGidpvbb3F4aIUFlWPXCfRYxYCcoxj9Uq+b8j75wIZRIwhwiKDWJDZmoHjjQ82GYZA=="], - "@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.5.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-W7IPDXj8AZdyH5EWEXmOvN7ao8iN0JKJ0FNLpGcqj08HZc0MmqGcJnGgh3DfUdGYtzrPIEudxs+ovq/EWZgLjg=="], + "@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.6.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-1Z0EugVOVGP8Bz78J1+m2NQfZ3HEqev+6VOf5vbiaT5S4mEiwFS2Gh+sUUazIl0EYlLsyjbXUuiMhD8vAMcBfg=="], - "@smithy/signature-v4": ["@smithy/signature-v4@5.4.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-QBJKWGqIknH0dc9LWpfH1mkdokAx6iXYN3UcQ3eY6uIEyScuoQAhfl94ge7ozUy9WgFUdE8xsvwBjaYBbWmPNA=="], + "@smithy/signature-v4": ["@smithy/signature-v4@5.6.6", "", { "dependencies": { "@smithy/core": "^3.29.5", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-efP6DN3UTFrzIsGO42/xcabv8jU7+9nwEdphFUH7yL0k010ERyAWaO41KFQIDLcFZLZ8xzIQr4wplFxNzslSGQ=="], - "@smithy/smithy-client": ["@smithy/smithy-client@4.13.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-pg9QRQESz3m/5HgAW/z9lA3ln8MSsCWNWc82MX40Djlxpcj/+7DZQ0yIk7tGWYJCVZog/9LBdNl1uEVRAhqm5Q=="], + "@smithy/smithy-client": ["@smithy/smithy-client@4.14.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-afUBB2TJBFTlC3axCVDoVStuwkIzMlAAMY/9/pNyE3uspyTxJRczEb/5YiXuE2V1CfX4uGEQPpwZ8mtTzyq5yA=="], - "@smithy/types": ["@smithy/types@4.14.2", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw=="], + "@smithy/types": ["@smithy/types@4.16.1", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-0JFs3V2y2M9tKW5na/qxe69Zv+uxLMO7QBbhxF/FHu/Gp2NFZAAL9tWl9PU02xxo07pb3G9FTyjNc6D5uZrJIg=="], - "@smithy/url-parser": ["@smithy/url-parser@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-f7kUYrRdLiAHz10WXQXiUkuBFaL2c2ZBD2kSwZyQBh73lWFTvXwdpS9l5irQ/uldk8YMJpm66BozmqCg/3uZvA=="], + "@smithy/url-parser": ["@smithy/url-parser@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-f1bDXQ9mDozbWok054W8GKwuk7qI33E3S6RvbHtplaBc3BVzxh94zndEqDqTxdxlqKRplsmhuNO0hOhU4AQQ2A=="], - "@smithy/util-base64": ["@smithy/util-base64@4.4.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-2J8l+DoX3IIiP75X5SYkJ3mIgOkxW29MxOs7oPjbXLuInQ7UL6zLw2IJHbQ44+eKDBBhTjvt+GgwsTTNBGt8zA=="], + "@smithy/util-base64": ["@smithy/util-base64@4.5.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-piUTpCteEPeqiIw5nU/8phVUSpjXRU6M5rEF3XUyUJtqP5LUkvVf9zpWCbYqv7kj3SzBW36sKW2c0CiOs2fA/A=="], - "@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-nQtYwXg4spM6uc0Luq3yck+WXZ1VPfrYkC2SqkQ+YOGks0qR2bKKlSCjidSqfpq+VAY/RJe1O5V+CtBmnT63KQ=="], + "@smithy/util-body-length-browser": ["@smithy/util-body-length-browser@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-/TTYEuHmnPHDHociNoSsz9EeoeS91oYwuBIHYcCqwGGOW6B+T0Xll03S0Q8UepI40FuSf3mMrkre7npFCHhttg=="], - "@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-BAsAed9yWExECwNIi61Le6D8ZTY71MFEFrf3d4L2+uzcbTjFAWxOtymkA1vCV8bNZQN9TGgZo4c68JDsnjNShA=="], + "@smithy/util-body-length-node": ["@smithy/util-body-length-node@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-8HYVvYG32E2wLq4MTlgRlcghZxcj6BvBXkSMqULEJQFLnQeiHptQ2xUYH98KJwaC7CBPrZawQwUfcmEicJs4AQ=="], - "@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-CthqHx5VTlNIsS5rJni+pIfkGgYPnVFsy9qYiv8e+hMQDPemZod5wTa+2DkrI+vubX51sD6qqcgH3UHqdTf2bw=="], + "@smithy/util-buffer-from": ["@smithy/util-buffer-from@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-DcPJ8L79nxi/6QA29F9m+OcIR9/KIXN80i5YMQEVy3fZUUgsE9d5HRj5WVKt9id9XucnnxlSpChg8qNkRApPPg=="], - "@smithy/util-config-provider": ["@smithy/util-config-provider@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-7yflDiFlO+bVXjI7BJe3B8jx5HyGCI146xrkZRwK9pO2ParfgWzgGfPGK3KsXkxcU+EBzIz1kFnX7fJRxAMbQA=="], + "@smithy/util-config-provider": ["@smithy/util-config-provider@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-piQId+53wttD3PXSksH7oI6Q4sQ3GtxkEeVVsKgrSfmux9h2dr3H0IKJOhFXVA5kCb9tJasgwbYOo5t49jnD2Q=="], - "@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.4.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-LbE6AGHhQOunqIN5UyWDMgpPwmUHUzrV2NtUOQ+lt6Stpipzo6S7uDyeGtO0GGgUD1balEPCNu8Xfl1AQNiruQ=="], + "@smithy/util-defaults-mode-browser": ["@smithy/util-defaults-mode-browser@4.5.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-bQGtrcVQHfJJQ1bhdZ4I1Q8GwJRw0WqPIcRocvwQ/ukfaCEw22acQhCxEj7UiNYwD7ij5mOXFp8e+FdbVDd6Yw=="], - "@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-72gNpNDQ2iIGbaNmeaF9I58shWsEuD5tNI7my5uXlm1CSPH5i8IKI/nzU50qqB8y+kgw/qTLGgsf0We5qeM/aA=="], + "@smithy/util-defaults-mode-node": ["@smithy/util-defaults-mode-node@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-kwmn00irjhU1hRMYJiPHN3EgXiJbuSh5p6cCHSds3T+8YsMUisWuiVp7zlwe68UsJPFeBKPDGDJ+MM8Kr43Ltw=="], - "@smithy/util-endpoints": ["@smithy/util-endpoints@3.5.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-NJhe8KmNjeZ7V+gJsQR5xw0IN47N8pBKosed40xfhelDuYkg8VQ5CVGDcHTEuJq3e3zQb21vnoOOReQothejhA=="], + "@smithy/util-endpoints": ["@smithy/util-endpoints@3.6.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-MqqMomCIaSpYm/FDOfhRMt+3IRI+18YSB9ukoIEocXr0MFBUzkKnrsMp6NnBB2zvDfpJtbA/AWGwqOT9lM9sFQ=="], - "@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-+ip3QrXGjDOzV/ciNWPTm6bhJuXjmzugMR19ouXgA26QqhEo0zuXM7pvYE9S4VfX13YmPgSYDPkF4+2bPqIwAg=="], + "@smithy/util-hex-encoding": ["@smithy/util-hex-encoding@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-1LrWRBgKOEsMIFVPpAHr1aCj0f+C4hyMynVu4fkWvfvA/CHw6lny74Y6Ep9YJDt4XM837jUDi9pLAV2R5ebGWg=="], - "@smithy/util-middleware": ["@smithy/util-middleware@4.3.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-N1IR4bMHIDbqO3GxkJHgqNGsnrd7MNrj+EVqhFqKeRqSBV5I3KCjNllKfnbF9KV0YteGhfLqcMR5CYsPLJqpqw=="], + "@smithy/util-middleware": ["@smithy/util-middleware@4.4.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-jFkCTa/hzSc+rDc3yzHkv6OI/rLjAy88rcgZ0lP8NdkZhgR9N3TiDj6lW1hAYt42bwx8HpwPJCQegj3I2YGRfg=="], - "@smithy/util-retry": ["@smithy/util-retry@4.4.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-W9Ovy9i02yGqtLlpqZNQuXNxXc5OPfXujnembxN/FxyBtGjJd8vKY0PQYEJ8FNybTOcXG+ZxsSsX23HOb3zQzg=="], + "@smithy/util-retry": ["@smithy/util-retry@4.5.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-hYu5ieq8myuO29xCQV0IIhicRm1aO0lcNBeMcF1mVVAVQC0oylPGKFliMq5NbxtdOvRxJWCMuir2gwKI91f1lw=="], - "@smithy/util-stream": ["@smithy/util-stream@4.6.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-PFzBVEBP5k8R+mK/c+VAKmtpUTL+KzBIXWJ6oM0GWOb31K+QgymXV9IW03XLPM1wtkC7oAb9ZBN2aswSSVbNFg=="], + "@smithy/util-stream": ["@smithy/util-stream@4.7.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-4BC4NZReiHMurGeBUNWqpRj4hHvrxZY9Ai7QTctIDIZWOXKjf+d6Kcf259drOqlouiLjfMhaIx+b4NQ6jJ7+1Q=="], - "@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], + "@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], - "@smithy/util-waiter": ["@smithy/util-waiter@4.4.5", "", { "dependencies": { "@smithy/core": "^3.24.5", "tslib": "^2.6.2" } }, "sha512-EYviebytZE6vplW0AGwZ2Rc3sNuVR83lfUCNZu11VchUiKhMwJqrRWy7iVDTNEwG/vEwItno591Iad6/prj6Bw=="], + "@smithy/util-waiter": ["@smithy/util-waiter@4.5.10", "", { "dependencies": { "@smithy/core": "^3.29.5", "tslib": "^2.6.2" } }, "sha512-Rv+to3gsHhRwtcFdMZ5dnFG90tXjHn2rz2y0ieSgPPz8+fqVLYs60yrsZYnqUVzI8nTiMaGimntfzE2GazocSQ=="], "@socket.io/component-emitter": ["@socket.io/component-emitter@3.1.2", "", {}, "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA=="], @@ -2645,27 +2801,29 @@ "@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.3", "", { "dependencies": { "@solid-primitives/utils": "^6.4.0" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-XzG6en9gSFwmvbKcATm2BxL63HegZ+BAG5fmHi8jyBppQHcaths7ffz+6vYvwYy3nlgLa20ufJLj7tst+PcHFA=="], + "@solid-primitives/memo": ["@solid-primitives/memo@1.5.1", "", { "dependencies": { "@solid-primitives/scheduled": "^1.5.3", "@solid-primitives/utils": "^6.4.1" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-VDPrkl9epp0tbby9MvsqphGFCYCtDRC5J8FKzTqHbQiG5hhR8n6xv4MfjhTW231IaBxxPHLxS43EE8c5Q23mSQ=="], - "@solid-primitives/refs": ["@solid-primitives/refs@1.1.3", "", { "dependencies": { "@solid-primitives/utils": "^6.4.0" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-aam02fjNKpBteewF/UliPSQCVJsIIGOLEWQOh+ll6R/QePzBOOBMcC4G+5jTaO75JuUS1d/14Q1YXT3X0Ow6iA=="], + "@solid-primitives/props": ["@solid-primitives/props@3.2.4", "", { "dependencies": { "@solid-primitives/utils": "^6.4.1" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-MXXdvi2TSB6d+0N6ueA/HP1j/Kh9SEc4WdF1ZDMLwPagxW6pIHHSS9xbRO0RjqSVpNP4j0nxCWT1hx3CkJNhNA=="], + + "@solid-primitives/refs": ["@solid-primitives/refs@1.1.4", "", { "dependencies": { "@solid-primitives/utils": "^6.4.1" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-bLjwIs6ZPu8NQnuw04sU3Zc8qKSpbc0umUU/O4SHf6oWOdO4+dHY8vb1T7C4b/Tg103+9WGr6sEE0+NFlbaB/A=="], "@solid-primitives/resize-observer": ["@solid-primitives/resize-observer@2.1.5", "", { "dependencies": { "@solid-primitives/event-listener": "^2.4.5", "@solid-primitives/rootless": "^1.5.3", "@solid-primitives/static-store": "^0.1.3", "@solid-primitives/utils": "^6.4.0" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-AiyTknKcNBaKHbcSMuxtSNM8FjIuiSuFyFghdD0TcCMU9hKi9EmsC5pjfjDwxE+5EueB1a+T/34PLRI5vbBbKw=="], - "@solid-primitives/rootless": ["@solid-primitives/rootless@1.5.3", "", { "dependencies": { "@solid-primitives/utils": "^6.4.0" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-N8cIDAHbWcLahNRLr0knAAQvXyEdEMoAZvIMZKmhNb1mlx9e2UOv9BRD5YNwQUJwbNoYVhhLwFOEOcVXFx0HqA=="], + "@solid-primitives/rootless": ["@solid-primitives/rootless@1.5.4", "", { "dependencies": { "@solid-primitives/utils": "^6.4.1" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-TOIZa1VUfVJ+9nkCcRajw3U4t9vBOP1HxX1WHNTbXq32mXwlqTvUnC4CRIilohcryBkT9u2ZkhUDSHRTaGp55g=="], "@solid-primitives/scheduled": ["@solid-primitives/scheduled@1.5.3", "", { "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-oNwLE6E6lxJAWrc8QXuwM0k2oU1BnANnkChwMw82aK1j3+mWGJkG1IFe5gCwbV+afYmjI76t9JJV3md/8tLw+g=="], "@solid-primitives/scroll": ["@solid-primitives/scroll@2.1.3", "", { "dependencies": { "@solid-primitives/event-listener": "^2.4.3", "@solid-primitives/rootless": "^1.5.2", "@solid-primitives/static-store": "^0.1.2" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-Ejq/Z7zKo/6eIEFr1bFLzXFxiGBCMLuqCM8QB8urr3YdPzjSETFLzYRWUyRiDWaBQN0F7k0SY6S7ig5nWOP7vg=="], - "@solid-primitives/static-store": ["@solid-primitives/static-store@0.1.3", "", { "dependencies": { "@solid-primitives/utils": "^6.4.0" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-uxez7SXnr5GiRnzqO2IEDjOJRIXaG+0LZLBizmUA1FwSi+hrpuMzVBwyk70m4prcl8X6FDDXUl9O8hSq8wHbBQ=="], + "@solid-primitives/static-store": ["@solid-primitives/static-store@0.1.4", "", { "dependencies": { "@solid-primitives/utils": "^6.4.1" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-LgtVaVBtB7EbmS4+M0b8xY5Iq6pUWXBsIC4VgtrFKDGDdyCaDt88sHk0fUlx1Enxm/XZnZyLXJABRoa39RjJqA=="], "@solid-primitives/storage": ["@solid-primitives/storage@4.3.3", "", { "dependencies": { "@solid-primitives/utils": "^6.3.2" }, "peerDependencies": { "@tauri-apps/plugin-store": "*", "solid-js": "^1.6.12", "solid-start": "*" }, "optionalPeers": ["@tauri-apps/plugin-store", "solid-start"] }, "sha512-ACbNwMZ1s8VAvld6EUXkDkX/US3IhtlPLxg6+B2s9MwNUugwdd51I98LPEaHrdLpqPmyzqgoJe0TxEFlf3Dqrw=="], "@solid-primitives/timer": ["@solid-primitives/timer@1.4.4", "", { "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-Ayjyb3+v1hyU92vuLUN0tVHq2mmTCPGxSDLGJMsDydRqx9ZfJIc9xj6cxK4XvdY3pif3ps2mIv52pjgToybEpQ=="], - "@solid-primitives/trigger": ["@solid-primitives/trigger@1.2.3", "", { "dependencies": { "@solid-primitives/utils": "^6.4.0" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-Za2JebEiDyfamjmDwRaESYqBBYOlgYGzB8kHYH0QrkXyLf2qNADlKdGN+z3vWSLCTDcKxChS43Kssjuc0OZhng=="], + "@solid-primitives/trigger": ["@solid-primitives/trigger@1.2.4", "", { "dependencies": { "@solid-primitives/utils": "^6.4.1" }, "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-Ju0e+ZOD7hpOp7nptJimvDSZHWFvIvF9iBWMvuwt30smX7c5wmB8Kmc0AdDuv0wOTi06PQ1J5IrP1WJbH2yUBQ=="], - "@solid-primitives/utils": ["@solid-primitives/utils@6.4.0", "", { "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-AeGTBg8Wtkh/0s+evyLtP8piQoS4wyqqQaAFs2HJcFMMjYAtUgo+ZPduRXLjPlqKVc2ejeR544oeqpbn8Egn8A=="], + "@solid-primitives/utils": ["@solid-primitives/utils@6.4.1", "", { "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-ISSB5QX1qP2ynrheIpYwc4oKR5Ny4siNuUyf1qZniy+Il+p/PtDB0QK1Dnle8noiHpwRD3gpPdubOC3qI/Zamg=="], "@solid-primitives/websocket": ["@solid-primitives/websocket@1.3.1", "", { "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-F06tA2FKa5VsnS4E4WEc3jHpsJfXRlMTGOtolugTzCqV3JmJTyvk9UVg1oz6PgGHKGi1CQ91OP8iW34myyJgaQ=="], @@ -2675,33 +2833,33 @@ "@solidjs/start": ["@solidjs/start@https://pkg.pr.new/@solidjs/start@dfb2020", { "dependencies": { "@babel/core": "^7.28.3", "@babel/traverse": "^7.28.3", "@babel/types": "^7.28.5", "@solidjs/meta": "^0.29.4", "@tanstack/server-functions-plugin": "1.134.5", "@types/babel__traverse": "^7.28.0", "@types/micromatch": "^4.0.9", "cookie-es": "^2.0.0", "defu": "^6.1.4", "error-stack-parser": "^2.1.4", "es-module-lexer": "^1.7.0", "esbuild": "^0.25.3", "fast-glob": "^3.3.3", "h3": "npm:h3@2.0.1-rc.4", "html-to-image": "^1.11.13", "micromatch": "^4.0.8", "path-to-regexp": "^8.2.0", "pathe": "^2.0.3", "radix3": "^1.1.2", "seroval": "^1.3.2", "seroval-plugins": "^1.2.1", "shiki": "^1.26.1", "solid-js": "^1.9.9", "source-map-js": "^1.2.1", "srvx": "^0.9.1", "terracotta": "^1.0.6", "vite": "7.1.10", "vite-plugin-solid": "^2.11.9", "vitest": "^4.0.10" } }, "sha512-7JjjA49VGNOsMRI8QRUhVudZmv0CnJ18SliSgK1ojszs/c3ijftgVkzvXdkSLN4miDTzbkXewf65D6ZBo6W+GQ=="], - "@speed-highlight/core": ["@speed-highlight/core@1.2.15", "", {}, "sha512-BMq1K3DsElxDWawkX6eLg9+CKJrTVGCBAWVuHXVUV2u0s2711qiChLSId6ikYPfxhdYocLNt3wWwSvDiTvFabw=="], + "@speed-highlight/core": ["@speed-highlight/core@1.2.17", "", {}, "sha512-Z92FwKpCtfaW1V0jTU/fh3QzYEZN8wDwrzRIBoADCJfn4mJCNcJN/XegifX7BDrQ8/h9Xh/JnbyMchL0FqXrkg=="], "@standard-community/standard-json": ["@standard-community/standard-json@0.3.5", "", { "peerDependencies": { "@standard-schema/spec": "^1.0.0", "@types/json-schema": "^7.0.15", "@valibot/to-json-schema": "^1.3.0", "arktype": "^2.1.20", "effect": "^3.16.8", "quansync": "^0.2.11", "sury": "^10.0.0", "typebox": "^1.0.17", "valibot": "^1.1.0", "zod": "^3.25.0 || ^4.0.0", "zod-to-json-schema": "^3.24.5" }, "optionalPeers": ["@valibot/to-json-schema", "arktype", "effect", "sury", "typebox", "valibot", "zod", "zod-to-json-schema"] }, "sha512-4+ZPorwDRt47i+O7RjyuaxHRK/37QY/LmgxlGrRrSTLYoFatEOzvqIc85GTlM18SFZ5E91C+v0o/M37wZPpUHA=="], "@standard-community/standard-openapi": ["@standard-community/standard-openapi@0.2.9", "", { "peerDependencies": { "@standard-community/standard-json": "^0.3.5", "@standard-schema/spec": "^1.0.0", "arktype": "^2.1.20", "effect": "^3.17.14", "openapi-types": "^12.1.3", "sury": "^10.0.0", "typebox": "^1.0.0", "valibot": "^1.1.0", "zod": "^3.25.0 || ^4.0.0", "zod-openapi": "^4" }, "optionalPeers": ["arktype", "effect", "sury", "typebox", "valibot", "zod", "zod-openapi"] }, "sha512-htj+yldvN1XncyZi4rehbf9kLbu8os2Ke/rfqoZHCMHuw34kiF3LP/yQPdA0tQ940y8nDq3Iou8R3wG+AGGyvg=="], - "@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], + "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - "@storybook/addon-a11y": ["@storybook/addon-a11y@10.4.1", "", { "dependencies": { "@storybook/global": "^5.0.0", "axe-core": "^4.2.0" }, "peerDependencies": { "storybook": "^10.4.1" } }, "sha512-MGft/IXjJ20a9KbaSVG9bHTAAoanbucKrgEiJJRNqpim8DsXA01+XTdSk17LmiOCB203Rrq9mWgdQ6+79cc8iA=="], + "@storybook/addon-a11y": ["@storybook/addon-a11y@10.5.2", "", { "dependencies": { "@storybook/global": "^5.0.0", "axe-core": "^4.2.0" }, "peerDependencies": { "storybook": "^10.5.2" } }, "sha512-BMze+oj1Jz3QcGl0E6mjuVA32zPD/cTu3Ev4O4qNbKbqLXO4wA1G6aEd8+CGcQtTGEyMCsr0BH6I/WnXcwA1bQ=="], - "@storybook/addon-docs": ["@storybook/addon-docs@10.4.1", "", { "dependencies": { "@mdx-js/react": "^3.0.0", "@storybook/csf-plugin": "10.4.1", "@storybook/icons": "^2.0.2", "@storybook/react-dom-shim": "10.4.1", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "ts-dedent": "^2.0.0" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "storybook": "^10.4.1" }, "optionalPeers": ["@types/react"] }, "sha512-IYqUdjoZe4VO2LFZlKL/gwy7DsQSWCq6hX+zc1MBmZo04yycDASk1tte57n9pdlW3ajw9yYMF/+lVBi+xQjyvw=="], + "@storybook/addon-docs": ["@storybook/addon-docs@10.5.2", "", { "dependencies": { "@mdx-js/react": "^3.0.0", "@storybook/csf-plugin": "10.5.2", "@storybook/icons": "^2.0.2", "@storybook/react-dom-shim": "10.5.2", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "ts-dedent": "^2.0.0" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "storybook": "^10.5.2" }, "optionalPeers": ["@types/react"] }, "sha512-MoBANDsh5qEA14U+JaBoQcYsKbayJDDMopigFN0NdVAsZTdBfVIsL7cnjTFBL6ubB3ifb5M0tCXbScpml1KqiQ=="], - "@storybook/addon-links": ["@storybook/addon-links@10.4.1", "", { "dependencies": { "@storybook/global": "^5.0.0" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "storybook": "^10.4.1" }, "optionalPeers": ["@types/react", "react"] }, "sha512-h/5D23GwMuHA55sB7XDyhByF9psF7UFmaQOn72pjNAarew5eOpue5A+jXk3AKEYokHbvgQaoz+FrvWo9GEfSKQ=="], + "@storybook/addon-links": ["@storybook/addon-links@10.5.2", "", { "dependencies": { "@storybook/global": "^5.0.0" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "storybook": "^10.5.2" }, "optionalPeers": ["@types/react", "react"] }, "sha512-9Xk0gTpe8CJNR8a2UfgJtCPIZx1hQGUzYx7iTdfzJFQ9Y79ljGeOdq+d/O1zJ3G2uVqHhjHyD8/V+iolhfhdxg=="], - "@storybook/addon-onboarding": ["@storybook/addon-onboarding@10.4.1", "", { "peerDependencies": { "storybook": "^10.4.1" } }, "sha512-XJ3vaPeXLc8GRrnYKoi0zmAMyT34XTnD6SZNcSV0ceEQrmfZKpLbn6wei1e4oqQRctkRH2QFl/ha7SqqB3yYmQ=="], + "@storybook/addon-onboarding": ["@storybook/addon-onboarding@10.5.2", "", { "peerDependencies": { "storybook": "^10.5.2" } }, "sha512-kpWrYicwRo0is4E43ekp6byFgbgcjoatNpGEvwWRER6jtaSTRYHqZm0GPxmcr9GChEy/PYYNGzqz929H5GV5MA=="], - "@storybook/addon-vitest": ["@storybook/addon-vitest@10.4.1", "", { "dependencies": { "@storybook/global": "^5.0.0", "@storybook/icons": "^2.0.2" }, "peerDependencies": { "@vitest/browser": "^3.0.0 || ^4.0.0", "@vitest/browser-playwright": "^4.0.0", "@vitest/runner": "^3.0.0 || ^4.0.0", "storybook": "^10.4.1", "vitest": "^3.0.0 || ^4.0.0" }, "optionalPeers": ["@vitest/browser", "@vitest/browser-playwright", "@vitest/runner", "vitest"] }, "sha512-ymrX9EOou1x3d21iDhjP3j3XfhOAiflhlPZWKcipULBoJCq/aZPbV68EghzovkJNuGRl9ezMYxbbKxwrMmCmGg=="], + "@storybook/addon-vitest": ["@storybook/addon-vitest@10.5.2", "", { "dependencies": { "@storybook/global": "^5.0.0", "@storybook/icons": "^2.0.2" }, "peerDependencies": { "@vitest/browser": "^3.0.0 || ^4.0.0", "@vitest/browser-playwright": "^4.0.0", "@vitest/runner": "^3.0.0 || ^4.0.0", "storybook": "^10.5.2", "vitest": "^3.0.0 || ^4.0.0" }, "optionalPeers": ["@vitest/browser", "@vitest/browser-playwright", "@vitest/runner", "vitest"] }, "sha512-47QehVg3yRcfIOfOYYWkXreM5nEcsouo9KWUegdIiROWjDyxYC2QNuHxpxm9f1/PGktESKaEcZ35pJEt3LK7tw=="], - "@storybook/builder-vite": ["@storybook/builder-vite@10.4.1", "", { "dependencies": { "@storybook/csf-plugin": "10.4.1", "ts-dedent": "^2.0.0" }, "peerDependencies": { "storybook": "^10.4.1", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-/oyQrXoNOqN8SW5hNnYP+I1uvgFxKxWXj/EP6NXYzc5SQwImofgru+D2+6gDhL0+Q//+Hx05DJoQO2omvUJ8bQ=="], + "@storybook/builder-vite": ["@storybook/builder-vite@10.5.2", "", { "dependencies": { "@storybook/csf-plugin": "10.5.2", "ts-dedent": "^2.0.0" }, "peerDependencies": { "storybook": "^10.5.2", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-XxY/zpMrEOXqdJaEw8s7fJefDCjO1eRkjvZvb50ojiqDJpTdfguhBrwqlHilpWWt5a12VjbbMrUHza4YPs/bBg=="], - "@storybook/csf-plugin": ["@storybook/csf-plugin@10.4.1", "", { "dependencies": { "unplugin": "^2.3.5" }, "peerDependencies": { "esbuild": "*", "rollup": "*", "storybook": "^10.4.1", "vite": "*", "webpack": "*" }, "optionalPeers": ["esbuild", "rollup", "vite", "webpack"] }, "sha512-WdPepGBxDGOUDjYd8KxMtcf+us/2PAcnBczl77XtrnxxHNs0jWesxKkiJ9yiuGrge4BPhDeAj6rxjbBoaHxLBA=="], + "@storybook/csf-plugin": ["@storybook/csf-plugin@10.5.2", "", { "dependencies": { "unplugin": "^2.3.5" }, "peerDependencies": { "esbuild": "*", "rollup": "*", "storybook": "^10.5.2", "vite": "*", "webpack": "*" }, "optionalPeers": ["esbuild", "rollup", "vite", "webpack"] }, "sha512-PK/wXiALFf88mt4HmDtiZJ6NRvhExSXEM9uFIN+OIHxGqg7Xbp6MB0SPdhsTbMY9720ahiu/DJx5iIzkidcA3w=="], "@storybook/global": ["@storybook/global@5.0.0", "", {}, "sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ=="], - "@storybook/icons": ["@storybook/icons@2.0.2", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-KZBCpXsshAIjczYNXR/rlxEtCUX/eAbpFNwKi8bcOomrLA4t/SyPz5RF+lVPO2oZBUE4sAkt43mfJUevQDSEEw=="], + "@storybook/icons": ["@storybook/icons@2.1.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Fxh9vYpX9bQqFeHRiY8h2ApeRGDzRSMLwJwNZ/AIRqnyOKHxRKL+yFe+ctEkVJmuptRE9u1Hrn8ZZNHyfDKKNg=="], - "@storybook/react-dom-shim": ["@storybook/react-dom-shim@10.4.1", "", { "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "storybook": "^10.4.1" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-6QFqfDNH4DMrt7yHKRfpqRopsVUc/Az+sXIdJ39IetYnHUxL3nW4NVaPc6uy/8Qi8urzUyEXL/nn7cpSIP2aPQ=="], + "@storybook/react-dom-shim": ["@storybook/react-dom-shim@10.5.2", "", { "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "storybook": "^10.5.2" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-TbdYVLuD7gwj1CFsDJhCHUiwfVmzFWzalKEUGy9XgXyNpyOV1CYRsdmRdhaOHgmn2ljQZuTAxSnG7NlElghVaw=="], "@stripe/stripe-js": ["@stripe/stripe-js@8.6.1", "", {}, "sha512-UJ05U2062XDgydbUcETH1AoRQLNhigQ2KmDn1BG8sC3xfzu6JKg95Qt6YozdzFpxl1Npii/02m2LEWFt1RYjVA=="], @@ -2737,8 +2895,32 @@ "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.1.11", "", { "os": "win32", "cpu": "x64" }, "sha512-YfHoggn1j0LK7wR82TOucWc5LDCguHnoS879idHekmmiR7g9HUtMw9MI0NHatS28u/Xlkfi9w5RJWgz2Dl+5Qg=="], + "@tailwindcss/typography": ["@tailwindcss/typography@0.5.20", "", { "dependencies": { "postcss-selector-parser": "6.0.10" }, "peerDependencies": { "tailwindcss": ">=3.0.0 || >=4.0.0 || insiders" } }, "sha512-hwbzQuNUfcPvbegQFatVPl/MY/tcM9KLl963hQ5laJKPh81TEZ1+dNG9PirGvcaDBkp+BCshExAyKVPW91dozw=="], + "@tailwindcss/vite": ["@tailwindcss/vite@4.1.11", "", { "dependencies": { "@tailwindcss/node": "4.1.11", "@tailwindcss/oxide": "4.1.11", "tailwindcss": "4.1.11" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw=="], + "@takumi-rs/core": ["@takumi-rs/core@2.4.1", "", { "dependencies": { "@takumi-rs/helpers": "2.4.1" }, "optionalDependencies": { "@takumi-rs/core-darwin-arm64": "2.4.1", "@takumi-rs/core-darwin-x64": "2.4.1", "@takumi-rs/core-linux-arm64-gnu": "2.4.1", "@takumi-rs/core-linux-arm64-musl": "2.4.1", "@takumi-rs/core-linux-x64-gnu": "2.4.1", "@takumi-rs/core-linux-x64-musl": "2.4.1", "@takumi-rs/core-win32-arm64-msvc": "2.4.1", "@takumi-rs/core-win32-x64-msvc": "2.4.1" }, "peerDependencies": { "csstype": "*" }, "optionalPeers": ["csstype"] }, "sha512-eAFDIg9HRLU1ciCd2HPfZ3MPREF3MAkTHMzZ3570fcYI9Y/qLdPE77oo6CgBPxisp7pccxC1ub3/MxvpL6r6Pg=="], + + "@takumi-rs/core-darwin-arm64": ["@takumi-rs/core-darwin-arm64@2.4.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-8Caa7tIU6OY0uww6hh8LFJfAy6zsf2+bDNUcqkkWAAEkxPSLgUNdRxRZPTVNAqpYXE70LxO+D7xhmbOvx3jw4g=="], + + "@takumi-rs/core-darwin-x64": ["@takumi-rs/core-darwin-x64@2.4.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-24rySftJ5Jldn2BhtGr4Z15flQfD+y4qPEh5OkuQ65Wput4n7AwXbYMjx57Su1jn2kSgePjLVOO+DaRs3MPz9A=="], + + "@takumi-rs/core-linux-arm64-gnu": ["@takumi-rs/core-linux-arm64-gnu@2.4.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-YuzyFk4NsNlrYORBSevLwX7LDsmnmQRIYFyAtfpcVv+YZw4vkEyvekU04nlh8dd7hjJaOY25KY68l+y5FAQkqA=="], + + "@takumi-rs/core-linux-arm64-musl": ["@takumi-rs/core-linux-arm64-musl@2.4.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-w+dor/U/zQffPXhoOrgViUy0pjHZUjkjyXojdGHe9z2i2/NMsAaONdUNASE/ZjWaehrDs2bWPdJ+cgxYFwbKGg=="], + + "@takumi-rs/core-linux-x64-gnu": ["@takumi-rs/core-linux-x64-gnu@2.4.1", "", { "os": "linux", "cpu": "x64" }, "sha512-6zFsEkSMOhXJxkktT0v/OnE/CPDAI+DxE3QHsj5L4VJa9yYA4MrxB+yiop2aXS63ZbnRdS5GlqUft/tkxZWs9w=="], + + "@takumi-rs/core-linux-x64-musl": ["@takumi-rs/core-linux-x64-musl@2.4.1", "", { "os": "linux", "cpu": "x64" }, "sha512-95wuhp/gM1NwJ47CGEW89Np9/Qt1gMkpmyYACjtpX9jMS9iTA5uAeU1Ur+ouGEa+SRp6wf5v5HEBmVMO9TfCBQ=="], + + "@takumi-rs/core-win32-arm64-msvc": ["@takumi-rs/core-win32-arm64-msvc@2.4.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-I8k6g4BDY48Q4C6L6CQL9M7lfpijtegKk1AtD0i41SaRpWLkGcEmxjH8iYym3X3LYEL/GX6J9iQZaoG9J8saZg=="], + + "@takumi-rs/core-win32-x64-msvc": ["@takumi-rs/core-win32-x64-msvc@2.4.1", "", { "os": "win32", "cpu": "x64" }, "sha512-ugGBq7pbGr0Tqm+egrgDcGglsJXsiFdE3w33iI4+ImXcuoaV+19oSPZZqP5Vr44/+lp3rcEJ29vlufUmljBB3g=="], + + "@takumi-rs/helpers": ["@takumi-rs/helpers@2.4.1", "", { "peerDependencies": { "preact": "^10.0.0", "react": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["preact", "react"] }, "sha512-gpm1exkspnPNcPp9lnII204hTC7i0bu0ksyqC01aMF4eSw6u1OxnlKEDVUTGm1dFBFecfHaPZBbi+O8SAypXpw=="], + + "@takumi-rs/wasm": ["@takumi-rs/wasm@2.4.1", "", { "dependencies": { "@takumi-rs/helpers": "2.4.1" }, "peerDependencies": { "csstype": "*" }, "optionalPeers": ["csstype"] }, "sha512-VhJtfCCRs+vxGCAFEkeu3/UI0VpToX6ys7KfeNBUTtVb9SGtkxBFxXixwmorALW0kzUuRkLHUl2HpylvlKk7Xg=="], + "@tanstack/directive-functions-plugin": ["@tanstack/directive-functions-plugin@1.134.5", "", { "dependencies": { "@babel/code-frame": "7.27.1", "@babel/core": "^7.27.7", "@babel/traverse": "^7.27.7", "@babel/types": "^7.27.7", "@tanstack/router-utils": "1.133.19", "babel-dead-code-elimination": "^1.0.10", "pathe": "^2.0.3", "tiny-invariant": "^1.3.3" }, "peerDependencies": { "vite": ">=6.0.0 || >=7.0.0" } }, "sha512-J3oawV8uBRBbPoLgMdyHt+LxzTNuWRKNJJuCLWsm/yq6v0IQSvIVCgfD2+liIiSnDPxGZ8ExduPXy8IzS70eXw=="], "@tanstack/query-core": ["@tanstack/query-core@5.91.2", "", {}, "sha512-Uz2pTgPC1mhqrrSGg18RKCWT/pkduAYtxbcyIyKBhw7dTWjXZIzqmpzO2lBkyWr4hlImQgpu1m1pei3UnkFRWw=="], @@ -2749,9 +2931,9 @@ "@tanstack/solid-query": ["@tanstack/solid-query@5.91.4", "", { "dependencies": { "@tanstack/query-core": "5.91.2" }, "peerDependencies": { "solid-js": "^1.6.0" } }, "sha512-oCEgn8iT7WnF/7ISd7usBpUK1C9EdvQfg8ZUpKNKZ4edVClICZrCX6f3/Bp8ZlwQnL21KLc2rp+CejEuehlRxg=="], - "@tanstack/solid-virtual": ["@tanstack/solid-virtual@3.13.28", "", { "dependencies": { "@tanstack/virtual-core": "3.17.0" }, "peerDependencies": { "solid-js": "^1.3.0" } }, "sha512-kRuOEL5orH/rzGgxNgfgOttsgV6cgrUeupVtrHMITb5p0rZ3hnxhbu/lhKcR9+7x+EJdfUtJIb2CVC85mlw15g=="], + "@tanstack/solid-virtual": ["@tanstack/solid-virtual@3.13.32", "", { "dependencies": { "@tanstack/virtual-core": "3.17.3" }, "peerDependencies": { "solid-js": "^1.3.0" } }, "sha512-yhX4A4Kgn+wyTg6Mmu8+zwoMTwjz4K1ucvLfRJ8f0rPGDDAIqSaf0v6oU0yT9+SvrjmUaZQ0VX7g4byexbhNng=="], - "@tanstack/virtual-core": ["@tanstack/virtual-core@3.17.0", "", {}, "sha512-gOxY/hFkPh/XQYhnThBHzkbkX3Ed+z/iushyz+R+JAr213aXxUDgQoTgTdrDpBSRsjFM73P/KfUyWmaF9WHMkQ=="], + "@tanstack/virtual-core": ["@tanstack/virtual-core@3.17.3", "", {}, "sha512-8Np/TFELpI0ySuJoVmjvOrQYXH/8sTX0Biv9szhFhY39xOdAAY+smrMxjxOum/ux3eM8MUJQsEJ0/R0UpvC8dw=="], "@testing-library/dom": ["@testing-library/dom@10.4.1", "", { "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", "aria-query": "5.3.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "picocolors": "1.1.1", "pretty-format": "^27.0.2" } }, "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg=="], @@ -2769,7 +2951,21 @@ "@tufjs/models": ["@tufjs/models@4.1.0", "", { "dependencies": { "@tufjs/canonical-json": "2.0.0", "minimatch": "^10.1.1" } }, "sha512-Y8cK9aggNRsqJVaKUlEYs4s7CvQ1b1ta2DVPyAimb0I2qhzjNk+A+mxvll/klL0RlfuIUei8BF7YWiua4kQqww=="], - "@tybys/wasm-util": ["@tybys/wasm-util@0.10.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg=="], + "@turbo/darwin-64": ["@turbo/darwin-64@2.10.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-wBM3ObqOWnKUDmg7QfUFDkDHPFUAJmrYlYqmEM8jMPAPA/I6wRJIbWimeQUqhOiQ8xPKhzyWM+xaiUP0wz8FEQ=="], + + "@turbo/darwin-arm64": ["@turbo/darwin-arm64@2.10.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-/Cq0joWnuMjDPfhjbFP4sv+C/7gkQ415zlaO4XUzD5EZxbtrKgXKvuuydMvogG8GeUnN1aDltW71RlmEfpjbyw=="], + + "@turbo/linux-64": ["@turbo/linux-64@2.10.2", "", { "os": "linux", "cpu": "x64" }, "sha512-mMsf5IIhiKuceEXNstd25IbadjBXZ0amxzFOqliEzJX6HyeeHdBQPVSY583PWqYDyqM/FB8d5ZjkthfBSeuH3Q=="], + + "@turbo/linux-arm64": ["@turbo/linux-arm64@2.10.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-Wcng1i2kaKmXutmwxT9MUoYZvdaIekXAdlGr4+0TpgbhGLw7nDuEcRBFrxb5BbRoX1d1q8SpdRxLc45TvDZIdQ=="], + + "@turbo/windows-64": ["@turbo/windows-64@2.10.2", "", { "os": "win32", "cpu": "x64" }, "sha512-SsNhM7Ho7EpAdwtrJKBOic9Hso23vu6Dp0gAfLOvUFjPzurr/sGQlXZEvr6z89ne4RDOypTwz5CBDrixpMKtXw=="], + + "@turbo/windows-arm64": ["@turbo/windows-arm64@2.10.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Gf+S7ICAdimT/n02bOuVWKvhHnct/HYjZg3oBNIz5hZ9ZyWHbQim9J3P5Qip8WpX0ksxF7eaBVziJCuLnjhqDg=="], + + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], + + "@types/acorn": ["@types/acorn@4.0.6", "", { "dependencies": { "@types/estree": "*" } }, "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ=="], "@types/aria-query": ["@types/aria-query@5.0.4", "", {}, "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw=="], @@ -2797,23 +2993,79 @@ "@types/cross-spawn": ["@types/cross-spawn@6.0.6", "", { "dependencies": { "@types/node": "*" } }, "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA=="], + "@types/d3": ["@types/d3@7.4.3", "", { "dependencies": { "@types/d3-array": "*", "@types/d3-axis": "*", "@types/d3-brush": "*", "@types/d3-chord": "*", "@types/d3-color": "*", "@types/d3-contour": "*", "@types/d3-delaunay": "*", "@types/d3-dispatch": "*", "@types/d3-drag": "*", "@types/d3-dsv": "*", "@types/d3-ease": "*", "@types/d3-fetch": "*", "@types/d3-force": "*", "@types/d3-format": "*", "@types/d3-geo": "*", "@types/d3-hierarchy": "*", "@types/d3-interpolate": "*", "@types/d3-path": "*", "@types/d3-polygon": "*", "@types/d3-quadtree": "*", "@types/d3-random": "*", "@types/d3-scale": "*", "@types/d3-scale-chromatic": "*", "@types/d3-selection": "*", "@types/d3-shape": "*", "@types/d3-time": "*", "@types/d3-time-format": "*", "@types/d3-timer": "*", "@types/d3-transition": "*", "@types/d3-zoom": "*" } }, "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww=="], + + "@types/d3-array": ["@types/d3-array@3.2.2", "", {}, "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw=="], + + "@types/d3-axis": ["@types/d3-axis@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw=="], + + "@types/d3-brush": ["@types/d3-brush@3.0.6", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A=="], + + "@types/d3-chord": ["@types/d3-chord@3.0.6", "", {}, "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg=="], + + "@types/d3-color": ["@types/d3-color@3.1.3", "", {}, "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A=="], + + "@types/d3-contour": ["@types/d3-contour@3.0.6", "", { "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" } }, "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg=="], + + "@types/d3-delaunay": ["@types/d3-delaunay@6.0.4", "", {}, "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw=="], + + "@types/d3-dispatch": ["@types/d3-dispatch@3.0.7", "", {}, "sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA=="], + + "@types/d3-drag": ["@types/d3-drag@3.0.7", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ=="], + + "@types/d3-dsv": ["@types/d3-dsv@3.0.7", "", {}, "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g=="], + + "@types/d3-ease": ["@types/d3-ease@3.0.2", "", {}, "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA=="], + + "@types/d3-fetch": ["@types/d3-fetch@3.0.7", "", { "dependencies": { "@types/d3-dsv": "*" } }, "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA=="], + + "@types/d3-force": ["@types/d3-force@3.0.10", "", {}, "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw=="], + + "@types/d3-format": ["@types/d3-format@3.0.4", "", {}, "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g=="], + "@types/d3-geo": ["@types/d3-geo@3.1.0", "", { "dependencies": { "@types/geojson": "*" } }, "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ=="], + "@types/d3-hierarchy": ["@types/d3-hierarchy@3.1.7", "", {}, "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg=="], + + "@types/d3-interpolate": ["@types/d3-interpolate@3.0.4", "", { "dependencies": { "@types/d3-color": "*" } }, "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA=="], + + "@types/d3-path": ["@types/d3-path@3.1.1", "", {}, "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg=="], + + "@types/d3-polygon": ["@types/d3-polygon@3.0.2", "", {}, "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA=="], + + "@types/d3-quadtree": ["@types/d3-quadtree@3.0.6", "", {}, "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg=="], + + "@types/d3-random": ["@types/d3-random@3.0.4", "", {}, "sha512-UHYId5WTCx4L4YNel7NU00XUXXgvgpgZOvp10PuvsQENjMDXhh2RyFc0KBjO7B45ne4Ha1yVH7ii0vnzKkuzWA=="], + "@types/d3-scale": ["@types/d3-scale@4.0.9", "", { "dependencies": { "@types/d3-time": "*" } }, "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw=="], + "@types/d3-scale-chromatic": ["@types/d3-scale-chromatic@3.1.0", "", {}, "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ=="], + + "@types/d3-selection": ["@types/d3-selection@3.0.11", "", {}, "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w=="], + + "@types/d3-shape": ["@types/d3-shape@3.1.8", "", { "dependencies": { "@types/d3-path": "*" } }, "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w=="], + "@types/d3-time": ["@types/d3-time@3.0.4", "", {}, "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g=="], + "@types/d3-time-format": ["@types/d3-time-format@4.0.3", "", {}, "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg=="], + + "@types/d3-timer": ["@types/d3-timer@3.0.2", "", {}, "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw=="], + + "@types/d3-transition": ["@types/d3-transition@3.0.9", "", { "dependencies": { "@types/d3-selection": "*" } }, "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg=="], + + "@types/d3-zoom": ["@types/d3-zoom@3.0.8", "", { "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw=="], + "@types/debug": ["@types/debug@4.1.13", "", { "dependencies": { "@types/ms": "*" } }, "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw=="], "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], - "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], + "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], "@types/express": ["@types/express@4.17.25", "", { "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", "@types/serve-static": "^1" } }, "sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw=="], - "@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.8", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA=="], + "@types/express-serve-static-core": ["@types/express-serve-static-core@4.19.9", "", { "dependencies": { "@types/node": "*", "@types/qs": "*", "@types/range-parser": "*", "@types/send": "*" } }, "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg=="], "@types/fontkit": ["@types/fontkit@2.0.9", "", { "dependencies": { "@types/node": "*" } }, "sha512-qNYerFky3muCmZPq+R+B3cUDRA5OONw/oh6aGGFxx2LOBz6yu8eamKusrhkHnC6rc2fm76+G9z9QoWSB2SaQaw=="], @@ -2821,7 +3073,7 @@ "@types/geojson": ["@types/geojson@7946.0.16", "", {}, "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg=="], - "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], + "@types/hast": ["@types/hast@3.0.5", "", { "dependencies": { "@types/unist": "*" } }, "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g=="], "@types/http-cache-semantics": ["@types/http-cache-semantics@4.2.0", "", {}, "sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q=="], @@ -2843,7 +3095,7 @@ "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], - "@types/mdx": ["@types/mdx@2.0.13", "", {}, "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw=="], + "@types/mdx": ["@types/mdx@2.0.14", "", {}, "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg=="], "@types/micromatch": ["@types/micromatch@4.0.10", "", { "dependencies": { "@types/braces": "*" } }, "sha512-5jOhFDElqr4DKTrTEbnW8DZ4Hz5LRUEmyrGpCMrD/NphYv3nUnaF08xmSLx1rGGnyEs/kFnhiw6dCgcDqMr5PQ=="], @@ -2871,8 +3123,6 @@ "@types/pacote": ["@types/pacote@11.1.8", "", { "dependencies": { "@types/node": "*", "@types/npm-registry-fetch": "*", "@types/npmlog": "*", "@types/ssri": "*" } }, "sha512-/XLR0VoTh2JEO0jJg1q/e6Rh9bxjBq9vorJuQmtT7rRrXSiWz7e7NsvXVYJQ0i8JxMlBMPPYDTnrRe7MZRFA8Q=="], - "@types/plist": ["@types/plist@3.0.5", "", { "dependencies": { "@types/node": "*", "xmlbuilder": ">=11.0.1" } }, "sha512-E6OCaRmAe4WDmWNsL/9RMqdkkzDCY1etutkflWk4c+AcjDU07Pcz1fQwTX0TQz+Pxqn9i4L1TU3UFpjnrcDgxA=="], - "@types/promise.allsettled": ["@types/promise.allsettled@1.0.6", "", {}, "sha512-wA0UT0HeT2fGHzIFV9kWpYz5mdoyLxKrTgMdZQM++5h6pYAFH73HXcQhefg24nD1yivUFEn5KU+EF4b+CXJ4Wg=="], "@types/prop-types": ["@types/prop-types@15.7.15", "", {}, "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw=="], @@ -2881,7 +3131,9 @@ "@types/range-parser": ["@types/range-parser@1.2.7", "", {}, "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ=="], - "@types/react": ["@types/react@18.0.25", "", { "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g=="], + "@types/react": ["@types/react@19.2.17", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw=="], + + "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], "@types/responselike": ["@types/responselike@1.0.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw=="], @@ -2913,18 +3165,12 @@ "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], - "@types/verror": ["@types/verror@1.10.11", "", {}, "sha512-RlDm9K7+o5stv0Co8i8ZRGxDbrTxhJtgjqjFyVh/tXQyl/rYtTKlnTvZ88oSTeYREWurwx20Js4kTuKCsFkUtg=="], - "@types/whatwg-mimetype": ["@types/whatwg-mimetype@3.0.2", "", {}, "sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA=="], "@types/which": ["@types/which@3.0.4", "", {}, "sha512-liyfuo/106JdlgSchJzXEQCVArk0CvevqPote8F8HgWgJ3dRCcTHgJIsLDuee0kxk/mhbInzIZk3QWSZJ8R+2w=="], "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], - "@types/yargs": ["@types/yargs@17.0.33", "", { "dependencies": { "@types/yargs-parser": "*" } }, "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA=="], - - "@types/yargs-parser": ["@types/yargs-parser@21.0.3", "", {}, "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ=="], - "@types/yauzl": ["@types/yauzl@2.10.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q=="], "@typescript/native-preview": ["@typescript/native-preview@7.0.0-dev.20251207.1", "", { "optionalDependencies": { "@typescript/native-preview-darwin-arm64": "7.0.0-dev.20251207.1", "@typescript/native-preview-darwin-x64": "7.0.0-dev.20251207.1", "@typescript/native-preview-linux-arm": "7.0.0-dev.20251207.1", "@typescript/native-preview-linux-arm64": "7.0.0-dev.20251207.1", "@typescript/native-preview-linux-x64": "7.0.0-dev.20251207.1", "@typescript/native-preview-win32-arm64": "7.0.0-dev.20251207.1", "@typescript/native-preview-win32-x64": "7.0.0-dev.20251207.1" }, "bin": { "tsgo": "bin/tsgo.js" } }, "sha512-4QcRnzB0pi9rS0AOvg8kWbmuwHv5X7B2EXHbgcms9+56hsZ8SZrZjNgBJb2rUIodJ4kU5mrkj/xlTTT4r9VcpQ=="], @@ -2945,33 +3191,45 @@ "@typescript/vfs": ["@typescript/vfs@1.6.4", "", { "dependencies": { "debug": "^4.4.3" }, "peerDependencies": { "typescript": "*" } }, "sha512-PJFXFS4ZJKiJ9Qiuix6Dz/OwEIqHD7Dme1UwZhTK11vR+5dqW2ACbdndWQexBzCx+CPuMe5WBYQWCsFyGlQLlQ=="], - "@typespec/ts-http-runtime": ["@typespec/ts-http-runtime@0.3.5", "", { "dependencies": { "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "tslib": "^2.6.2" } }, "sha512-yURCknZhvywvQItHMMmFSo+fq5arCUIyz/CVk7jD89MSai7dkaX8ufjCWp3NttLojoTVbcE72ri+be/TnEbMHw=="], + "@typespec/ts-http-runtime": ["@typespec/ts-http-runtime@0.3.7", "", { "dependencies": { "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "tslib": "^2.6.2" } }, "sha512-JVUD8X2tfDMWjcjLs4yVxxVrS8yR5vnh386GAXT9Qj79nBxxXSaHFQZg5FweLmT8HlPQ3kii6noUB+Z9RN7DvQ=="], + + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.3", "", {}, "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg=="], - "@ungap/structured-clone": ["@ungap/structured-clone@1.3.1", "", {}, "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ=="], + "@upsetjs/venn.js": ["@upsetjs/venn.js@2.0.0", "", { "optionalDependencies": { "d3-selection": "^3.0.0", "d3-transition": "^3.0.1" } }, "sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw=="], "@upstash/redis": ["@upstash/redis@1.38.0", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-wu+dZBptlLy0+MCUEoHmzrY/TnmgDey3+c7EbIGwrLqAvkP8yi5MWZHYGIFtAygmL4Bkz2TdFu+eU0vFPncIcg=="], "@valibot/to-json-schema": ["@valibot/to-json-schema@1.6.0", "", { "peerDependencies": { "valibot": "^1.3.0" } }, "sha512-d6rYyK5KVa2XdqamWgZ4/Nr+cXhxjy7lmpe6Iajw15J/jmU+gyxl2IEd1Otg1d7Rl3gOQL5reulnSypzBtYy1A=="], + "@vercel/analytics": ["@vercel/analytics@2.0.1", "", { "peerDependencies": { "@remix-run/react": "^2", "@sveltejs/kit": "^1 || ^2", "next": ">= 13", "nuxt": ">= 3", "react": "^18 || ^19 || ^19.0.0-rc", "svelte": ">= 4", "vue": "^3", "vue-router": "^4" }, "optionalPeers": ["@remix-run/react", "@sveltejs/kit", "next", "nuxt", "react", "svelte", "vue", "vue-router"] }, "sha512-MTQG6V9qQrt1tsDeF+2Uoo5aPjqbVPys1xvnIftXSJYG2SrwXRHnqEvVoYID7BTruDz4lCd2Z7rM1BdkUehk2g=="], + + "@vercel/cli-config": ["@vercel/cli-config@0.2.0", "", { "dependencies": { "xdg-app-paths": "5", "zod": "4.1.11" } }, "sha512-fJRRRB7734BDuXZ89yBEaA2ncYhH7bWX30mk04W80J6VAfQc+4iB8lyzAdaGpFV3/vNlkt9VZt+/uoQoWX6UsQ=="], + + "@vercel/cli-exec": ["@vercel/cli-exec@1.0.0", "", { "dependencies": { "execa": "5.1.1" } }, "sha512-kQF8LGie/Hbdq9/psJxLE7owRTcqMQMhgybU04gCeR7cbQAr5t8OrjefDNColJv1QSSucFt4pLwRiARVmlOnug=="], + + "@vercel/functions": ["@vercel/functions@3.7.5", "", { "dependencies": { "@vercel/oidc": "3.8.0" }, "peerDependencies": { "@aws-sdk/credential-provider-web-identity": "*", "ws": ">=8" }, "optionalPeers": ["@aws-sdk/credential-provider-web-identity", "ws"] }, "sha512-ESf8BbeDebqRUyMi09JwRbQqpLn4g6fjcVVHPsHB56j2dSqRrSHO4h3X4aaxJf6iQQjzhAtDGI2xCWQ27JE8PA=="], + + "@vercel/nft": ["@vercel/nft@1.10.2", "", { "dependencies": { "@mapbox/node-pre-gyp": "^2.0.0", "@rollup/pluginutils": "^5.1.3", "acorn": "^8.6.0", "acorn-import-attributes": "^1.9.5", "async-sema": "^3.1.1", "bindings": "^1.4.0", "estree-walker": "2.0.2", "glob": "^13.0.0", "graceful-fs": "^4.2.9", "node-gyp-build": "^4.2.2", "picomatch": "^4.0.2", "resolve-from": "^5.0.0" }, "bin": { "nft": "out/cli.js" } }, "sha512-w+WyX5Ulmj4dtTZrxaulqrjaLZHSbnPzx75SJsTNYmotKsqn1JlLnDJa+lz5hn90HJofhl/2MAtw0mCrgM3qYw=="], + "@vercel/oidc": ["@vercel/oidc@3.2.0", "", {}, "sha512-UycprH3T6n3jH0k44NHMa7pnFHGu/N05MjojYr+Mc6I7obkoLIJujSWwin1pCvdy/eOxrI/l3uDLQsmcrOb4ug=="], - "@vitejs/plugin-react": ["@vitejs/plugin-react@4.7.0", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA=="], + "@vercel/routing-utils": ["@vercel/routing-utils@5.3.3", "", { "dependencies": { "path-to-regexp": "6.1.0", "path-to-regexp-updated": "npm:path-to-regexp@6.3.0" }, "optionalDependencies": { "ajv": "^6.12.3" } }, "sha512-KYm2sLNUD48gDScv8ob4ejc3Gww2jcJyW80hTdYlenAPz/5BQar1Gyh38xrUuZ532TUwSb5mV1uRbAuiykq0EQ=="], - "@vitest/coverage-v8": ["@vitest/coverage-v8@4.1.8", "", { "dependencies": { "@bcoe/v8-coverage": "^1.0.2", "@vitest/utils": "4.1.8", "ast-v8-to-istanbul": "^1.0.0", "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-reports": "^3.2.0", "magicast": "^0.5.2", "obug": "^2.1.1", "std-env": "^4.0.0-rc.1", "tinyrainbow": "^3.1.0" }, "peerDependencies": { "@vitest/browser": "4.1.8", "vitest": "4.1.8" }, "optionalPeers": ["@vitest/browser"] }, "sha512-lt3kovsyHwYe00wq4D1ti0Z974fWj4NLp6siqiyEufUpyFwK9Yhi7rBhac9JL5aA0zoMrJqc4vYPZRUnI7l7nw=="], + "@vitejs/plugin-react": ["@vitejs/plugin-react@4.7.0", "", { "dependencies": { "@babel/core": "^7.28.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.27", "@types/babel__core": "^7.20.5", "react-refresh": "^0.17.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA=="], "@vitest/expect": ["@vitest/expect@3.2.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig=="], - "@vitest/mocker": ["@vitest/mocker@4.1.7", "", { "dependencies": { "@vitest/spy": "4.1.7", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-vY7nuamKgfvpA1Koa3oYIw/k7D6kZnpGyNMZW8loow2bsBYla1TFdqTaXncWdRn4pgwNs+90RhnXhJScDwQeJA=="], + "@vitest/mocker": ["@vitest/mocker@4.1.10", "", { "dependencies": { "@vitest/spy": "4.1.10", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow=="], - "@vitest/pretty-format": ["@vitest/pretty-format@4.1.7", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-umgCarTOYQWIaDMvGDRZij+6b9oVeLIyJzfN+AS88e0ZOU3QTgNNSTtjQOpcvWr3np1N0j4WgZj+sb3oYBDscw=="], + "@vitest/pretty-format": ["@vitest/pretty-format@4.1.10", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q=="], - "@vitest/runner": ["@vitest/runner@4.1.7", "", { "dependencies": { "@vitest/utils": "4.1.7", "pathe": "^2.0.3" } }, "sha512-BapjmAQ2aI78WdMEfeUWivnfVzB+VPGwWRQcJE0OUq7qEeEcBsCSf+0T5iREBNE5nBb4wA5Ya0W6IA+sghdEFw=="], + "@vitest/runner": ["@vitest/runner@4.1.10", "", { "dependencies": { "@vitest/utils": "4.1.10", "pathe": "^2.0.3" } }, "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg=="], - "@vitest/snapshot": ["@vitest/snapshot@4.1.7", "", { "dependencies": { "@vitest/pretty-format": "4.1.7", "@vitest/utils": "4.1.7", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-ZacLzja+TmJeZ1h14xW2FB/WpeimUD3haBXQPyJqxvo8jQTmfeA8zv58mtjN2C7EHXZDYVcVYdYmAxjkWVvKCw=="], + "@vitest/snapshot": ["@vitest/snapshot@4.1.10", "", { "dependencies": { "@vitest/pretty-format": "4.1.10", "@vitest/utils": "4.1.10", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw=="], "@vitest/spy": ["@vitest/spy@3.2.4", "", { "dependencies": { "tinyspy": "^4.0.3" } }, "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw=="], - "@vitest/utils": ["@vitest/utils@4.1.7", "", { "dependencies": { "@vitest/pretty-format": "4.1.7", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-T532WBu791cBxJlCl6SO+J14l81DQx6uQHm1bQbmCDY7nqlEIgkza/UFnSBNaUtSf41unldDFjdOBYEQC4b5Hw=="], + "@vitest/utils": ["@vitest/utils@4.1.10", "", { "dependencies": { "@vitest/pretty-format": "4.1.10", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA=="], "@volar/kit": ["@volar/kit@2.4.28", "", { "dependencies": { "@volar/language-service": "2.4.28", "@volar/typescript": "2.4.28", "typesafe-path": "^0.2.2", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { "typescript": "*" } }, "sha512-cKX4vK9dtZvDRaAzeoUdaAJEew6IdxHNCRrdp5Kvcl6zZOqb6jTOfk3kXkIkG3T7oTFXguEMt5+9ptyqYR84Pg=="], @@ -3001,11 +3259,11 @@ "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], - "abstract-logging": ["abstract-logging@2.0.1", "", {}, "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA=="], + "accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], - "accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], + "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], - "acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="], + "acorn-import-attributes": ["acorn-import-attributes@1.9.5", "", { "peerDependencies": { "acorn": "^8" } }, "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ=="], "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], @@ -3025,11 +3283,11 @@ "ajv-formats": ["ajv-formats@3.0.1", "", { "dependencies": { "ajv": "^8.0.0" } }, "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ=="], - "ajv-keywords": ["ajv-keywords@3.5.2", "", { "peerDependencies": { "ajv": "^6.9.1" } }, "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="], + "ajv-i18n": ["ajv-i18n@4.2.0", "", { "peerDependencies": { "ajv": "^8.0.0-beta.0" } }, "sha512-v/ei2UkCEeuKNXh8RToiFsUclmU+G57LO1Oo22OagNMENIw+Yb8eMwvHu7Vn9fmkjJyv6XclhJ8TbuigSglPkg=="], - "ansi-align": ["ansi-align@3.0.1", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="], + "am-i-vibing": ["am-i-vibing@0.4.0", "", { "dependencies": { "process-ancestry": "^0.1.0" }, "bin": { "am-i-vibing": "dist/cli.mjs" } }, "sha512-MxT4XZL7pzLHpuvhDKdMaQHMGGkJDLluKBLsbstn+8wv9sWcFT6h+0ve9qkml95amVTZtZV83gQe2hY+ojgHLg=="], - "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], + "ansi-align": ["ansi-align@3.0.1", "", { "dependencies": { "string-width": "^4.1.0" } }, "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w=="], "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], @@ -3041,7 +3299,7 @@ "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], - "app-builder-bin": ["app-builder-bin@5.0.0-alpha.12", "", {}, "sha512-j87o0j6LqPL3QRr8yid6c+Tt5gC7xNfYo6uQIQkorAC6MpeayVMZrEDzKmJJ/Hlv7EnOQpaRm53k6ktDYZyB6w=="], + "anynum": ["anynum@1.0.1", "", {}, "sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A=="], "app-builder-lib": ["app-builder-lib@26.15.2", "", { "dependencies": { "@electron/asar": "3.4.1", "@electron/fuses": "^1.8.0", "@electron/get": "^3.0.0", "@electron/notarize": "2.5.0", "@electron/osx-sign": "1.3.3", "@electron/rebuild": "^4.0.4", "@electron/universal": "2.0.3", "@malept/flatpak-bundler": "^0.4.0", "@noble/hashes": "^2.2.0", "@peculiar/webcrypto": "^1.7.1", "@types/fs-extra": "9.0.13", "ajv": "^8.18.0", "asn1js": "^3.0.10", "async-exit-hook": "^2.0.1", "builder-util": "26.15.0", "builder-util-runtime": "9.7.0", "chromium-pickle-js": "^0.2.0", "ci-info": "4.3.1", "debug": "^4.3.4", "dotenv": "^16.4.5", "dotenv-expand": "^11.0.6", "ejs": "^3.1.8", "electron-publish": "26.15.1", "fs-extra": "^10.1.0", "hosted-git-info": "^4.1.0", "isbinaryfile": "^5.0.0", "jiti": "^2.4.2", "js-yaml": "^4.1.0", "json5": "^2.2.3", "lazy-val": "^1.0.5", "minimatch": "^10.2.5", "pkijs": "^3.4.0", "plist": "3.1.0", "proper-lockfile": "^4.1.2", "resedit": "^1.7.0", "semver": "~7.7.3", "tar": "^7.5.7", "temp-file": "^3.4.0", "tiny-async-pool": "1.3.0", "unzipper": "^0.12.3", "which": "^5.0.0" }, "peerDependencies": { "dmg-builder": "26.15.2", "electron-builder-squirrel-windows": "26.15.2" } }, "sha512-3mYfKOjr/ZY7gFESOcq8kylBMgGPpmlQYnpBVit4p6zIg0t/8bkWBILdMMtnjFyN2jllyBf225T8dLlz3D6oBQ=="], @@ -3059,6 +3317,10 @@ "aria-query": ["aria-query@5.3.2", "", {}, "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw=="], + "arkregex": ["arkregex@0.0.3", "", { "dependencies": { "@ark/util": "0.55.0" } }, "sha512-bU21QJOJEFJK+BPNgv+5bVXkvRxyAvgnon75D92newgHxkBJTgiFwQxusyViYyJkETsddPlHyspshDQcCzmkNg=="], + + "arktype": ["arktype@2.1.27", "", { "dependencies": { "@ark/schema": "0.55.0", "@ark/util": "0.55.0", "arkregex": "0.0.3" } }, "sha512-enctOHxI4SULBv/TDtCVi5M8oLd4J5SVlPUblXDzSsOYQNMzmVbUosGBnJuZDKmFlN5Ie0/QVEuTE+Z5X1UhsQ=="], + "array-buffer-byte-length": ["array-buffer-byte-length@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "is-array-buffer": "^3.0.5" } }, "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw=="], "array-flatten": ["array-flatten@1.1.1", "", {}, "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg=="], @@ -3073,16 +3335,10 @@ "asn1js": ["asn1js@3.0.10", "", { "dependencies": { "pvtsutils": "^1.3.6", "pvutils": "^1.1.5", "tslib": "^2.8.1" } }, "sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg=="], - "assert-plus": ["assert-plus@1.0.0", "", {}, "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw=="], - "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], "ast-types": ["ast-types@0.16.1", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg=="], - "ast-v8-to-istanbul": ["ast-v8-to-istanbul@1.0.3", "", { "dependencies": { "@jridgewell/trace-mapping": "^0.3.31", "estree-walker": "^3.0.3", "js-tokens": "^10.0.0" } }, "sha512-jCMQ6ZylLPudp0CDfBmQBZUsrh1/8psbmu9ibeVWKuHWD0YrH9YABwlKu5kVEFoT0GCQQW9Z/SxfuEbbkGQCRg=="], - - "astral-regex": ["astral-regex@2.0.0", "", {}, "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="], - "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], "astro": ["astro@5.7.13", "", { "dependencies": { "@astrojs/compiler": "^2.11.0", "@astrojs/internal-helpers": "0.6.1", "@astrojs/markdown-remark": "6.3.1", "@astrojs/telemetry": "3.2.1", "@capsizecss/unpack": "^2.4.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.4", "acorn": "^8.14.1", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.2.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.0.2", "cssesc": "^3.0.0", "debug": "^4.4.0", "deterministic-object-hash": "^2.0.2", "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.6.0", "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.3.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.1.1", "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.17", "magicast": "^0.3.5", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.0", "package-manager-detector": "^1.1.0", "picomatch": "^4.0.2", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.1", "shiki": "^3.2.1", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.12", "tsconfck": "^3.1.5", "ultrahtml": "^1.6.0", "unifont": "~0.5.0", "unist-util-visit": "^5.0.0", "unstorage": "^1.15.0", "vfile": "^6.0.3", "vite": "^6.3.4", "vitefu": "^1.0.6", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.1", "zod": "^3.24.2", "zod-to-json-schema": "^3.24.5", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" }, "bin": { "astro": "astro.js" } }, "sha512-cRGq2llKOhV3XMcYwQpfBIUcssN6HEK5CRbcMxAfd9OcFhvWE7KUy50zLioAZVVl3AqgUTJoNTlmZfD2eG0G1w=="], @@ -3095,29 +3351,27 @@ "async-function": ["async-function@1.0.0", "", {}, "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA=="], + "async-sema": ["async-sema@3.1.1", "", {}, "sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg=="], + "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], "at-least-node": ["at-least-node@1.0.0", "", {}, "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg=="], - "atomic-sleep": ["atomic-sleep@1.0.0", "", {}, "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ=="], - "atomically": ["atomically@2.1.1", "", { "dependencies": { "stubborn-fs": "^2.0.0", "when-exit": "^2.1.4" } }, "sha512-P4w9o2dqARji6P7MHprklbfiArZAWvo07yW7qs3pdljb3BWr12FIB7W+p0zJiuiVsUpRO0iZn1kFFcpPegg0tQ=="], - "autoprefixer": ["autoprefixer@10.5.0", "", { "dependencies": { "browserslist": "^4.28.2", "caniuse-lite": "^1.0.30001787", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong=="], + "autoprefixer": ["autoprefixer@10.5.4", "", { "dependencies": { "browserslist": "^4.28.6", "caniuse-lite": "^1.0.30001806", "fraction.js": "^5.3.4", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA=="], "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], - "avvio": ["avvio@9.2.0", "", { "dependencies": { "@fastify/error": "^4.0.0", "fastq": "^1.17.1" } }, "sha512-2t/sy01ArdHHE0vRH5Hsay+RtCZt3dLPji7W7/MMOCEgze5b7SNDC4j5H6FnVgPkI1MTNFGzHdHrVXDDl7QSSQ=="], - "aws-ssl-profiles": ["aws-ssl-profiles@1.1.2", "", {}, "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g=="], "aws4": ["aws4@1.13.2", "", {}, "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw=="], "aws4fetch": ["aws4fetch@1.0.20", "", {}, "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g=="], - "axe-core": ["axe-core@4.11.4", "", {}, "sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA=="], + "axe-core": ["axe-core@4.12.1", "", {}, "sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA=="], - "axios": ["axios@1.16.1", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A=="], + "axios": ["axios@1.18.1", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "https-proxy-agent": "^5.0.1", "proxy-from-env": "^2.1.0" } }, "sha512-3nTvFlvpn9Zu/RkHUqtc7/+al4UpRW5az71ap5zccp6e8RAYEzhMTecX8Dz1wWDYrPpUoB1HAQEGEAEvUr7S9g=="], "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], @@ -3129,31 +3383,31 @@ "babel-plugin-module-resolver": ["babel-plugin-module-resolver@5.0.2", "", { "dependencies": { "find-babel-config": "^2.1.1", "glob": "^9.3.3", "pkg-up": "^3.1.0", "reselect": "^4.1.7", "resolve": "^1.22.8" } }, "sha512-9KtaCazHee2xc0ibfqsDeamwDps6FZNo5S0Q81dUqEuFzVwPhcT4J5jOqIVvgCA3Q/wO9hKYxN/Ds3tIsp5ygg=="], + "babel-plugin-react-compiler": ["babel-plugin-react-compiler@1.0.0", "", { "dependencies": { "@babel/types": "^7.26.0" } }, "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw=="], + "babel-preset-solid": ["babel-preset-solid@1.9.12", "", { "dependencies": { "babel-plugin-jsx-dom-expressions": "^0.40.6" }, "peerDependencies": { "@babel/core": "^7.0.0", "solid-js": "^1.9.12" }, "optionalPeers": ["solid-js"] }, "sha512-LLqnuKVDlKpyBlMPcH6qEvs/wmS9a+NczppxJ3ryS/c0O5IiSFOIBQi9GzyiGDSbcJpx4Gr87jyFTos1MyEuWg=="], "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], "balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="], - "bare-events": ["bare-events@2.8.3", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-HdUm8EMQBLaJvGUdidNNbqpA1kYkwNcb+MYxkxCLAPJGQzlv9J0C24h8V65Z4c5GLd/JEALDvpFCQgpLJqc0zw=="], + "bare-events": ["bare-events@2.9.1", "", { "peerDependencies": { "bare-abort-controller": "*" }, "optionalPeers": ["bare-abort-controller"] }, "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg=="], - "bare-fs": ["bare-fs@4.7.1", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw=="], + "bare-fs": ["bare-fs@4.7.4", "", { "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", "bare-stream": "^2.6.4", "bare-url": "^2.2.2", "fast-fifo": "^1.3.2" }, "peerDependencies": { "bare-buffer": "*" }, "optionalPeers": ["bare-buffer"] }, "sha512-y1kC+ffIx/tPLdTE693uNjHfzTfr+ravR5tvWlMXe25nELbkqV400S71qHDwbkAQ1FVEZobB1NFRzFbCCcyBCQ=="], - "bare-os": ["bare-os@3.9.1", "", {}, "sha512-6M5XjcnsygQNPMCMPXSK379xrJFiZ/AEMNBmFEmQW8d/789VQATvriyi5r0HYTL9TkQ26rn3kgdTG3aisbrXkQ=="], + "bare-path": ["bare-path@3.1.1", "", {}, "sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ=="], - "bare-path": ["bare-path@3.0.0", "", { "dependencies": { "bare-os": "^3.0.1" } }, "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw=="], + "bare-stream": ["bare-stream@2.13.3", "", { "dependencies": { "b4a": "^1.8.1", "streamx": "^2.25.0", "teex": "^1.0.1" }, "peerDependencies": { "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-abort-controller", "bare-buffer", "bare-events"] }, "sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ=="], - "bare-stream": ["bare-stream@2.13.1", "", { "dependencies": { "streamx": "^2.25.0", "teex": "^1.0.1" }, "peerDependencies": { "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "optionalPeers": ["bare-abort-controller", "bare-buffer", "bare-events"] }, "sha512-Vp0cnjYyrEC4whYTymQ+YZi6pBpfiICZO3cfRG8sy67ZNWe951urv1x4eW1BKNngw3U+3fPYb5JQvHbCtxH7Ow=="], - - "bare-url": ["bare-url@2.4.3", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-Kccpc7ACfXaxfeInfqKcZtW4pT5YBn1mesc4sCsun6sRwtbJ4h+sNOaksUpYEJUKfN65YWC6Bw2OJEFiKxq8nQ=="], + "bare-url": ["bare-url@2.4.5", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ=="], "base-64": ["base-64@1.0.0", "", {}, "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="], "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], - "baseline-browser-mapping": ["baseline-browser-mapping@2.10.33", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw=="], + "baseline-browser-mapping": ["baseline-browser-mapping@2.10.43", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-AjYpR78kDWAY3Efj+cDTFH9t9SCoL7OoTp1BOb0mQV7S+6CiLwnWM3FyxhJtdPufDFKzmCSFoUncKjWgJEZTCQ=="], - "bcp-47": ["bcp-47@2.1.0", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w=="], + "bcp-47": ["bcp-47@2.1.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-KLw+H/gd2p4zly1X7Yh/qziuyae5/w/QFnvTng9eZL5fvszL7Whl3MBoWF8yxL7ksUjBfOD+OxkytiqbBpG+Fw=="], "bcp-47-match": ["bcp-47-match@2.0.3", "", {}, "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ=="], @@ -3167,15 +3421,17 @@ "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], + "bindings": ["bindings@1.5.0", "", { "dependencies": { "file-uri-to-path": "1.0.0" } }, "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ=="], + "blake3-wasm": ["blake3-wasm@2.1.5", "", {}, "sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g=="], "blob-to-buffer": ["blob-to-buffer@1.2.9", "", {}, "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA=="], "bluebird": ["bluebird@3.7.2", "", {}, "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg=="], - "body-parser": ["body-parser@1.20.5", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA=="], + "blume": ["blume@1.1.4", "", { "dependencies": { "@astrojs/check": "^0.9.0", "@astrojs/markdown-satteri": "^0.3.2", "@astrojs/mdx": "^7.0.0", "@astrojs/node": "^11.0.0", "@astrojs/react": "^6.0.0", "@astrojs/vercel": "^11.0.0", "@clack/prompts": "^1.7.0", "@iconify-json/lucide": "^1.2.115", "@iconify/types": "^2.0.0", "@iconify/utils": "^3.1.3", "@modelcontextprotocol/sdk": "^1.29.0", "@orama/orama": "^3.1.18", "@pierre/diffs": "^1.2.11", "@scalar/astro": "^0.4.5", "@scalar/openapi-parser": "^0.28.8", "@scalar/openapi-types": "^0.9.1", "@shikijs/transformers": "^4.2.0", "@shikijs/twoslash": "^4.2.0", "@tailwindcss/typography": "^0.5.20", "@tailwindcss/vite": "^4", "@vercel/analytics": "^2.0.1", "ai": "^5.0.0", "astro": "^7.0.2", "babel-plugin-react-compiler": "^1.0.0", "citty": "^0.1.6", "consola": "^3.4.0", "dompurify": "^3.4.11", "epub-gen-memory": "^1.1.2", "github-slugger": "^2.0.0", "gray-matter": "^4.0.3", "jiti": "^2.4.0", "js-yaml": "^4.1.0", "katex": "^0.17.0", "marked": "^18.0.5", "mermaid": "^11.15.0", "node-html-parser": "^9.0.0", "pagefind": "^1.3.0", "pathe": "^2.0.0", "react": "^19.0.0", "react-dom": "^19.0.0", "satteri": "^0.9.5", "shiki": "^4.2.0", "simple-icons": "^13.0.0", "tailwindcss": "^4", "takumi-js": "^2.2.1", "tinyglobby": "^0.2.10", "twoslash": "^0.3.9", "typescript": "^6.0.3", "undici": "^8.6.0", "zod": "^3.24.0" }, "peerDependencies": { "@ai-sdk/openai-compatible": "^1.0.41", "@astrojs/cloudflare": "^14.0.0", "@astrojs/netlify": "^8.0.0", "@astrojs/svelte": "^9.0.0", "@astrojs/vue": "^7.0.0", "@mixedbread/sdk": "^0.76.0", "@notionhq/client": "^2.2.15", "@openrouter/ai-sdk-provider": "^1.5.4", "@oramacloud/client": "^2.1.0", "@sanity/client": "^6.21.0", "algoliasearch": "^5.55.0", "flexsearch": "^0.8.0", "typesense": "^3.0.0" }, "optionalPeers": ["@ai-sdk/openai-compatible", "@astrojs/cloudflare", "@astrojs/netlify", "@astrojs/svelte", "@astrojs/vue", "@mixedbread/sdk", "@notionhq/client", "@openrouter/ai-sdk-provider", "@oramacloud/client", "@sanity/client", "algoliasearch", "flexsearch", "typesense"], "bin": { "blume": "bin/blume.mjs" } }, "sha512-boCWAMfuyc2788hjGJPrmxu4mNUojG+XkkPypjq+z8KErq1yV4XrHgET8bzVJtmOdpWVGLIjfzmbLniTePBU8Q=="], - "bonjour-service": ["bonjour-service@1.3.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" } }, "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA=="], + "body-parser": ["body-parser@2.3.0", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^2.0.0", "debug": "^4.4.3", "http-errors": "^2.0.1", "iconv-lite": "^0.7.2", "on-finished": "^2.4.1", "qs": "^6.15.2", "raw-body": "^3.0.2", "type-is": "^2.1.0" } }, "sha512-2cGmJupaNgg+QUwVLAucDuWuoMZ6EX9iHDRswZ5lsNYEmwPaRknMPCLZz07yTzVq/83p4o/wzbDZbBrTvGGTIw=="], "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], @@ -3187,13 +3443,13 @@ "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=="], - "brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="], + "brace-expansion": ["brace-expansion@5.0.7", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], "brotli": ["brotli@1.3.3", "", { "dependencies": { "base64-js": "^1.1.2" } }, "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg=="], - "browserslist": ["browserslist@4.28.2", "", { "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", "electron-to-chromium": "^1.5.328", "node-releases": "^2.0.36", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg=="], + "browserslist": ["browserslist@4.28.6", "", { "dependencies": { "baseline-browser-mapping": "^2.10.42", "caniuse-lite": "^1.0.30001803", "electron-to-chromium": "^1.5.389", "node-releases": "^2.0.51", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-FQBYNK15VMslhLHpA7+n+n1GOlF1kId2xcCg7/j95f24AOF6VDYMNH4mFxF7KuaTdv627faazpOAjFzMrfJOUw=="], "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], @@ -3203,13 +3459,15 @@ "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], + "buffer-image-size": ["buffer-image-size@0.6.4", "", { "dependencies": { "@types/node": "*" } }, "sha512-nEh+kZOPY1w+gcCMobZ6ETUp9WfibndnosbpwB1iJk/8Gt5ZF2bhS6+B6bPYz424KtwsR6Rflc3tCz1/ghX2dQ=="], + "buffers": ["buffers@0.1.1", "", {}, "sha512-9q/rDEGSb/Qsvv2qvzIzdluL5k7AaJOTrw23z9reQthrbF7is4CtlT0DXyO1oei2DCp4uojjzQ7igaSHp1kAEQ=="], "builder-util": ["builder-util@26.15.0", "", { "dependencies": { "@types/debug": "^4.1.6", "builder-util-runtime": "9.7.0", "chalk": "^4.1.2", "cross-spawn": "^7.0.6", "debug": "^4.3.4", "fs-extra": "^10.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "js-yaml": "^4.1.0", "sanitize-filename": "^1.6.3", "source-map-support": "^0.5.19", "stat-mode": "^1.0.0", "temp-file": "^3.4.0", "tiny-async-pool": "1.3.0" } }, "sha512-dUx+HxVbiNsNQ4mGe1PyoC/tBmsHwBNDLdBuqWCj+rhHFE9lHgrXiGYKAM1uNlznhAaUSyMlms84VeSSr3gOBA=="], "builder-util-runtime": ["builder-util-runtime@9.7.0", "", { "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" } }, "sha512-g/kR520giAFYkSXTzcmF3kqQq7wi8F6N6SzeDgZrqTBN+VHdmgWOyTdD1yD7AATDId/yXLvuP34CxW46/BwCdw=="], - "bun-ffi-structs": ["bun-ffi-structs@0.2.2", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-N/ZWtyN0piZlrXQT7TO0V+q952orYqkfhXRXM1Hcbb+R3QSiBH4vLnib187Mrs1H7pWIYECAmPeapGYDOMCl+w=="], + "bun-ffi-structs": ["bun-ffi-structs@0.2.4", "", { "peerDependencies": { "typescript": "^5" } }, "sha512-AJzsqoVFs1KBbJbWHIYrVZLDC3NhTqqh25awRXqzoLzmBAKr5oqk6+CwuYHAekKx+VBCYVohBoKuRq40dV+TYg=="], "bun-pty": ["bun-pty@0.4.8", "", {}, "sha512-rO70Mrbr13+jxHHHu2YBkk2pNqrJE5cJn29WE++PUr+GFA0hq/VgtQPZANJ8dJo6d7XImvBk37Innt8GM7O28w=="], @@ -3221,8 +3479,6 @@ "bytestreamjs": ["bytestreamjs@2.0.1", "", {}, "sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ=="], - "c12": ["c12@3.3.3", "", { "dependencies": { "chokidar": "^5.0.0", "confbox": "^0.2.2", "defu": "^6.1.4", "dotenv": "^17.2.3", "exsolve": "^1.0.8", "giget": "^2.0.0", "jiti": "^2.6.1", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^2.0.0", "pkg-types": "^2.3.0", "rc9": "^2.1.2" }, "peerDependencies": { "magicast": "*" }, "optionalPeers": ["magicast"] }, "sha512-750hTRvgBy5kcMNPdh95Qo+XUBeGo8C7nsKSmedDmaQI+E0r82DwHeM6vBewDe4rGFbnxoa4V9pw+sPh5+Iz8Q=="], - "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], "cacache": ["cacache@20.0.4", "", { "dependencies": { "@npmcli/fs": "^5.0.0", "fs-minipass": "^3.0.0", "glob": "^13.0.0", "lru-cache": "^11.1.0", "minipass": "^7.0.3", "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^7.0.2", "ssri": "^13.0.0" } }, "sha512-M3Lab8NPYlZU2exsL3bMVvMrMqgwCnMWfdZbK28bn3pK6APT/Te/I8hjRPNu1uwORY9a1eEQoifXbKPQMfMTOA=="], @@ -3237,13 +3493,15 @@ "call-bound": ["call-bound@1.0.4", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" } }, "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg=="], + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], + "camel-case": ["camel-case@4.1.2", "", { "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" } }, "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw=="], "camelcase": ["camelcase@8.0.0", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="], "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], - "caniuse-lite": ["caniuse-lite@1.0.30001793", "", {}, "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA=="], + "caniuse-lite": ["caniuse-lite@1.0.30001806", "", {}, "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw=="], "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], @@ -3291,7 +3549,7 @@ "clipboardy": ["clipboardy@4.0.0", "", { "dependencies": { "execa": "^8.0.1", "is-wsl": "^3.1.0", "is64bit": "^2.0.0" } }, "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w=="], - "cliui": ["cliui@9.0.1", "", { "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w=="], + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "clone": ["clone@2.1.2", "", {}, "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="], @@ -3315,13 +3573,11 @@ "color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="], - "color-support": ["color-support@1.1.3", "", { "bin": { "color-support": "bin.js" } }, "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg=="], - "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], - "commander": ["commander@14.0.2", "", {}, "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ=="], + "commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], "common-ancestor-path": ["common-ancestor-path@2.0.0", "", {}, "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng=="], @@ -3335,13 +3591,11 @@ "conf": ["conf@15.1.0", "", { "dependencies": { "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "atomically": "^2.0.3", "debounce-fn": "^6.0.0", "dot-prop": "^10.0.0", "env-paths": "^3.0.0", "json-schema-typed": "^8.0.1", "semver": "^7.7.2", "uint8array-extras": "^1.5.0" } }, "sha512-Uy5YN9KEu0WWDaZAVJ5FAmZoaJt9rdK6kH+utItPyGsCqCgaTKkrmZx3zoE0/3q6S3bcp3Ihkk+ZqPxWxFK5og=="], - "confbox": ["confbox@0.2.4", "", {}, "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ=="], - "config-chain": ["config-chain@1.1.13", "", { "dependencies": { "ini": "^1.3.4", "proto-list": "~1.2.1" } }, "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ=="], "consola": ["consola@3.4.2", "", {}, "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA=="], - "content-disposition": ["content-disposition@0.5.4", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="], + "content-disposition": ["content-disposition@1.1.0", "", {}, "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g=="], "content-type": ["content-type@1.0.5", "", {}, "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA=="], @@ -3351,13 +3605,13 @@ "cookie-es": ["cookie-es@2.0.1", "", {}, "sha512-aVf4A4hI2w70LnF7GG+7xDQUkliwiXWXFvTjkip4+b64ygDQ2sJPRSKFDHbxn8o0xu9QzPkMuuiWIXyFSE2slA=="], - "cookie-signature": ["cookie-signature@1.0.7", "", {}, "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA=="], + "cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="], "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], "cors": ["cors@2.8.6", "", { "dependencies": { "object-assign": "^4", "vary": "^1" } }, "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw=="], - "crc": ["crc@3.8.0", "", { "dependencies": { "buffer": "^5.1.0" } }, "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ=="], + "cose-base": ["cose-base@1.0.3", "", { "dependencies": { "layout-base": "^1.0.0" } }, "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg=="], "crc-32": ["crc-32@1.2.2", "", { "bin": { "crc32": "bin/crc32.njs" } }, "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ=="], @@ -3369,7 +3623,7 @@ "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], - "crossws": ["crossws@0.4.5", "", { "peerDependencies": { "srvx": ">=0.11.5" }, "optionalPeers": ["srvx"] }, "sha512-wUR89x/Rw7/8t+vn0CmGDYM9TD6VtARGb0LD5jq2wjtMy1vCP4M+sm6N6TigWeTYvnA8MoW29NqqXD0ep0rfBA=="], + "crossws": ["crossws@0.4.10", "", { "peerDependencies": { "srvx": ">=0.11.5" }, "optionalPeers": ["srvx"] }, "sha512-pz3oubH/dt12KjqsUB0IuXW4nwRDQ583iDsP4555Cpdqx0NoU7pGlWBcayyFI8f/l/idRpgjMEfwuOxSWJYlIA=="], "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="], @@ -3383,24 +3637,82 @@ "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + "csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "~2.2.0" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="], + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], - "d3-array": ["d3-array@3.2.4", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], + "cytoscape": ["cytoscape@3.34.0", "", {}, "sha512-62rNSrioXw93uliKFBwjukeQyeWwH2PqDrTac31r2P6464u3AUvTk0xS4LVvT251g7IgkFunrI48ZEZGjywSOg=="], - "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], + "cytoscape-cose-bilkent": ["cytoscape-cose-bilkent@4.1.0", "", { "dependencies": { "cose-base": "^1.0.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ=="], - "d3-format": ["d3-format@3.1.2", "", {}, "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg=="], + "cytoscape-fcose": ["cytoscape-fcose@2.2.0", "", { "dependencies": { "cose-base": "^2.2.0" }, "peerDependencies": { "cytoscape": "^3.2.0" } }, "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ=="], - "d3-geo": ["d3-geo@3.1.1", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="], + "d3": ["d3@7.9.0", "", { "dependencies": { "d3-array": "3", "d3-axis": "3", "d3-brush": "3", "d3-chord": "3", "d3-color": "3", "d3-contour": "4", "d3-delaunay": "6", "d3-dispatch": "3", "d3-drag": "3", "d3-dsv": "3", "d3-ease": "3", "d3-fetch": "3", "d3-force": "3", "d3-format": "3", "d3-geo": "3", "d3-hierarchy": "3", "d3-interpolate": "3", "d3-path": "3", "d3-polygon": "3", "d3-quadtree": "3", "d3-random": "3", "d3-scale": "4", "d3-scale-chromatic": "3", "d3-selection": "3", "d3-shape": "3", "d3-time": "3", "d3-time-format": "4", "d3-timer": "3", "d3-transition": "3", "d3-zoom": "3" } }, "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA=="], - "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], + "d3-array": ["d3-array@3.2.4", "", { "dependencies": { "internmap": "1 - 2" } }, "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg=="], - "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], + "d3-axis": ["d3-axis@3.0.0", "", {}, "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw=="], - "d3-time": ["d3-time@3.1.0", "", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="], + "d3-brush": ["d3-brush@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "3", "d3-transition": "3" } }, "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ=="], + + "d3-chord": ["d3-chord@3.0.1", "", { "dependencies": { "d3-path": "1 - 3" } }, "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g=="], + + "d3-color": ["d3-color@3.1.0", "", {}, "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA=="], + + "d3-contour": ["d3-contour@4.0.2", "", { "dependencies": { "d3-array": "^3.2.0" } }, "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA=="], + + "d3-delaunay": ["d3-delaunay@6.0.4", "", { "dependencies": { "delaunator": "5" } }, "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A=="], + + "d3-dispatch": ["d3-dispatch@3.0.1", "", {}, "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg=="], + + "d3-drag": ["d3-drag@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" } }, "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg=="], + + "d3-dsv": ["d3-dsv@3.0.1", "", { "dependencies": { "commander": "7", "iconv-lite": "0.6", "rw": "1" }, "bin": { "csv2json": "bin/dsv2json.js", "csv2tsv": "bin/dsv2dsv.js", "dsv2dsv": "bin/dsv2dsv.js", "dsv2json": "bin/dsv2json.js", "json2csv": "bin/json2dsv.js", "json2dsv": "bin/json2dsv.js", "json2tsv": "bin/json2dsv.js", "tsv2csv": "bin/dsv2dsv.js", "tsv2json": "bin/dsv2json.js" } }, "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q=="], + + "d3-ease": ["d3-ease@3.0.1", "", {}, "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w=="], + + "d3-fetch": ["d3-fetch@3.0.1", "", { "dependencies": { "d3-dsv": "1 - 3" } }, "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw=="], + + "d3-force": ["d3-force@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", "d3-timer": "1 - 3" } }, "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg=="], + + "d3-format": ["d3-format@3.1.2", "", {}, "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg=="], + + "d3-geo": ["d3-geo@3.1.1", "", { "dependencies": { "d3-array": "2.5.0 - 3" } }, "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q=="], + + "d3-hierarchy": ["d3-hierarchy@3.1.2", "", {}, "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA=="], + + "d3-interpolate": ["d3-interpolate@3.0.1", "", { "dependencies": { "d3-color": "1 - 3" } }, "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g=="], + + "d3-path": ["d3-path@3.1.0", "", {}, "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ=="], + + "d3-polygon": ["d3-polygon@3.0.1", "", {}, "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg=="], + + "d3-quadtree": ["d3-quadtree@3.0.1", "", {}, "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw=="], + + "d3-random": ["d3-random@3.0.1", "", {}, "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ=="], + + "d3-sankey": ["d3-sankey@0.12.3", "", { "dependencies": { "d3-array": "1 - 2", "d3-shape": "^1.2.0" } }, "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ=="], + + "d3-scale": ["d3-scale@4.0.2", "", { "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", "d3-interpolate": "1.2.0 - 3", "d3-time": "2.1.1 - 3", "d3-time-format": "2 - 4" } }, "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ=="], + + "d3-scale-chromatic": ["d3-scale-chromatic@3.1.0", "", { "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" } }, "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ=="], + + "d3-selection": ["d3-selection@3.0.0", "", {}, "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ=="], + + "d3-shape": ["d3-shape@3.2.0", "", { "dependencies": { "d3-path": "^3.1.0" } }, "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA=="], + + "d3-time": ["d3-time@3.1.0", "", { "dependencies": { "d3-array": "2 - 3" } }, "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q=="], "d3-time-format": ["d3-time-format@4.1.0", "", { "dependencies": { "d3-time": "1 - 3" } }, "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg=="], + "d3-timer": ["d3-timer@3.0.1", "", {}, "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA=="], + + "d3-transition": ["d3-transition@3.0.1", "", { "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", "d3-ease": "1 - 3", "d3-interpolate": "1 - 3", "d3-timer": "1 - 3" }, "peerDependencies": { "d3-selection": "2 - 3" } }, "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w=="], + + "d3-zoom": ["d3-zoom@3.0.0", "", { "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", "d3-interpolate": "1 - 3", "d3-selection": "2 - 3", "d3-transition": "2 - 3" } }, "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw=="], + + "dagre-d3-es": ["dagre-d3-es@7.0.14", "", { "dependencies": { "d3": "^7.9.0", "lodash-es": "^4.17.21" } }, "sha512-P4rFMVq9ESWqmOgK+dlXvOtLwYg0i7u0HBGJER0LZDJT2VHIPAMZ/riPxqJceWMStH5+E61QxFra9kIS3AqdMg=="], + "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], "data-view-buffer": ["data-view-buffer@1.0.2", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "is-data-view": "^1.0.2" } }, "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ=="], @@ -3409,14 +3721,14 @@ "data-view-byte-offset": ["data-view-byte-offset@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" } }, "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ=="], + "dayjs": ["dayjs@1.11.21", "", {}, "sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA=="], + "db0": ["db0@0.3.4", "", { "peerDependencies": { "@electric-sql/pglite": "*", "@libsql/client": "*", "better-sqlite3": "*", "drizzle-orm": "*", "mysql2": "*", "sqlite3": "*" }, "optionalPeers": ["@electric-sql/pglite", "@libsql/client", "better-sqlite3", "drizzle-orm", "mysql2", "sqlite3"] }, "sha512-RiXXi4WaNzPTHEOu8UPQKMooIbqOEyqA1t7Z6MsdxSCeb8iUC9ko3LcmsLmeUt2SM5bctfArZKkRQggKZz7JNw=="], "debounce-fn": ["debounce-fn@6.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-rBMW+F2TXryBwB54Q0d8drNEI+TfoS9JpNTAoVpukbWEhjXQq4rySFYLaqXMFXwdv61Zb2OHtj5bviSoimqxRQ=="], "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" }, "peerDependencies": { "supports-color": "*" }, "optionalPeers": ["supports-color"] }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], - "decimal.js": ["decimal.js@10.5.0", "", {}, "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw=="], - "decode-named-character-reference": ["decode-named-character-reference@1.3.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q=="], "decompress-response": ["decompress-response@6.0.0", "", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="], @@ -3439,6 +3751,8 @@ "defu": ["defu@6.1.7", "", {}, "sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ=="], + "delaunator": ["delaunator@5.1.0", "", { "dependencies": { "robust-predicates": "^3.0.2" } }, "sha512-AGrQ4QSgssa1NGmWmLPqN5NY2KajF5MqxetNEO+o0n3ZwZZeTmt7bBnvzHWrmkZFxGgr4HdyFgelzgi06otLuQ=="], + "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], "denque": ["denque@2.1.0", "", {}, "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw=="], @@ -3453,7 +3767,7 @@ "destroy": ["destroy@1.2.0", "", {}, "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg=="], - "detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], "detect-node": ["detect-node@2.1.0", "", {}, "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g=="], @@ -3483,10 +3797,6 @@ "dmg-builder": ["dmg-builder@26.15.2", "", { "dependencies": { "app-builder-lib": "26.15.2", "builder-util": "26.15.0", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0" } }, "sha512-fMkjRqKyPtsz4Kzu/qGP0BGjqzMCIgp+/7kw/u6YH6lvn/8hvL3c0TXhoFayBoYdpPCnEinnCHztd4bW7/jetA=="], - "dmg-license": ["dmg-license@1.0.11", "", { "dependencies": { "@types/plist": "^3.0.1", "@types/verror": "^1.10.3", "ajv": "^6.10.0", "crc": "^3.8.0", "iconv-corefoundation": "^1.1.7", "plist": "^3.0.4", "smart-buffer": "^4.0.2", "verror": "^1.10.0" }, "os": "darwin", "bin": { "dmg-license": "bin/dmg-license.js" } }, "sha512-ZdzmqwKmECOWJpqefloC5OJy1+WZBBse5+MR88z9g9Zn4VY+WYUkAyojmhzJckH5YbbZGcYIuGAkY5/Ys5OM2Q=="], - - "dns-packet": ["dns-packet@5.6.1", "", { "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" } }, "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw=="], - "dom-accessibility-api": ["dom-accessibility-api@0.6.3", "", {}, "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w=="], "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], @@ -3525,7 +3835,7 @@ "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], - "effect": ["effect@4.0.0-beta.83", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "fast-check": "^4.8.0", "find-my-way-ts": "^0.1.6", "ini": "^7.0.0", "kubernetes-types": "^1.30.0", "msgpackr": "^2.0.1", "multipasta": "^0.2.7", "toml": "^4.1.1", "uuid": "^14.0.0", "yaml": "^2.9.0" } }, "sha512-0wsak8RtgGAr9UWSbVDgJHZcUqMSvicHcvaZv1MbMM7MCGgW4Rn/137J1MHQbwYPcwYGxT/IqehFd+UbYuj78w=="], + "effect": ["effect@4.0.0-beta.101", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "fast-check": "^4.9.0", "find-my-way-ts": "^0.1.6", "ini": "^7.0.0", "kubernetes-types": "^1.30.0", "msgpackr": "^2.0.4", "multipasta": "^0.2.8", "toml": "^4.1.2", "uuid": "^14.0.1", "yaml": "^2.9.0" } }, "sha512-HjowumlIo+orthn4jMlEJPuzIYPBV+uq/XiciHWhiedLsXQpWHdNJHO5d59BVDP5s1LPuvERcktwFqRXnJqnhA=="], "ejs": ["ejs@3.1.10", "", { "dependencies": { "jake": "^10.8.5" }, "bin": { "ejs": "bin/cli.js" } }, "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA=="], @@ -3533,7 +3843,7 @@ "electron-builder": ["electron-builder@26.15.2", "", { "dependencies": { "app-builder-lib": "26.15.2", "builder-util": "26.15.0", "builder-util-runtime": "9.7.0", "chalk": "^4.1.2", "ci-info": "^4.2.0", "dmg-builder": "26.15.2", "fs-extra": "^10.1.0", "lazy-val": "^1.0.5", "simple-update-notifier": "2.0.0", "yargs": "^17.6.2" }, "bin": { "electron-builder": "./cli.js", "install-app-deps": "./install-app-deps.js" } }, "sha512-veKM9+dCljaC5A74Pwc0ZWQ9arOHREXWh9hUIf8NGg49ch7x+IB4QhbMzIrV5ONZIXM2OEkaxW11cAPjPtoi4A=="], - "electron-builder-squirrel-windows": ["electron-builder-squirrel-windows@26.8.1", "", { "dependencies": { "app-builder-lib": "26.8.1", "builder-util": "26.8.1", "electron-winstaller": "5.4.0" } }, "sha512-o288fIdgPLHA76eDrFADHPoo7VyGkDCYbLV1GzndaMSAVBoZrGvM9m2IehdcVMzdAZJ2eV9bgyissQXHv5tGzA=="], + "electron-builder-squirrel-windows": ["electron-builder-squirrel-windows@26.15.2", "", { "dependencies": { "app-builder-lib": "26.15.2", "builder-util": "26.15.0", "electron-winstaller": "5.4.0" } }, "sha512-PNl+SSRoma9mXhxycNGxutZPgvmK19v41mn8F9oecpAU2QNAldpB4HfMuA1LwFC2j8aRzzV5M9HKlKe6dfpvNw=="], "electron-context-menu": ["electron-context-menu@4.1.2", "", { "dependencies": { "cli-truncate": "^4.0.0", "electron-dl": "^4.0.0", "electron-is-dev": "^3.0.1" } }, "sha512-9xYTUV0oRqKL50N9W71IrXNdVRB0LuBp3R1zkUdUc2wfIa2/QZwYYj5RLuO7Tn7ZSLVIaO3X6u+EIBK+cBvzrQ=="], @@ -3547,7 +3857,7 @@ "electron-store": ["electron-store@11.0.2", "", { "dependencies": { "conf": "^15.0.2", "type-fest": "^5.0.1" } }, "sha512-4VkNRdN+BImL2KcCi41WvAYbh6zLX5AUTi4so68yPqiItjbgTjqpEnGAqasgnG+lB6GuAyUltKwVopp6Uv+gwQ=="], - "electron-to-chromium": ["electron-to-chromium@1.5.364", "", {}, "sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw=="], + "electron-to-chromium": ["electron-to-chromium@1.5.393", "", {}, "sha512-kiDJdIUawuEIcp9XoICKp1iTYDEbgguIPq526N1Q7jIQDeQ3CqoMx71025PI/7E48Ddtw2HuWsVjY7afEgNxmg=="], "electron-updater": ["electron-updater@6.8.9", "", { "dependencies": { "builder-util-runtime": "9.7.0", "fs-extra": "^10.1.0", "js-yaml": "^4.1.0", "lazy-val": "^1.0.5", "lodash.escaperegexp": "^4.1.2", "lodash.isequal": "^4.5.0", "semver": "~7.7.3", "tiny-typed-emitter": "^2.1.0" } }, "sha512-ZhVxM9iGONUpZGI1FxdMRgJjUFXi7AYGVa5PwKlO1tV1/4zDxQmfKpXOHVztKrd6L9rLcFjERvi1Mf2vxyTkig=="], @@ -3565,20 +3875,20 @@ "encodeurl": ["encodeurl@2.0.0", "", {}, "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg=="], - "encoding": ["encoding@0.1.13", "", { "dependencies": { "iconv-lite": "^0.6.2" } }, "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A=="], - "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], - "engine.io-client": ["engine.io-client@6.6.5", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1", "engine.io-parser": "~5.2.1", "ws": "~8.20.1", "xmlhttprequest-ssl": "~2.1.1" } }, "sha512-QCwxUDULPlXv8F6tqMMKx5dNkTe6OaBYRMPYeXKBlyOoKvAmE0ac6pW7fFhSscJ/5SI7666/U/B+MElbsrJlIg=="], + "engine.io-client": ["engine.io-client@6.6.6", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1", "engine.io-parser": "~5.2.1", "ws": "~8.21.0", "xmlhttprequest-ssl": "~2.1.1" } }, "sha512-iY6QdftLQ9pyiPoX082bpf/u1UewnOaJrtJIF9T0++QB34lZrj0uP+Q/bj8AlUsAxqhnkTV2BS8SBZSxOmoV5Q=="], "engine.io-parser": ["engine.io-parser@5.2.3", "", {}, "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q=="], - "enhanced-resolve": ["enhanced-resolve@5.22.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww=="], + "enhanced-resolve": ["enhanced-resolve@5.24.2", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-rpsZEGT1jFuve6QlpyRp9ckQ+kN61hvF9BzCPyMdaKTm8UJce96KBn3sorXOFXlzjPrs3Vc4T1NsSroZ3PxlFw=="], "entities": ["entities@7.0.1", "", {}, "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA=="], "env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], + "epub-gen-memory": ["epub-gen-memory@1.1.2", "", { "dependencies": { "abort-controller": "^3.0.0", "css-select": "^4.1.3", "diacritics": "^1.3.0", "dom-serializer": "^1.3.2", "domhandler": "^4.2.2", "domutils": "^2.8.0", "ejs": "^3.1.6", "htmlparser2": "^7.1.2", "jszip": "^3.7.1", "mime": "^2.5.2", "node-fetch": "^2.0.0", "ow": "^0.28.1", "slugify": "^1.6.5" } }, "sha512-vwGM6MVNqKIskFzPZqhi4ZOs0ZTUXco9oDuHFX1vB2Il9pTAkaHWFBFgHrrl832dYmBPb/raGVUZXFvZYueRyw=="], + "err-code": ["err-code@2.0.3", "", {}, "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA=="], "error-stack-parser": ["error-stack-parser@2.1.4", "", { "dependencies": { "stackframe": "^1.3.4" } }, "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ=="], @@ -3587,6 +3897,8 @@ "es-abstract": ["es-abstract@1.24.2", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg=="], + "es-abstract-get": ["es-abstract-get@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "es-object-atoms": "^1.1.2", "is-callable": "^1.2.7", "object-inspect": "^1.13.4" } }, "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg=="], + "es-array-method-boxes-properly": ["es-array-method-boxes-properly@1.0.0", "", {}, "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA=="], "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], @@ -3601,7 +3913,9 @@ "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], + "es-to-primitive": ["es-to-primitive@1.3.4", "", { "dependencies": { "es-abstract-get": "^1.0.0", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "is-callable": "^1.2.7", "is-date-object": "^1.1.0", "is-symbol": "^1.1.1" } }, "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw=="], + + "es-toolkit": ["es-toolkit@1.49.0", "", {}, "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g=="], "es6-error": ["es6-error@4.1.1", "", {}, "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg=="], @@ -3655,18 +3969,16 @@ "exit-hook": ["exit-hook@2.2.1", "", {}, "sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw=="], - "expect-type": ["expect-type@1.3.0", "", {}, "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA=="], + "expect-type": ["expect-type@1.4.0", "", {}, "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA=="], "exponential-backoff": ["exponential-backoff@3.1.3", "", {}, "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA=="], - "express": ["express@4.22.2", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.5", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.15.1", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", "serve-static": "~1.16.2", "setprototypeof": "1.2.0", "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q=="], + "express": ["express@5.2.1", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="], - "express-rate-limit": ["express-rate-limit@8.5.2", "", { "dependencies": { "ip-address": "^10.2.0" }, "peerDependencies": { "express": ">= 4.11" } }, "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A=="], + "express-rate-limit": ["express-rate-limit@8.6.0", "", { "dependencies": { "debug": "^4.4.3", "ip-address": "^10.2.0" }, "peerDependencies": { "express": ">= 4.11" } }, "sha512-XKJXDsASUOo0LLtFwW5hCcQGH0N4WQc/Rn8/Pvoia+TJFOkkFPvrtW9lZOeeNcxQJspvOIERMwiRLsVFlhHEkA=="], "expressive-code": ["expressive-code@0.41.7", "", { "dependencies": { "@expressive-code/core": "^0.41.7", "@expressive-code/plugin-frames": "^0.41.7", "@expressive-code/plugin-shiki": "^0.41.7", "@expressive-code/plugin-text-markers": "^0.41.7" } }, "sha512-2wZjC8OQ3TaVEMcBtYY4Va3lo6J+Ai9jf3d4dbhURMJcU4Pbqe6EcHe424MIZI0VHUA1bR6xdpoHYi3yxokWqA=="], - "exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], - "ext-list": ["ext-list@2.2.2", "", { "dependencies": { "mime-db": "^1.28.0" } }, "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA=="], "ext-name": ["ext-name@5.0.0", "", { "dependencies": { "ext-list": "^2.0.0", "sort-keys-length": "^1.0.0" } }, "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ=="], @@ -3677,11 +3989,7 @@ "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=="], - "extsprintf": ["extsprintf@1.4.1", "", {}, "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA=="], - - "fast-check": ["fast-check@4.8.0", "", { "dependencies": { "pure-rand": "^8.0.0" } }, "sha512-GOJ158CUMnN6cSahsv4+ExARvIDuzzinFjkp0E9WtiBa5zcVeLozVkWaE4IzFcc+Y48Wp1EDlUZsXRyAztQcSg=="], - - "fast-decode-uri-component": ["fast-decode-uri-component@1.0.1", "", {}, "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg=="], + "fast-check": ["fast-check@4.9.0", "", { "dependencies": { "pure-rand": "^8.0.0" } }, "sha512-7ms6T7SybUev/PQITciI0yLM2pOSFy5zpG8Ty7tQofcVaQUvrMXp6CBwqF6fThLCLOrfBtuHAtwq6Yu4XPCllg=="], "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], @@ -3691,19 +3999,17 @@ "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], - "fast-json-stringify": ["fast-json-stringify@6.4.0", "", { "dependencies": { "@fastify/merge-json-schemas": "^0.2.0", "ajv": "^8.12.0", "ajv-formats": "^3.0.1", "fast-uri": "^3.0.0", "json-schema-ref-resolver": "^3.0.0", "rfdc": "^1.2.0" } }, "sha512-ibRCQ0GZKJIQ+P3Et1h0LhPgp3PMTYk0MH8O+kW3lNYsvmaQww5Nn3f1jf73Q0jR1Yz3a1CDP4/NZD3vOajWJQ=="], + "fast-string-truncated-width": ["fast-string-truncated-width@3.0.3", "", {}, "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g=="], - "fast-querystring": ["fast-querystring@1.1.2", "", { "dependencies": { "fast-decode-uri-component": "^1.0.1" } }, "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg=="], + "fast-string-width": ["fast-string-width@3.0.2", "", { "dependencies": { "fast-string-truncated-width": "^3.0.2" } }, "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg=="], - "fast-uri": ["fast-uri@3.1.2", "", {}, "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ=="], + "fast-uri": ["fast-uri@3.1.3", "", {}, "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg=="], - "fast-xml-builder": ["fast-xml-builder@1.2.0", "", { "dependencies": { "path-expression-matcher": "^1.5.0", "xml-naming": "^0.1.0" } }, "sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q=="], - - "fast-xml-parser": ["fast-xml-parser@4.4.1", "", { "dependencies": { "strnum": "^1.0.5" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw=="], + "fast-wrap-ansi": ["fast-wrap-ansi@0.2.2", "", { "dependencies": { "fast-string-width": "^3.0.2" } }, "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q=="], - "fastify": ["fastify@5.8.5", "", { "dependencies": { "@fastify/ajv-compiler": "^4.0.5", "@fastify/error": "^4.0.0", "@fastify/fast-json-stringify-compiler": "^5.0.0", "@fastify/proxy-addr": "^5.0.0", "abstract-logging": "^2.0.1", "avvio": "^9.0.0", "fast-json-stringify": "^6.0.0", "find-my-way": "^9.0.0", "light-my-request": "^6.0.0", "pino": "^9.14.0 || ^10.1.0", "process-warning": "^5.0.0", "rfdc": "^1.3.1", "secure-json-parse": "^4.0.0", "semver": "^7.6.0", "toad-cache": "^3.7.0" } }, "sha512-Yqptv59pQzPgQUSIm87hMqHJmdkb1+GPxdE6vW6FRyVE9G86mt7rOghitiU4JHRaTyDUk9pfeKmDeu70lAwM4Q=="], + "fast-xml-builder": ["fast-xml-builder@1.3.0", "", { "dependencies": { "path-expression-matcher": "^1.6.2", "xml-naming": "^0.3.0" } }, "sha512-F74cZEdCvuw9P41GAC3rod4X04jjWGM1JPEv/GWSqFTWLsdyMSBMBMlm9Hk3GLBgLBbdBNY8yee0pQh2RBVESQ=="], - "fastify-plugin": ["fastify-plugin@5.1.0", "", {}, "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw=="], + "fast-xml-parser": ["fast-xml-parser@4.4.1", "", { "dependencies": { "strnum": "^1.0.5" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw=="], "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], @@ -3713,16 +4019,16 @@ "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], + "file-uri-to-path": ["file-uri-to-path@1.0.0", "", {}, "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="], + "filelist": ["filelist@1.0.6", "", { "dependencies": { "minimatch": "^5.0.1" } }, "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA=="], "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], - "finalhandler": ["finalhandler@1.3.2", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "statuses": "~2.0.2", "unpipe": "~1.0.0" } }, "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg=="], + "finalhandler": ["finalhandler@2.1.1", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="], "find-babel-config": ["find-babel-config@2.1.2", "", { "dependencies": { "json5": "^2.2.3" } }, "sha512-ZfZp1rQyp4gyuxqt1ZqjFGVeVBvmpURMqdIWXbPRfB97Bf6BzdK/xSIbylEINzQ0kB5tlDQfn9HkNXXWsqTqLg=="], - "find-my-way": ["find-my-way@9.6.0", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-querystring": "^1.0.0", "safe-regex2": "^5.0.0" } }, "sha512-Zf4Xve4RymLl7NgaavNebZ01joJ8MfVerOG43wy7SHLO+r+K0C6d/SE0BiR7AV5V1VOCFlOP7ecdo+I4qmiHrQ=="], - "find-my-way-ts": ["find-my-way-ts@0.1.6", "", {}, "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA=="], "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], @@ -3737,11 +4043,13 @@ "fontkit": ["fontkit@2.0.4", "", { "dependencies": { "@swc/helpers": "^0.5.12", "brotli": "^1.3.2", "clone": "^2.1.2", "dfa": "^1.2.0", "fast-deep-equal": "^3.1.3", "restructure": "^3.0.0", "tiny-inflate": "^1.0.3", "unicode-properties": "^1.4.0", "unicode-trie": "^2.0.0" } }, "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g=="], + "fontkitten": ["fontkitten@1.0.3", "", { "dependencies": { "tiny-inflate": "^1.0.3" } }, "sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw=="], + "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], - "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], + "form-data": ["form-data@4.0.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35" } }, "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ=="], "form-data-encoder": ["form-data-encoder@1.7.2", "", {}, "sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A=="], @@ -3755,7 +4063,7 @@ "framer-motion": ["framer-motion@8.5.5", "", { "dependencies": { "@motionone/dom": "^10.15.3", "hey-listen": "^1.0.8", "tslib": "^2.4.0" }, "optionalDependencies": { "@emotion/is-prop-valid": "^0.8.2" }, "peerDependencies": { "react": "^18.0.0", "react-dom": "^18.0.0" } }, "sha512-5IDx5bxkjWHWUF3CVJoSyUVOtrbAxtzYBBowRE2uYI/6VYhkEBD+rbTHEGuUmbGHRj6YqqSfoG7Aa1cLyWCrBA=="], - "fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], + "fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], "fs-extra": ["fs-extra@10.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="], @@ -3767,15 +4075,15 @@ "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], - "function.prototype.name": ["function.prototype.name@1.1.8", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "functions-have-names": "^1.2.3", "hasown": "^2.0.2", "is-callable": "^1.2.7" } }, "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q=="], + "function.prototype.name": ["function.prototype.name@1.2.0", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", "has-property-descriptors": "^1.0.2", "hasown": "^2.0.4", "is-callable": "^1.2.7", "is-document.all": "^1.0.0" } }, "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew=="], "functions-have-names": ["functions-have-names@1.2.3", "", {}, "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ=="], "fuzzysort": ["fuzzysort@3.1.0", "", {}, "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ=="], - "gaxios": ["gaxios@7.1.4", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2" } }, "sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA=="], + "gaxios": ["gaxios@7.2.0", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2" } }, "sha512-CUVb4wcYe+771XevyH6HtGmXFAGGKkIC3kswAP8Z1JCe0j80JMaTPZH930DWFrvo0atjh18Arc0pEyUCWa5bfg=="], - "gcp-metadata": ["gcp-metadata@8.1.2", "", { "dependencies": { "gaxios": "^7.0.0", "google-logging-utils": "^1.0.0", "json-bigint": "^1.0.0" } }, "sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg=="], + "gcp-metadata": ["gcp-metadata@8.1.3", "", { "dependencies": { "gaxios": "7.1.3", "google-logging-utils": "1.1.3", "json-bigint": "^1.0.0" } }, "sha512-ziTrzUhhpL9Zk5k0HHzgP/KIpWDJT0VMBC/ynt/QIBvTW+UUcSivQRl6VlwTf/EilDxtSWklHoRsKy1c4k+59w=="], "generate-function": ["generate-function@2.3.1", "", { "dependencies": { "is-property": "^1.0.2" } }, "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ=="], @@ -3801,13 +4109,11 @@ "get-tsconfig": ["get-tsconfig@4.14.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA=="], - "ghostty-web": ["ghostty-web@github:anomalyco/ghostty-web#513463a", {}, "anomalyco-ghostty-web-513463a", "sha512-GZR8LSmgGzViWnBJrqRI8MpAZRCJxhcr1Hi9Tyeh7YRooHZQjK9J97FQRD3tbBaM2wjq05gzGY2UEsG+JtZeBw=="], - - "giget": ["giget@2.0.0", "", { "dependencies": { "citty": "^0.1.6", "consola": "^3.4.0", "defu": "^6.1.4", "node-fetch-native": "^1.6.6", "nypm": "^0.6.0", "pathe": "^2.0.3" }, "bin": { "giget": "dist/cli.mjs" } }, "sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA=="], + "ghostty-web": ["ghostty-web@github:anomalyco/ghostty-web#83c0a07", {}, "anomalyco-ghostty-web-83c0a07", "sha512-Lf2v1agHkVUpMpHBWWuCZrhOEmcwwin5/Hboc9rZwQ7/CKkIh5rU1r1CvfLlhkMoFv+ed8z52RZ8hkzGZZj3MQ=="], "github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="], - "gitlab-ai-provider": ["gitlab-ai-provider@6.9.3", "", { "dependencies": { "@anthropic-ai/sdk": "^0.71.0", "@anycable/core": "^0.9.2", "graphql-request": "^6.1.0", "isomorphic-ws": "^5.0.0", "openai": "^6.16.0", "socket.io-client": "^4.8.1", "vscode-jsonrpc": "^8.2.1", "zod": "^3.25.76" }, "peerDependencies": { "@ai-sdk/provider": ">=3.0.0", "@ai-sdk/provider-utils": ">=4.0.0" } }, "sha512-lWo6b6es5+k9iXaDIvE9ECzyK4zfEza4+dQ5FN8SJpEuVRi3ZBCpHIOTa32QoYEDCBaiPh+tcyca86PfNodmlg=="], + "gitlab-ai-provider": ["gitlab-ai-provider@6.11.1", "", { "dependencies": { "@anthropic-ai/sdk": "^0.71.0", "@anycable/core": "^0.9.2", "graphql-request": "^6.1.0", "isomorphic-ws": "^5.0.0", "openai": "^6.16.0", "socket.io-client": "^4.8.1", "vscode-jsonrpc": "^8.2.1", "zod": "^3.25.76" }, "peerDependencies": { "@ai-sdk/provider": ">=3.0.0", "@ai-sdk/provider-utils": ">=4.0.0" } }, "sha512-SJ6f5qa7P8md6lPrserryER3zerLkrezlnqqYQ2AbvDPpHLbwtbyk0FYJ5kNRcmbI80i/VMcsMBP0YIRdc3ucQ=="], "glob": ["glob@13.0.5", "", { "dependencies": { "minimatch": "^10.2.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-BzXxZg24Ibra1pbQ/zE7Kys4Ua1ks7Bn6pKLkVPZ9FZe4JQS6/Q7ef3LG1H+k7lUf5l4T3PLSyYyYJVYUvfgTw=="], @@ -3823,7 +4129,7 @@ "google-auth-library": ["google-auth-library@10.5.0", "", { "dependencies": { "base64-js": "^1.3.0", "ecdsa-sig-formatter": "^1.0.11", "gaxios": "^7.0.0", "gcp-metadata": "^8.0.0", "google-logging-utils": "^1.0.0", "gtoken": "^8.0.0", "jws": "^4.0.0" } }, "sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w=="], - "google-logging-utils": ["google-logging-utils@1.1.3", "", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="], + "google-logging-utils": ["google-logging-utils@1.1.4", "", {}, "sha512-LXxE6ND+JHhDPYtPFt3oeWrjxFPrnRZCZ4At6lpbi1ZDSAN7bmGET9s53vvARbxT93p+xpeDUbc/nCR4C+7vcw=="], "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], @@ -3831,7 +4137,7 @@ "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], - "graphql": ["graphql@16.14.0", "", {}, "sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q=="], + "graphql": ["graphql@16.14.2", "", {}, "sha512-Chq1s4CY7jmh8gO2qvLIJyfCDIN+EHLFW/9iShnp1z8FjBQMoodWP1kDC36VAMXXIvAjj4ARa7ntfAV2BrjsbA=="], "graphql-request": ["graphql-request@6.1.0", "", { "dependencies": { "@graphql-typed-document-node/core": "^3.2.0", "cross-fetch": "^3.1.5" }, "peerDependencies": { "graphql": "14 - 16" } }, "sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw=="], @@ -3841,7 +4147,9 @@ "h3": ["h3@2.0.1-rc.4", "", { "dependencies": { "rou3": "^0.7.8", "srvx": "^0.9.1" }, "peerDependencies": { "crossws": "^0.4.1" }, "optionalPeers": ["crossws"] }, "sha512-vZq8pEUp6THsXKXrUXX44eOqfChic2wVQ1GlSzQCBr7DeFBkfIZAo2WyNND4GSv54TAa0E4LYIK73WSPdgKUgw=="], - "happy-dom": ["happy-dom@20.9.0", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.18.3" } }, "sha512-GZZ9mKe8r646NUAf/zemnGbjYh4Bt8/MqASJY+pSm5ZDtc3YQox+4gsLI7yi1hba6o+eCsGxpHn5+iEVn31/FQ=="], + "hachure-fill": ["hachure-fill@0.5.2", "", {}, "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg=="], + + "happy-dom": ["happy-dom@20.10.6", "", { "dependencies": { "@types/node": ">=20.0.0", "@types/whatwg-mimetype": "^3.0.2", "@types/ws": "^8.18.1", "buffer-image-size": "^0.6.4", "entities": "^7.0.1", "whatwg-mimetype": "^3.0.0", "ws": "^8.21.0" } }, "sha512-6QD0ilzDDt93tX44y8tbmZdAcdTRYDhUP+Asgi6pC8Pp5IA3cvaZGyoVN/EGtlq9ziT65iPuBBn3ASLr6hCgVw=="], "has-bigints": ["has-bigints@1.1.0", "", {}, "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg=="], @@ -3947,9 +4255,7 @@ "i18next": ["i18next@23.16.8", "", { "dependencies": { "@babel/runtime": "^7.23.2" } }, "sha512-06r/TitrM88Mg5FdUXAKL96dJMzgqLE5dv3ryBAra4KCwD9mJ4ndOTS95ZuymIGoE+2hzfdaMak2X11/es7ZWg=="], - "iconv-corefoundation": ["iconv-corefoundation@1.1.7", "", { "dependencies": { "cli-truncate": "^2.1.0", "node-addon-api": "^1.6.3" }, "os": "darwin" }, "sha512-T10qvkw0zz4wnm560lOEg0PovVqUXuOFhhHAkixw8/sycy7TJt7v/RrkEKEQnAw2viPSJu6iAkErxnzR0g8PpQ=="], - - "iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="], + "iconv-lite": ["iconv-lite@0.7.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ=="], "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], @@ -3957,6 +4263,8 @@ "ignore-walk": ["ignore-walk@8.0.0", "", { "dependencies": { "minimatch": "^10.0.3" } }, "sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A=="], + "immediate": ["immediate@3.0.6", "", {}, "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="], + "immer": ["immer@11.1.4", "", {}, "sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw=="], "import-local": ["import-local@3.2.0", "", { "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" }, "bin": { "import-local-fixture": "fixtures/cli.js" } }, "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA=="], @@ -3977,7 +4285,7 @@ "internmap": ["internmap@2.0.3", "", {}, "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg=="], - "ioredis": ["ioredis@5.11.0", "", { "dependencies": { "@ioredis/commands": "1.10.0", "cluster-key-slot": "1.1.1", "debug": "4.4.3", "denque": "2.1.0", "redis-errors": "1.2.0", "redis-parser": "3.0.0", "standard-as-callback": "2.1.0" } }, "sha512-EZBErytyVovD8f6pDfG3Kb37N6Y3lmDA9NNj+4+IP13CzzHGeX+OyeRM2Um13khRzoBSzzL+5lVnCX8V2RLeMg=="], + "ioredis": ["ioredis@5.11.1", "", { "dependencies": { "@ioredis/commands": "1.10.0", "cluster-key-slot": "1.1.1", "debug": "4.4.3", "denque": "2.1.0", "redis-errors": "1.2.0", "redis-parser": "3.0.0", "standard-as-callback": "2.1.0" } }, "sha512-ehuGcf94bQXhfagULNXrJdfnWO38v070jxSx/qE87Kjzmu2fU7ro5EFAb+OPituLqgfyuQaym5DlrNydW2sJ9A=="], "ip-address": ["ip-address@10.2.0", "", {}, "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA=="], @@ -4017,6 +4325,8 @@ "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], + "is-document.all": ["is-document.all@1.0.0", "", { "dependencies": { "call-bound": "^1.0.4" } }, "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g=="], + "is-electron": ["is-electron@2.2.2", "", {}, "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg=="], "is-extendable": ["is-extendable@0.1.1", "", {}, "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw=="], @@ -4033,8 +4343,6 @@ "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], - "is-in-ssh": ["is-in-ssh@1.0.0", "", {}, "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw=="], - "is-inside-container": ["is-inside-container@1.0.0", "", { "dependencies": { "is-docker": "^3.0.0" }, "bin": { "is-inside-container": "cli.js" } }, "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA=="], "is-map": ["is-map@2.0.3", "", {}, "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw=="], @@ -4045,6 +4353,8 @@ "is-number-object": ["is-number-object@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw=="], + "is-obj": ["is-obj@2.0.0", "", {}, "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w=="], + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], "is-promise": ["is-promise@4.0.0", "", {}, "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="], @@ -4065,6 +4375,8 @@ "is-typed-array": ["is-typed-array@1.1.15", "", { "dependencies": { "which-typed-array": "^1.1.16" } }, "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ=="], + "is-unsafe": ["is-unsafe@2.0.0", "", {}, "sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA=="], + "is-weakmap": ["is-weakmap@2.0.2", "", {}, "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w=="], "is-weakref": ["is-weakref@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew=="], @@ -4087,12 +4399,6 @@ "isomorphic-ws": ["isomorphic-ws@5.0.0", "", { "peerDependencies": { "ws": "*" } }, "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw=="], - "istanbul-lib-coverage": ["istanbul-lib-coverage@3.2.2", "", {}, "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg=="], - - "istanbul-lib-report": ["istanbul-lib-report@3.0.1", "", { "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", "supports-color": "^7.1.0" } }, "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw=="], - - "istanbul-reports": ["istanbul-reports@3.2.0", "", { "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" } }, "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA=="], - "iterate-iterator": ["iterate-iterator@1.0.2", "", {}, "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw=="], "iterate-value": ["iterate-value@1.0.2", "", { "dependencies": { "es-get-iterator": "^1.0.2", "iterate-iterator": "^1.0.1" } }, "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ=="], @@ -4107,13 +4413,13 @@ "js-base64": ["js-base64@3.7.7", "", {}, "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw=="], - "js-beautify": ["js-beautify@1.15.4", "", { "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.4", "glob": "^10.4.2", "js-cookie": "^3.0.5", "nopt": "^7.2.1" }, "bin": { "css-beautify": "js/bin/css-beautify.js", "html-beautify": "js/bin/html-beautify.js", "js-beautify": "js/bin/js-beautify.js" } }, "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA=="], + "js-beautify": ["js-beautify@1.15.4", "", { "dependencies": { "config-chain": "^1.1.13", "editorconfig": "^1.0.4", "glob": "^10.4.2", "js-cookie": "^3.0.5", "nopt": "^7.2.1" }, "bin": { "js-beautify": "js/bin/js-beautify.js", "css-beautify": "js/bin/css-beautify.js", "html-beautify": "js/bin/html-beautify.js" } }, "sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA=="], "js-cookie": ["js-cookie@3.0.8", "", {}, "sha512-yeJd4aNAdYZQjaon2bpD/Gb0B/omw7HQOsynXXcOiWVCacbBcPlgn8S/d1X6blFSaHao7ozqtW7NZW19xpCtIw=="], "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "js-yaml": ["js-yaml@3.14.2", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg=="], + "js-yaml": ["js-yaml@3.15.0", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-ttBQIIQPDeLjpPOohtUdXuXUVoA2uIB6fEH9HyJ7234s5mBJ5wTx20njxplLZQgLaOfpmPQA7X2t5AX6tIPbog=="], "jsbi": ["jsbi@4.3.2", "", {}, "sha512-9fqMSQbhJykSeii05nxKl4m6Eqn2P6rOlYiS+C5Dr/HPIU/7yZxu5qzbs40tgaFORiw2Amd0mirjxatXYMkIew=="], @@ -4127,8 +4433,6 @@ "json-schema": ["json-schema@0.4.0", "", {}, "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="], - "json-schema-ref-resolver": ["json-schema-ref-resolver@3.0.0", "", { "dependencies": { "dequal": "^2.0.3" } }, "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A=="], - "json-schema-to-ts": ["json-schema-to-ts@3.1.1", "", { "dependencies": { "@babel/runtime": "^7.18.3", "ts-algebra": "^2.0.0" } }, "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g=="], "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], @@ -4139,7 +4443,7 @@ "json-stringify-safe": ["json-stringify-safe@5.0.1", "", {}, "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA=="], - "json-with-bigint": ["json-with-bigint@3.5.8", "", {}, "sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw=="], + "json-with-bigint": ["json-with-bigint@3.5.10", "", {}, "sha512-Vcx+JVNEBts/xfcoCS69sKrOhOk/3TVlvlT+XzUOefVKnnrbYSCKpDCm10pohsJFtsJVYnwa/cXRZ4eElzaM6w=="], "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], @@ -4149,8 +4453,12 @@ "jsonparse": ["jsonparse@1.3.1", "", {}, "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg=="], + "jsonpointer": ["jsonpointer@5.0.1", "", {}, "sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ=="], + "jsonwebtoken": ["jsonwebtoken@9.0.3", "", { "dependencies": { "jws": "^4.0.1", "lodash.includes": "^4.3.0", "lodash.isboolean": "^3.0.3", "lodash.isinteger": "^4.0.4", "lodash.isnumber": "^3.0.3", "lodash.isplainobject": "^4.0.6", "lodash.isstring": "^4.0.1", "lodash.once": "^4.0.0", "ms": "^2.1.1", "semver": "^7.5.4" } }, "sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g=="], + "jszip": ["jszip@3.10.1", "", { "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "setimmediate": "^1.0.5" } }, "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g=="], + "just-diff": ["just-diff@6.0.2", "", {}, "sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA=="], "just-diff-apply": ["just-diff-apply@5.5.0", "", {}, "sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw=="], @@ -4165,6 +4473,8 @@ "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], + "khroma": ["khroma@2.1.0", "", {}, "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw=="], + "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], @@ -4177,35 +4487,41 @@ "language-map": ["language-map@1.5.0", "", {}, "sha512-n7gFZpe+DwEAX9cXVTw43i3wiudWDDtSn28RmdnS/HCPr284dQI/SztsamWanRr75oSlKSaGbV2nmWCTzGCoVg=="], + "layout-base": ["layout-base@1.0.2", "", {}, "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg=="], + "lazy-val": ["lazy-val@1.0.5", "", {}, "sha512-0/BnGCCfyUMkBpeDgWihanIAF9JmZhHBgUhEqzvf+adhNGLoP6TaiI5oF8oyb3I45P+PcnrqihSf01M0l0G5+Q=="], "lazystream": ["lazystream@1.0.1", "", { "dependencies": { "readable-stream": "^2.0.5" } }, "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw=="], "leac": ["leac@0.6.0", "", {}, "sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg=="], - "light-my-request": ["light-my-request@6.6.0", "", { "dependencies": { "cookie": "^1.0.1", "process-warning": "^4.0.0", "set-cookie-parser": "^2.6.0" } }, "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A=="], + "leven": ["leven@4.1.0", "", {}, "sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew=="], - "lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="], + "lie": ["lie@3.3.0", "", { "dependencies": { "immediate": "~3.0.5" } }, "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ=="], - "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="], + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], - "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="], + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], - "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="], + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], - "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="], + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], - "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="], + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], - "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="], + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], - "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="], + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], - "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="], + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], - "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="], + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], - "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], "lilconfig": ["lilconfig@2.1.0", "", {}, "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ=="], @@ -4215,6 +4531,8 @@ "lodash": ["lodash@4.18.1", "", {}, "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q=="], + "lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="], + "lodash.escaperegexp": ["lodash.escaperegexp@4.1.2", "", {}, "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw=="], "lodash.includes": ["lodash.includes@4.3.0", "", {}, "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w=="], @@ -4247,7 +4565,7 @@ "lowercase-keys": ["lowercase-keys@2.0.0", "", {}, "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="], - "lru-cache": ["lru-cache@11.5.1", "", {}, "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A=="], + "lru-cache": ["lru-cache@11.5.2", "", {}, "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g=="], "lru.min": ["lru.min@1.1.4", "", {}, "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA=="], @@ -4261,15 +4579,13 @@ "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=="], - "make-dir": ["make-dir@4.0.0", "", { "dependencies": { "semver": "^7.5.3" } }, "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw=="], - "make-fetch-happen": ["make-fetch-happen@15.0.6", "", { "dependencies": { "@gar/promise-retry": "^1.0.0", "@npmcli/agent": "^4.0.0", "@npmcli/redact": "^4.0.0", "cacache": "^20.0.1", "http-cache-semantics": "^4.1.1", "minipass": "^7.0.2", "minipass-fetch": "^5.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^1.0.0", "proc-log": "^6.0.0", "ssri": "^13.0.0" } }, "sha512-Je0fLJ0F5atA7F+eIlLzk+Wkcl57JDf4kf+EW8xiP5E31xOQxkIxTbgf1Oi1Lw9tRI9UEMRdI5Vz2xTzoNU1Jw=="], "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], - "marked": ["marked@17.0.1", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg=="], + "marked": ["marked@17.0.6", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA=="], "marked-katex-extension": ["marked-katex-extension@5.1.6", "", { "peerDependencies": { "katex": ">=0.16 <0.17", "marked": ">=4 <18" } }, "sha512-vYpLXwmlIDKILIhJtiRTgdyZRn5sEYdFBuTmbpjD7lbCIzg0/DWyK3HXIntN3Tp8zV6hvOUgpZNLWRCgWVc24A=="], @@ -4319,16 +4635,18 @@ "mdn-data": ["mdn-data@2.27.1", "", {}, "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ=="], - "media-typer": ["media-typer@0.3.0", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="], + "media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="], "merge-anything": ["merge-anything@5.1.7", "", { "dependencies": { "is-what": "^4.1.8" } }, "sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ=="], - "merge-descriptors": ["merge-descriptors@1.0.3", "", {}, "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="], + "merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="], "merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="], "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + "mermaid": ["mermaid@11.16.0", "", { "dependencies": { "@braintree/sanitize-url": "^7.1.2", "@iconify/utils": "^3.0.2", "@mermaid-js/parser": "^1.2.0", "@types/d3": "^7.4.3", "@upsetjs/venn.js": "^2.0.0", "cytoscape": "^3.33.3", "cytoscape-cose-bilkent": "^4.1.0", "cytoscape-fcose": "^2.2.0", "d3": "^7.9.0", "d3-sankey": "^0.12.3", "dagre-d3-es": "7.0.14", "dayjs": "^1.11.20", "dompurify": "^3.3.3", "es-toolkit": "^1.45.1", "katex": "^0.16.45", "khroma": "^2.1.0", "marked": "^16.3.0", "roughjs": "^4.6.6", "stylis": "^4.3.6", "ts-dedent": "^2.2.0", "uuid": "^11.1.0 || ^12 || ^13 || ^14.0.0" } }, "sha512-Zvm3kbstgdpvIJPPItlL7fppIZ3kibvc1oZIGxdvk9t6UFz6flv+Jw7FtRGKwfcI8OckmH04LqG6LlS6X4B1pA=="], + "methods": ["methods@1.1.2", "", {}, "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="], "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], @@ -4353,7 +4671,7 @@ "micromark-extension-mdx-expression": ["micromark-extension-mdx-expression@3.0.1", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q=="], - "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.2", "", { "dependencies": { "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ=="], + "micromark-extension-mdx-jsx": ["micromark-extension-mdx-jsx@3.0.1", "", { "dependencies": { "@types/acorn": "^4.0.0", "@types/estree": "^1.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "micromark-factory-mdx-expression": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-events-to-acorn": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0", "vfile-message": "^4.0.0" } }, "sha512-vNuFb9czP8QCtAQcEJn0UJQJZA8Dk6DXKBqx+bg/w0WGuSxDxNr7hErW89tHUY31dUW4NqEOWwmEUNhjTFmHkg=="], "micromark-extension-mdx-md": ["micromark-extension-mdx-md@2.0.0", "", { "dependencies": { "micromark-util-types": "^2.0.0" } }, "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ=="], @@ -4453,15 +4771,13 @@ "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], - "msgpackr": ["msgpackr@2.0.2", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.4" } }, "sha512-c5hYOXFbP79Slh6Dzd2wzk+jnV7mX1UxfMYtilnY1NmalXPqG8DGb5cYCMBrW4AsH3zekBBZd4QrKz9NhtvYLQ=="], + "msgpackr": ["msgpackr@2.0.4", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.4" } }, "sha512-o1C5KRmuRt+apqMr1HuGSqWStZoRBUpEsCsl15uM9VdAF1qHLtvMOU2En747EnTyEl6c4pzPewRMFF31s1CNbA=="], "msgpackr-extract": ["msgpackr-extract@3.0.4", "", { "dependencies": { "node-gyp-build-optional-packages": "5.2.2" }, "optionalDependencies": { "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.4", "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.4", "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.4", "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.4", "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.4", "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.4" }, "bin": { "download-msgpackr-prebuilds": "bin/download-prebuilds.js" } }, "sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw=="], "muggle-string": ["muggle-string@0.4.1", "", {}, "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ=="], - "multicast-dns": ["multicast-dns@7.2.5", "", { "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" }, "bin": { "multicast-dns": "cli.js" } }, "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg=="], - - "multipasta": ["multipasta@0.2.7", "", {}, "sha512-KPA58d68KgGil15oDqXjkUBEBYc00XvbPj5/X+dyzeo/lWm9Nc25pQRlf1D+gv4OpK7NM0J1odrbu9JNNGvynA=="], + "multipasta": ["multipasta@0.2.8", "", {}, "sha512-ZPWuMKyv0cSO29f7hozp+k6+crZbQijV8ipMvxNxRf2SwtYGTX1ZX89Kd20VV4H9Znonx+EQn+iy1wGQsJ+b+Q=="], "mustache": ["mustache@4.2.0", "", { "bin": { "mustache": "bin/mustache" } }, "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="], @@ -4473,7 +4789,7 @@ "nanoevents": ["nanoevents@7.0.1", "", {}, "sha512-o6lpKiCxLeijK4hgsqfR6CNToPyRU3keKyyI6uwuHRvpRTbZ0wXw51WRgyldVugZqoJfkGFrjrIenYH3bfEO3Q=="], - "nanoid": ["nanoid@3.3.12", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ=="], + "nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], "negotiator": ["negotiator@1.0.0", "", {}, "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg=="], @@ -4487,7 +4803,7 @@ "no-case": ["no-case@3.0.4", "", { "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg=="], - "node-abi": ["node-abi@4.31.0", "", { "dependencies": { "semver": "^7.6.3" } }, "sha512-Erq5w/t3syw3s4sDsUaX4QttIdBPsGKTT1DTRsCkTonGggczhlDKm/wDX3o+HPJpQ41EjXCbcmXf0tgr5YZJXw=="], + "node-abi": ["node-abi@4.33.0", "", { "dependencies": { "semver": "^7.6.3" } }, "sha512-vLBWCKb+7LWsX+TbfzWOkw0W81m377tyx3hOweBTjO43CXZnRGS1/JPWs20fr0PgZyDXk6ROYrylsEycK8raDA=="], "node-addon-api": ["node-addon-api@7.1.1", "", {}, "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ=="], @@ -4499,7 +4815,7 @@ "node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="], - "node-gyp": ["node-gyp@12.3.0", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "graceful-fs": "^4.2.6", "nopt": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", "tar": "^7.5.4", "tinyglobby": "^0.2.12", "undici": "^6.25.0", "which": "^6.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-QNcUWM+HgJplcPzBvFBZ9VXacyGZ4+VTOb80PwWR+TlVzoHbRKULNEzpRsnaoxG3Wzr7Qh7BYxGDU3CbKib2Yg=="], + "node-gyp": ["node-gyp@12.4.0", "", { "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", "graceful-fs": "^4.2.6", "nopt": "^9.0.0", "proc-log": "^6.0.0", "semver": "^7.3.5", "tar": "^7.5.4", "tinyglobby": "^0.2.12", "undici": "^6.25.0", "which": "^6.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" } }, "sha512-OMcPNvqTCFUnNaBlmdgq+lfNqY7gTiSmNRDjY3uAXRyudeKZEZxu3CLtjMQrx4zZxCX2b/mpNqTtwuCJgXhHkw=="], "node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="], @@ -4511,7 +4827,7 @@ "node-mock-http": ["node-mock-http@1.0.4", "", {}, "sha512-8DY+kFsDkNXy1sJglUfuODx1/opAGJGyrTuFqEoN90oRc2Vk0ZbD4K2qmKXBBEhZQzdKHIVfEJpDU8Ak2NJEvQ=="], - "node-releases": ["node-releases@2.0.46", "", {}, "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ=="], + "node-releases": ["node-releases@2.0.51", "", {}, "sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ=="], "nopt": ["nopt@9.0.0", "", { "dependencies": { "abbrev": "^4.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-Zhq3a+yFKrYwSBluL4H9XP3m3y5uvQkB/09CwDruCiRmR/UJYnn9W4R48ry0uGC70aeTPKLynBtscP9efFFcPw=="], @@ -4537,8 +4853,6 @@ "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], - "nypm": ["nypm@0.6.6", "", { "dependencies": { "citty": "^0.2.2", "pathe": "^2.0.3", "tinyexec": "^1.1.1" }, "bin": { "nypm": "dist/cli.mjs" } }, "sha512-vRyr0r4cbBapw07Xw8xrj9Teq3o7MUD35rSaTcanDbW+aK2XHDgJFiU6ZTj2GBw7Q12ysdsyFss+Vdz4hQ0Y6Q=="], - "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], "object-hash": ["object-hash@2.2.0", "", {}, "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw=="], @@ -4549,7 +4863,7 @@ "object.assign": ["object.assign@4.1.7", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0", "has-symbols": "^1.1.0", "object-keys": "^1.1.1" } }, "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw=="], - "obug": ["obug@2.1.1", "", {}, "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ=="], + "obug": ["obug@2.1.4", "", {}, "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA=="], "ofetch": ["ofetch@2.0.0-alpha.3", "", {}, "sha512-zpYTCs2byOuft65vI3z43Dd6iSdFbOZZLb9/d21aCpx2rGastVU9dOCv0lu4ykc1Ur1anAYjDi3SUvR0vq50JA=="], @@ -4557,8 +4871,6 @@ "oidc-token-hash": ["oidc-token-hash@5.2.0", "", {}, "sha512-6gj2m8cJZ+iSW8bm0FXdGF0YhIQbKrfP4yWTNzxc31U6MOjfEmB1rHvlYvxI1B7t7BCi1F2vYTT6YhtQRG4hxw=="], - "on-exit-leak-free": ["on-exit-leak-free@2.1.2", "", {}, "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="], - "on-finished": ["on-finished@2.4.1", "", { "dependencies": { "ee-first": "1.1.1" } }, "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg=="], "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], @@ -4575,23 +4887,21 @@ "openapi-types": ["openapi-types@12.1.3", "", {}, "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw=="], - "opencode": ["opencode@workspace:packages/opencode"], - - "opencode-gitlab-auth": ["opencode-gitlab-auth@2.1.0", "", { "dependencies": { "@fastify/rate-limit": "^10.2.0", "@opencode-ai/plugin": "*", "fastify": "^5.2.0", "open": "^10.0.0" } }, "sha512-ZCDYaY0V8Se6hOH2tqZqqcskrd0xLTgfiGhU0J1igkUP52oFtN9eSwxOPLT0ctvNXUq8b+zOmJ4sskAQoC/IUA=="], - - "opencode-poe-auth": ["opencode-poe-auth@0.0.1", "", { "dependencies": { "open": "^10.0.0", "poe-oauth": "*" }, "peerDependencies": { "@opencode-ai/plugin": "*" } }, "sha512-cXqTlS6AXHzo1oBdosnxbT47ZJEZ9WXn050X8Re6wZ1vaNnTpB/l2fMQt90evT7RBK0fB8UjXQUDMKyd7bbiqg=="], - "openid-client": ["openid-client@5.6.4", "", { "dependencies": { "jose": "^4.15.4", "lru-cache": "^6.0.0", "object-hash": "^2.2.0", "oidc-token-hash": "^5.0.3" } }, "sha512-T1h3B10BRPKfcObdBklX639tVz+xh34O7GjofqrqiAQdm7eHsQ00ih18x6wuJ/E6FxdtS2u3FmUGPDeEcMwzNA=="], "opentui-spinner": ["opentui-spinner@0.0.7", "", { "dependencies": { "cli-spinners": "^3.3.0" }, "peerDependencies": { "@opentui/core": "^0.3.4", "@opentui/react": "^0.3.4", "@opentui/solid": "^0.3.4", "typescript": "^5" }, "optionalPeers": ["@opentui/react", "@opentui/solid"] }, "sha512-nPzwAvJG+y9rVEwwHLHqbsMzLnIk2zw+F9LqwA7aYJvpM5gsrKC2rrGi36A+tZpA+1RnWxXeWEgVZMchnaH18Q=="], + "os-paths": ["os-paths@4.4.0", "", {}, "sha512-wrAwOeXp1RRMFfQY8Sy7VaGVmPocaLwSFOYCGKSyo8qmJ+/yaafCl5BCA1IQZWqFSRBrKDYFeR9d/VyQzfH/jg=="], + + "ow": ["ow@0.28.2", "", { "dependencies": { "@sindresorhus/is": "^4.2.0", "callsites": "^3.1.0", "dot-prop": "^6.0.1", "lodash.isequal": "^4.5.0", "vali-date": "^1.0.0" } }, "sha512-dD4UpyBh/9m4X2NVjA+73/ZPBRF+uF4zIMFvvQsabMiEK8x41L3rQ8EENOi35kyyoaJwNxEeJcP6Fj1H4U409Q=="], + "own-keys": ["own-keys@1.0.1", "", { "dependencies": { "get-intrinsic": "^1.2.6", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" } }, "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg=="], "oxc-minify": ["oxc-minify@0.96.0", "", { "optionalDependencies": { "@oxc-minify/binding-android-arm64": "0.96.0", "@oxc-minify/binding-darwin-arm64": "0.96.0", "@oxc-minify/binding-darwin-x64": "0.96.0", "@oxc-minify/binding-freebsd-x64": "0.96.0", "@oxc-minify/binding-linux-arm-gnueabihf": "0.96.0", "@oxc-minify/binding-linux-arm-musleabihf": "0.96.0", "@oxc-minify/binding-linux-arm64-gnu": "0.96.0", "@oxc-minify/binding-linux-arm64-musl": "0.96.0", "@oxc-minify/binding-linux-riscv64-gnu": "0.96.0", "@oxc-minify/binding-linux-s390x-gnu": "0.96.0", "@oxc-minify/binding-linux-x64-gnu": "0.96.0", "@oxc-minify/binding-linux-x64-musl": "0.96.0", "@oxc-minify/binding-wasm32-wasi": "0.96.0", "@oxc-minify/binding-win32-arm64-msvc": "0.96.0", "@oxc-minify/binding-win32-x64-msvc": "0.96.0" } }, "sha512-dXeeGrfPJJ4rMdw+NrqiCRtbzVX2ogq//R0Xns08zql2HjV3Zi2SBJ65saqfDaJzd2bcHqvGWH+M44EQCHPAcA=="], "oxc-parser": ["oxc-parser@0.127.0", "", { "dependencies": { "@oxc-project/types": "^0.127.0" }, "optionalDependencies": { "@oxc-parser/binding-android-arm-eabi": "0.127.0", "@oxc-parser/binding-android-arm64": "0.127.0", "@oxc-parser/binding-darwin-arm64": "0.127.0", "@oxc-parser/binding-darwin-x64": "0.127.0", "@oxc-parser/binding-freebsd-x64": "0.127.0", "@oxc-parser/binding-linux-arm-gnueabihf": "0.127.0", "@oxc-parser/binding-linux-arm-musleabihf": "0.127.0", "@oxc-parser/binding-linux-arm64-gnu": "0.127.0", "@oxc-parser/binding-linux-arm64-musl": "0.127.0", "@oxc-parser/binding-linux-ppc64-gnu": "0.127.0", "@oxc-parser/binding-linux-riscv64-gnu": "0.127.0", "@oxc-parser/binding-linux-riscv64-musl": "0.127.0", "@oxc-parser/binding-linux-s390x-gnu": "0.127.0", "@oxc-parser/binding-linux-x64-gnu": "0.127.0", "@oxc-parser/binding-linux-x64-musl": "0.127.0", "@oxc-parser/binding-openharmony-arm64": "0.127.0", "@oxc-parser/binding-wasm32-wasi": "0.127.0", "@oxc-parser/binding-win32-arm64-msvc": "0.127.0", "@oxc-parser/binding-win32-ia32-msvc": "0.127.0", "@oxc-parser/binding-win32-x64-msvc": "0.127.0" } }, "sha512-bkgD4qHlN7WxLdX8bLXdaU54TtQtAIg/ZBAfm0aje/mo3MRDo3P0hZSgr4U7O3xfX+fQmR5AP04JS/TGcZLcFA=="], - "oxc-resolver": ["oxc-resolver@11.20.0", "", { "optionalDependencies": { "@oxc-resolver/binding-android-arm-eabi": "11.20.0", "@oxc-resolver/binding-android-arm64": "11.20.0", "@oxc-resolver/binding-darwin-arm64": "11.20.0", "@oxc-resolver/binding-darwin-x64": "11.20.0", "@oxc-resolver/binding-freebsd-x64": "11.20.0", "@oxc-resolver/binding-linux-arm-gnueabihf": "11.20.0", "@oxc-resolver/binding-linux-arm-musleabihf": "11.20.0", "@oxc-resolver/binding-linux-arm64-gnu": "11.20.0", "@oxc-resolver/binding-linux-arm64-musl": "11.20.0", "@oxc-resolver/binding-linux-ppc64-gnu": "11.20.0", "@oxc-resolver/binding-linux-riscv64-gnu": "11.20.0", "@oxc-resolver/binding-linux-riscv64-musl": "11.20.0", "@oxc-resolver/binding-linux-s390x-gnu": "11.20.0", "@oxc-resolver/binding-linux-x64-gnu": "11.20.0", "@oxc-resolver/binding-linux-x64-musl": "11.20.0", "@oxc-resolver/binding-openharmony-arm64": "11.20.0", "@oxc-resolver/binding-wasm32-wasi": "11.20.0", "@oxc-resolver/binding-win32-arm64-msvc": "11.20.0", "@oxc-resolver/binding-win32-x64-msvc": "11.20.0" } }, "sha512-CblytBiV/a/ZXY34dsVU2NxhIOxMXst8CvDCtyBelVITgd7PLrKzbEbA6oKLdPjvDKDzCiW48qzmzZ+mYaqn+g=="], + "oxc-resolver": ["oxc-resolver@11.24.2", "", { "optionalDependencies": { "@oxc-resolver/binding-android-arm-eabi": "11.24.2", "@oxc-resolver/binding-android-arm64": "11.24.2", "@oxc-resolver/binding-darwin-arm64": "11.24.2", "@oxc-resolver/binding-darwin-x64": "11.24.2", "@oxc-resolver/binding-freebsd-x64": "11.24.2", "@oxc-resolver/binding-linux-arm-gnueabihf": "11.24.2", "@oxc-resolver/binding-linux-arm-musleabihf": "11.24.2", "@oxc-resolver/binding-linux-arm64-gnu": "11.24.2", "@oxc-resolver/binding-linux-arm64-musl": "11.24.2", "@oxc-resolver/binding-linux-ppc64-gnu": "11.24.2", "@oxc-resolver/binding-linux-riscv64-gnu": "11.24.2", "@oxc-resolver/binding-linux-riscv64-musl": "11.24.2", "@oxc-resolver/binding-linux-s390x-gnu": "11.24.2", "@oxc-resolver/binding-linux-x64-gnu": "11.24.2", "@oxc-resolver/binding-linux-x64-musl": "11.24.2", "@oxc-resolver/binding-openharmony-arm64": "11.24.2", "@oxc-resolver/binding-wasm32-wasi": "11.24.2", "@oxc-resolver/binding-win32-arm64-msvc": "11.24.2", "@oxc-resolver/binding-win32-x64-msvc": "11.24.2" } }, "sha512-FY91FiDBj7ls5MsFS9jN3tjz2o0/zsdSsymlakySaBwVJZorHhkWyICLZMKxlu1R9vYo+sd3z1jwb4J8x7bNDw=="], "oxc-transform": ["oxc-transform@0.96.0", "", { "optionalDependencies": { "@oxc-transform/binding-android-arm64": "0.96.0", "@oxc-transform/binding-darwin-arm64": "0.96.0", "@oxc-transform/binding-darwin-x64": "0.96.0", "@oxc-transform/binding-freebsd-x64": "0.96.0", "@oxc-transform/binding-linux-arm-gnueabihf": "0.96.0", "@oxc-transform/binding-linux-arm-musleabihf": "0.96.0", "@oxc-transform/binding-linux-arm64-gnu": "0.96.0", "@oxc-transform/binding-linux-arm64-musl": "0.96.0", "@oxc-transform/binding-linux-riscv64-gnu": "0.96.0", "@oxc-transform/binding-linux-s390x-gnu": "0.96.0", "@oxc-transform/binding-linux-x64-gnu": "0.96.0", "@oxc-transform/binding-linux-x64-musl": "0.96.0", "@oxc-transform/binding-wasm32-wasi": "0.96.0", "@oxc-transform/binding-win32-arm64-msvc": "0.96.0", "@oxc-transform/binding-win32-x64-msvc": "0.96.0" } }, "sha512-dQPNIF+gHpSkmC0+Vg9IktNyhcn28Y8R3eTLyzn52UNymkasLicl3sFAtz7oEVuFmCpgGjaUTKkwk+jW2cHpDQ=="], @@ -4609,7 +4919,7 @@ "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], - "p-map": ["p-map@7.0.4", "", {}, "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ=="], + "p-map": ["p-map@7.0.5", "", {}, "sha512-e8vJF4XdVkzqqSHguEMz41mQO1wKwxKm5ENrUJQUu9kLDCtn83cxbyHZcszr4QC5zEA7WffRRC4gsTecC7J9oA=="], "p-queue": ["p-queue@8.1.1", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ=="], @@ -4621,13 +4931,13 @@ "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], - "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], + "package-manager-detector": ["package-manager-detector@1.7.0", "", {}, "sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ=="], - "pacote": ["pacote@21.5.0", "", { "dependencies": { "@gar/promise-retry": "^1.0.0", "@npmcli/git": "^7.0.0", "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "@npmcli/run-script": "^10.0.0", "cacache": "^20.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^13.0.0", "npm-packlist": "^10.0.1", "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "proc-log": "^6.0.0", "sigstore": "^4.0.0", "ssri": "^13.0.0", "tar": "^7.4.3" }, "bin": { "pacote": "bin/index.js" } }, "sha512-VtZ0SB8mb5Tzw3dXDfVAIjhyVKUHZkS/ZH9/5mpKenwC9sFOXNI0JI7kEF7IMkwOnsWMFrvAZHzx1T5fmrp9FQ=="], + "pacote": ["pacote@21.5.1", "", { "dependencies": { "@gar/promise-retry": "^1.0.0", "@npmcli/git": "^7.0.0", "@npmcli/installed-package-contents": "^4.0.0", "@npmcli/package-json": "^7.0.0", "@npmcli/promise-spawn": "^9.0.0", "@npmcli/run-script": "^10.0.0", "cacache": "^20.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", "npm-package-arg": "^13.0.0", "npm-packlist": "^10.0.1", "npm-pick-manifest": "^11.0.1", "npm-registry-fetch": "^19.0.0", "proc-log": "^6.0.0", "sigstore": "^4.0.0", "ssri": "^13.0.0", "tar": "^7.4.3" }, "bin": { "pacote": "bin/index.js" } }, "sha512-KvcJ9iy3crysCsgqc4+PknH/w6jkrp8JN36mpZBPwNaDRwTfMZD37YzRazNstiZUOhuF5pno9f78n9mEJBavwg=="], "pagefind": ["pagefind@1.5.2", "", { "optionalDependencies": { "@pagefind/darwin-arm64": "1.5.2", "@pagefind/darwin-x64": "1.5.2", "@pagefind/freebsd-x64": "1.5.2", "@pagefind/linux-arm64": "1.5.2", "@pagefind/linux-x64": "1.5.2", "@pagefind/windows-arm64": "1.5.2", "@pagefind/windows-x64": "1.5.2" }, "bin": { "pagefind": "lib/runner/bin.cjs" } }, "sha512-XTUaK0hXMCu2jszWE584JGQT7y284TmMV9l/HX3rnG5uo3rHI/uHU56XTyyyPFjeWEBxECbAi0CaFDJOONtG0Q=="], - "pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], + "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], "param-case": ["param-case@3.0.4", "", { "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A=="], @@ -4645,15 +4955,15 @@ "parseurl": ["parseurl@1.3.3", "", {}, "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="], - "partial-json": ["partial-json@0.1.7", "", {}, "sha512-Njv/59hHaokb/hRUjce3Hdv12wd60MtM9Z5Olmn+nehe0QDAsRtRbJPvJ0Z91TusF0SuZRIvnM+S4l6EIP8leA=="], - "pascal-case": ["pascal-case@3.1.2", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g=="], "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], + "path-data-parser": ["path-data-parser@0.1.0", "", {}, "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w=="], + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], - "path-expression-matcher": ["path-expression-matcher@1.5.0", "", {}, "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ=="], + "path-expression-matcher": ["path-expression-matcher@1.6.2", "", {}, "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ=="], "path-is-absolute": ["path-is-absolute@1.0.1", "", {}, "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="], @@ -4665,6 +4975,8 @@ "path-to-regexp": ["path-to-regexp@6.3.0", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="], + "path-to-regexp-updated": ["path-to-regexp@6.3.0", "", {}, "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ=="], + "path-type": ["path-type@4.0.0", "", {}, "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="], "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], @@ -4677,30 +4989,20 @@ "pend": ["pend@1.2.0", "", {}, "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg=="], - "perfect-debounce": ["perfect-debounce@2.1.0", "", {}, "sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g=="], - "piccolore": ["piccolore@0.1.3", "", {}, "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw=="], "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], + "picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], - "pino": ["pino@10.3.1", "", { "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^3.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^4.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg=="], - - "pino-abstract-transport": ["pino-abstract-transport@3.0.0", "", { "dependencies": { "split2": "^4.0.0" } }, "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg=="], - - "pino-std-serializers": ["pino-std-serializers@7.1.0", "", {}, "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw=="], - "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], "pkce-challenge": ["pkce-challenge@5.0.1", "", {}, "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ=="], "pkg-dir": ["pkg-dir@4.2.0", "", { "dependencies": { "find-up": "^4.0.0" } }, "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ=="], - "pkg-types": ["pkg-types@2.3.1", "", { "dependencies": { "confbox": "^0.2.4", "exsolve": "^1.0.8", "pathe": "^2.0.3" } }, "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg=="], - "pkg-up": ["pkg-up@3.1.0", "", { "dependencies": { "find-up": "^3.0.0" } }, "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA=="], "pkijs": ["pkijs@3.4.0", "", { "dependencies": { "@noble/hashes": "1.4.0", "asn1js": "^3.0.6", "bytestreamjs": "^2.0.1", "pvtsutils": "^1.3.6", "pvutils": "^1.1.3", "tslib": "^2.8.1" } }, "sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw=="], @@ -4711,11 +5013,13 @@ "plist": ["plist@3.1.0", "", { "dependencies": { "@xmldom/xmldom": "^0.8.8", "base64-js": "^1.5.1", "xmlbuilder": "^15.1.1" } }, "sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ=="], - "poe-oauth": ["poe-oauth@0.0.8", "", {}, "sha512-zlaRVLR6vuxBIYUkZoTIVo3f8h3qd27gv9Ms+kmGiYEiiV4TdccddTdNcGyI0DnuJ9tVi+5LP3Bvzez59IFbjw=="], + "points-on-curve": ["points-on-curve@0.2.0", "", {}, "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A=="], + + "points-on-path": ["points-on-path@0.2.1", "", { "dependencies": { "path-data-parser": "0.1.0", "points-on-curve": "0.2.0" } }, "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g=="], "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.15", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A=="], + "postcss": ["postcss@8.5.19", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ=="], "postcss-css-variables": ["postcss-css-variables@0.18.0", "", { "dependencies": { "balanced-match": "^1.0.0", "escape-string-regexp": "^1.0.3", "extend": "^3.0.1" }, "peerDependencies": { "postcss": "^8.2.6" } }, "sha512-lYS802gHbzn1GI+lXvy9MYIYDuGnl1WB4FTKoqMQqJ3Mab09A7a/1wZvGTkCEZJTM8mSbIyb1mJYn8f0aPye0Q=="], @@ -4727,7 +5031,7 @@ "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], - "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], + "postcss-selector-parser": ["postcss-selector-parser@6.1.4", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ=="], "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], @@ -4735,8 +5039,6 @@ "postject": ["postject@1.0.0-alpha.6", "", { "dependencies": { "commander": "^9.4.0" }, "bin": { "postject": "dist/cli.js" } }, "sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A=="], - "powershell-utils": ["powershell-utils@0.1.0", "", {}, "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A=="], - "preact": ["preact@11.0.0-beta.0", "", {}, "sha512-IcODoASASYwJ9kxz7+MJeiJhvLriwSb4y4mHIyxdgaRZp6kPUud7xytrk/6GZw8U3y6EFJaRb5wi9SrEK+8+lg=="], "preact-render-to-string": ["preact-render-to-string@6.6.5", "", { "peerDependencies": { "preact": ">=10 || >= 11.0.0-0" } }, "sha512-O6MHzYNIKYaiSX3bOw0gGZfEbOmlIDtDfWwN1JJdc/T3ihzRT6tGGSEWE088dWrEDGa1u7101q+6fzQnO9XCPA=="], @@ -4753,9 +5055,9 @@ "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="], - "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], + "process-ancestry": ["process-ancestry@0.1.0", "", {}, "sha512-tGqJW/UnclpYASFcM6Xh8D8l/BMtaQ9+CSG0vlJSJTcdMM4lDRv4c6H0Pdcsfted+bVczdYSfk2fdukg2gQkZg=="], - "process-warning": ["process-warning@5.0.0", "", {}, "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA=="], + "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], "proggy": ["proggy@4.0.0", "", {}, "sha512-MbA4R+WQT76ZBm/5JUpV9yqcJt92175+Y0Bodg3HgiXzrmKu7Ggq+bpn6y6wHH+gN9NcyKn3yg1+d47VaKwNAQ=="], @@ -4773,11 +5075,11 @@ "proper-lockfile": ["proper-lockfile@4.1.2", "", { "dependencies": { "graceful-fs": "^4.2.4", "retry": "^0.12.0", "signal-exit": "^3.0.2" } }, "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA=="], - "property-information": ["property-information@7.1.0", "", {}, "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ=="], + "property-information": ["property-information@7.2.0", "", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="], "proto-list": ["proto-list@1.2.4", "", {}, "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA=="], - "protobufjs": ["protobufjs@7.6.2", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/inquire": "^1.1.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-N9EiLovGEQOJSPF26Ij7qUGvahfEnq0eeYZ02aigIedkmz1qZSwjnP9SBITHJuF/6MYbIW4HDN8zdYjsjqJKXQ=="], + "protobufjs": ["protobufjs@7.6.5", "", { "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", "@protobufjs/codegen": "^2.0.5", "@protobufjs/eventemitter": "^1.1.1", "@protobufjs/fetch": "^1.1.1", "@protobufjs/float": "^1.0.2", "@protobufjs/path": "^1.1.2", "@protobufjs/pool": "^1.1.0", "@protobufjs/utf8": "^1.1.1", "@types/node": ">=13.7.0", "long": "^5.3.2" } }, "sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw=="], "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=="], @@ -4789,34 +5091,28 @@ "pupa": ["pupa@3.3.0", "", { "dependencies": { "escape-goat": "^4.0.0" } }, "sha512-LjgDO2zPtoXP2wJpDjZrGdojii1uqO0cnwKoIoUzkfS98HDmbeiGmYiXo3lXeFlq2xvne1QFQhwYXSUCLKtEuA=="], - "pure-rand": ["pure-rand@8.4.0", "", {}, "sha512-IoM8YF/jY0hiugFo/wOWqfmarlE6J0wc6fDK1PhftMk7MGhVZl88sZimmqBBFomLOCSmcCCpsfj7wXASCpvK9A=="], + "pure-rand": ["pure-rand@8.4.2", "", {}, "sha512-vvuOGgcuPJAirlHvuQw1TrOiw7ptaIXXmIbNuiNOY6lNGJJH49PQ1Kj4nd783nPdQhQdicgOjVI2yI/9BD6/Ng=="], "pvtsutils": ["pvtsutils@1.3.6", "", { "dependencies": { "tslib": "^2.8.1" } }, "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg=="], "pvutils": ["pvutils@1.1.5", "", {}, "sha512-KTqnxsgGiQ6ZAzZCVlJH5eOjSnvlyEgx1m8bkRJfOhmGRqfo5KLvmAlACQkrjEtOQ4B7wF9TdSLIs9O90MX9xA=="], - "qs": ["qs@6.15.2", "", { "dependencies": { "side-channel": "^1.1.0" } }, "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw=="], + "qs": ["qs@6.15.3", "", { "dependencies": { "es-define-property": "^1.0.1", "side-channel": "^1.1.1" } }, "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A=="], "quansync": ["quansync@0.2.11", "", {}, "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA=="], "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], - "quick-format-unescaped": ["quick-format-unescaped@4.0.4", "", {}, "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="], - "quick-lru": ["quick-lru@5.1.1", "", {}, "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="], "radix3": ["radix3@1.1.2", "", {}, "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA=="], - "range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + "range-parser": ["range-parser@1.3.0", "", {}, "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw=="], - "raw-body": ["raw-body@2.5.3", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" } }, "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA=="], - - "rc9": ["rc9@2.1.2", "", { "dependencies": { "defu": "^6.1.4", "destr": "^2.0.3" } }, "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg=="], + "raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="], "react": ["react@18.2.0", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ=="], - "react-docgen-typescript": ["react-docgen-typescript@2.4.0", "", { "peerDependencies": { "typescript": ">= 4.3.x" } }, "sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg=="], - "react-dom": ["react-dom@18.2.0", "", { "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" }, "peerDependencies": { "react": "^18.2.0" } }, "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g=="], "react-is": ["react-is@17.0.2", "", {}, "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w=="], @@ -4845,9 +5141,7 @@ "readdirp": ["readdirp@4.1.2", "", {}, "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="], - "real-require": ["real-require@0.2.0", "", {}, "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg=="], - - "recast": ["recast@0.23.11", "", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA=="], + "recast": ["recast@0.23.12", "", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-dEWRjcINDu/F4l2dYx57ugBtD7HV9KXESyxhzw/MqWLeglJrsjJKqACPyUPg+6AF8mIgm+Zi0dZ3ACoIg+QtpA=="], "recma-build-jsx": ["recma-build-jsx@1.0.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-util-build-jsx": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew=="], @@ -4929,12 +5223,12 @@ "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + "resolve.exports": ["resolve.exports@2.0.3", "", {}, "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A=="], + "responselike": ["responselike@2.0.1", "", { "dependencies": { "lowercase-keys": "^2.0.0" } }, "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw=="], "restructure": ["restructure@3.0.2", "", {}, "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw=="], - "ret": ["ret@0.5.0", "", {}, "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw=="], - "retext": ["retext@9.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", "retext-stringify": "^4.0.0", "unified": "^11.0.0" } }, "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA=="], "retext-latin": ["retext-latin@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", "unified": "^11.0.0" } }, "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA=="], @@ -4947,22 +5241,28 @@ "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], - "rfdc": ["rfdc@1.4.1", "", {}, "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA=="], - - "rimraf": ["rimraf@2.6.3", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "./bin.js" } }, "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="], + "rimraf": ["rimraf@5.0.10", "", { "dependencies": { "glob": "^10.3.7" }, "bin": { "rimraf": "dist/esm/bin.mjs" } }, "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ=="], "roarr": ["roarr@2.15.4", "", { "dependencies": { "boolean": "^3.0.1", "detect-node": "^2.0.4", "globalthis": "^1.0.1", "json-stringify-safe": "^5.0.1", "semver-compare": "^1.0.0", "sprintf-js": "^1.1.2" } }, "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A=="], - "rollup": ["rollup@4.60.4", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.60.4", "@rollup/rollup-android-arm64": "4.60.4", "@rollup/rollup-darwin-arm64": "4.60.4", "@rollup/rollup-darwin-x64": "4.60.4", "@rollup/rollup-freebsd-arm64": "4.60.4", "@rollup/rollup-freebsd-x64": "4.60.4", "@rollup/rollup-linux-arm-gnueabihf": "4.60.4", "@rollup/rollup-linux-arm-musleabihf": "4.60.4", "@rollup/rollup-linux-arm64-gnu": "4.60.4", "@rollup/rollup-linux-arm64-musl": "4.60.4", "@rollup/rollup-linux-loong64-gnu": "4.60.4", "@rollup/rollup-linux-loong64-musl": "4.60.4", "@rollup/rollup-linux-ppc64-gnu": "4.60.4", "@rollup/rollup-linux-ppc64-musl": "4.60.4", "@rollup/rollup-linux-riscv64-gnu": "4.60.4", "@rollup/rollup-linux-riscv64-musl": "4.60.4", "@rollup/rollup-linux-s390x-gnu": "4.60.4", "@rollup/rollup-linux-x64-gnu": "4.60.4", "@rollup/rollup-linux-x64-musl": "4.60.4", "@rollup/rollup-openbsd-x64": "4.60.4", "@rollup/rollup-openharmony-arm64": "4.60.4", "@rollup/rollup-win32-arm64-msvc": "4.60.4", "@rollup/rollup-win32-ia32-msvc": "4.60.4", "@rollup/rollup-win32-x64-gnu": "4.60.4", "@rollup/rollup-win32-x64-msvc": "4.60.4", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-WHeFSbZYsPu3+bLoNRUuAO+wavNlocOPf3wSHTP7hcFKVnJeWsYlCDbr3mTS14FCizf9ccIxXA8sGL8zKeQN3g=="], + "robust-predicates": ["robust-predicates@3.0.3", "", {}, "sha512-NS3levdsRIUOmiJ8FZWCP7LG3QpJyrs/TE0Zpf1yvZu8cAJJ6QMW92H1c7kWpdIHo8RvmLxN/o2JXTKHp74lUA=="], + + "rolldown": ["rolldown@1.1.5", "", { "dependencies": { "@oxc-project/types": "=0.139.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.1.5", "@rolldown/binding-darwin-arm64": "1.1.5", "@rolldown/binding-darwin-x64": "1.1.5", "@rolldown/binding-freebsd-x64": "1.1.5", "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", "@rolldown/binding-linux-arm64-gnu": "1.1.5", "@rolldown/binding-linux-arm64-musl": "1.1.5", "@rolldown/binding-linux-ppc64-gnu": "1.1.5", "@rolldown/binding-linux-s390x-gnu": "1.1.5", "@rolldown/binding-linux-x64-gnu": "1.1.5", "@rolldown/binding-linux-x64-musl": "1.1.5", "@rolldown/binding-openharmony-arm64": "1.1.5", "@rolldown/binding-wasm32-wasi": "1.1.5", "@rolldown/binding-win32-arm64-msvc": "1.1.5", "@rolldown/binding-win32-x64-msvc": "1.1.5" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA=="], + + "rollup": ["rollup@4.62.2", "", { "dependencies": { "@types/estree": "1.0.9" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.62.2", "@rollup/rollup-android-arm64": "4.62.2", "@rollup/rollup-darwin-arm64": "4.62.2", "@rollup/rollup-darwin-x64": "4.62.2", "@rollup/rollup-freebsd-arm64": "4.62.2", "@rollup/rollup-freebsd-x64": "4.62.2", "@rollup/rollup-linux-arm-gnueabihf": "4.62.2", "@rollup/rollup-linux-arm-musleabihf": "4.62.2", "@rollup/rollup-linux-arm64-gnu": "4.62.2", "@rollup/rollup-linux-arm64-musl": "4.62.2", "@rollup/rollup-linux-loong64-gnu": "4.62.2", "@rollup/rollup-linux-loong64-musl": "4.62.2", "@rollup/rollup-linux-ppc64-gnu": "4.62.2", "@rollup/rollup-linux-ppc64-musl": "4.62.2", "@rollup/rollup-linux-riscv64-gnu": "4.62.2", "@rollup/rollup-linux-riscv64-musl": "4.62.2", "@rollup/rollup-linux-s390x-gnu": "4.62.2", "@rollup/rollup-linux-x64-gnu": "4.62.2", "@rollup/rollup-linux-x64-musl": "4.62.2", "@rollup/rollup-openbsd-x64": "4.62.2", "@rollup/rollup-openharmony-arm64": "4.62.2", "@rollup/rollup-win32-arm64-msvc": "4.62.2", "@rollup/rollup-win32-ia32-msvc": "4.62.2", "@rollup/rollup-win32-x64-gnu": "4.62.2", "@rollup/rollup-win32-x64-msvc": "4.62.2", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA=="], "rou3": ["rou3@0.7.12", "", {}, "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg=="], + "roughjs": ["roughjs@4.6.6", "", { "dependencies": { "hachure-fill": "^0.5.2", "path-data-parser": "^0.1.0", "points-on-curve": "^0.2.0", "points-on-path": "^0.2.1" } }, "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ=="], + "router": ["router@2.2.0", "", { "dependencies": { "debug": "^4.4.0", "depd": "^2.0.0", "is-promise": "^4.0.0", "parseurl": "^1.3.3", "path-to-regexp": "^8.0.0" } }, "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ=="], "run-applescript": ["run-applescript@7.1.0", "", {}, "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q=="], "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + "rw": ["rw@1.3.3", "", {}, "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ=="], + "s-js": ["s-js@0.4.9", "", {}, "sha512-RtpOm+cM6O0sHg6IA70wH+UC3FZcND+rccBZpBAHzlUgNO2Bm5BN+FnM8+OBxzXdwpKWFwX11JGF0MFRkhSoIQ=="], "safe-array-concat": ["safe-array-concat@1.1.4", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "get-intrinsic": "^1.3.0", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg=="], @@ -4973,29 +5273,25 @@ "safe-regex-test": ["safe-regex-test@1.1.0", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-regex": "^1.2.1" } }, "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw=="], - "safe-regex2": ["safe-regex2@5.1.1", "", { "dependencies": { "ret": "~0.5.0" }, "bin": { "safe-regex2": "bin/safe-regex2.js" } }, "sha512-mOSBvHGDZMuIEZMdOz/aCEYDCv0E7nfcNsIhUF+/P+xC7Hyf3FkvymqgPbg9D1EdSGu+uKbJgy09K/RKKc7kJA=="], - - "safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="], - "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], "sanitize-filename": ["sanitize-filename@1.6.4", "", { "dependencies": { "truncate-utf8-bytes": "^1.0.0" } }, "sha512-9ZyI08PsvdQl2r/bBIGubpVdR3RR9sY6RDiWFPreA21C/EFlQhmgo20UZlNjZMMZNubusLhAQozkA0Od5J21Eg=="], + "satteri": ["satteri@0.9.5", "", { "dependencies": { "@types/estree-jsx": "^1.0.5", "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "@types/unist": "^3.0.3" }, "optionalDependencies": { "@bruits/satteri-darwin-arm64": "0.9.5", "@bruits/satteri-darwin-x64": "0.9.5", "@bruits/satteri-linux-arm64-gnu": "0.9.5", "@bruits/satteri-linux-arm64-musl": "0.9.5", "@bruits/satteri-linux-x64-gnu": "0.9.5", "@bruits/satteri-linux-x64-musl": "0.9.5", "@bruits/satteri-wasm32-wasi": "0.9.5", "@bruits/satteri-win32-arm64-msvc": "0.9.5", "@bruits/satteri-win32-x64-msvc": "0.9.5" } }, "sha512-ZuWVl+vnM64y+/TtX8Kosv2c00W+hLQiiwnEL6H0UKVVrxFqMw4D2CJHHQaouVd89OAhtBBfjWLqhKi3TVUV4w=="], + "sax": ["sax@1.6.0", "", {}, "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA=="], "scheduler": ["scheduler@0.23.2", "", { "dependencies": { "loose-envify": "^1.1.0" } }, "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ=="], "section-matter": ["section-matter@1.0.0", "", { "dependencies": { "extend-shallow": "^2.0.1", "kind-of": "^6.0.0" } }, "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA=="], - "secure-json-parse": ["secure-json-parse@4.1.0", "", {}, "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA=="], - "selderee": ["selderee@0.11.0", "", { "dependencies": { "parseley": "^0.12.0" } }, "sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA=="], - "semver": ["semver@7.8.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg=="], + "semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], "semver-compare": ["semver-compare@1.0.0", "", {}, "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow=="], - "send": ["send@0.19.2", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "~0.5.2", "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "~2.4.1", "range-parser": "~1.2.1", "statuses": "~2.0.2" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="], + "send": ["send@1.2.1", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="], "seq-queue": ["seq-queue@0.0.5", "", {}, "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="], @@ -5005,9 +5301,9 @@ "seroval-plugins": ["seroval-plugins@1.3.3", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w=="], - "serve-static": ["serve-static@1.16.3", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "~0.19.1" } }, "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA=="], + "serve-static": ["serve-static@2.2.1", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="], - "set-cookie-parser": ["set-cookie-parser@2.7.2", "", {}, "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw=="], + "server-destroy": ["server-destroy@1.0.1", "", {}, "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ=="], "set-function-length": ["set-function-length@1.2.2", "", { "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.2" } }, "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg=="], @@ -5015,6 +5311,8 @@ "set-proto": ["set-proto@1.0.0", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0" } }, "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw=="], + "setimmediate": ["setimmediate@1.0.5", "", {}, "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="], + "setprototypeof": ["setprototypeof@1.2.0", "", {}, "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw=="], "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=="], @@ -5027,7 +5325,7 @@ "shikiji": ["shikiji@0.6.13", "", { "dependencies": { "hast-util-to-html": "^9.0.0" } }, "sha512-4T7X39csvhT0p7GDnq9vysWddf2b6BeioiN3Ymhnt3xcy9tXmDcnsEFVxX18Z4YcQgEE/w48dLJ4pPPUcG9KkA=="], - "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], + "side-channel": ["side-channel@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4", "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ=="], "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="], @@ -5041,6 +5339,8 @@ "sigstore": ["sigstore@4.1.1", "", { "dependencies": { "@sigstore/bundle": "^4.0.0", "@sigstore/core": "^3.2.1", "@sigstore/protobuf-specs": "^0.5.0", "@sigstore/sign": "^4.1.1", "@sigstore/tuf": "^4.0.2", "@sigstore/verify": "^3.1.1" } }, "sha512-endqECJkfhozrXMK5ngu/UAA0xVcVEFdnHJCElGaExypjW+HK5i6zu3NteLoaX/iFbRUbC3+DjttQs0GARr+5w=="], + "simple-icons": ["simple-icons@13.21.0", "", {}, "sha512-LI5pVJPBv6oc79OMsffwb6kEqnmB8P1Cjg1crNUlhsxPETQ5UzbCKQdxU+7MW6+DD1qfPkla/vSKlLD4IfyXpQ=="], + "simple-swizzle": ["simple-swizzle@0.2.4", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw=="], "simple-update-notifier": ["simple-update-notifier@2.0.0", "", { "dependencies": { "semver": "^7.5.3" } }, "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w=="], @@ -5053,23 +5353,29 @@ "slice-ansi": ["slice-ansi@5.0.0", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="], + "slugify": ["slugify@1.6.9", "", {}, "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg=="], + "smart-buffer": ["smart-buffer@4.2.0", "", {}, "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg=="], - "smol-toml": ["smol-toml@1.6.1", "", {}, "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg=="], + "smol-toml": ["smol-toml@1.7.0", "", {}, "sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ=="], "socket.io-client": ["socket.io-client@4.8.3", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1", "engine.io-client": "~6.6.1", "socket.io-parser": "~4.2.4" } }, "sha512-uP0bpjWrjQmUt5DTHq9RuoCBdFJF10cdX9X+a368j/Ft0wmaVgxlrjvK3kjvgCODOMMOz9lcaRzxmso0bTWZ/g=="], - "socket.io-parser": ["socket.io-parser@4.2.6", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1" } }, "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg=="], + "socket.io-parser": ["socket.io-parser@4.2.7", "", { "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.4.1" } }, "sha512-IH/iSeO9T6gz1KkFleGDWkG9N3dl4jXVYUtMhIqH10Md0ttMer8nUNWiP1DKuNrybD2xBrixLJdCC9J6ECoYkg=="], "socks": ["socks@2.8.9", "", { "dependencies": { "ip-address": "^10.1.1", "smart-buffer": "^4.2.0" } }, "sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw=="], "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-dismissible": ["solid-dismissible@0.1.1", "", { "dependencies": { "@corvu/utils": "~0.4.1" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-9kcKBJIMdS+586cA1g63HYWxKh3h89leeNHbPZ1csYjuni+NvPBtNr11l0iEX2AKKEt6FHk6qNhc/gjoYAW1pA=="], + + "solid-focus-trap": ["solid-focus-trap@0.1.9", "", { "dependencies": { "@corvu/utils": "~0.4.2" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-LTyNki6GUJPRLXV5uMWPkYClB07SUMubbr2EkAddiR0CJCF/I283txilMU9RURSr/P8EewMfXWu2o3aWrK7A5A=="], + "solid-js": ["solid-js@1.9.10", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "~1.3.0", "seroval-plugins": "~1.3.0" } }, "sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew=="], "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-presence": ["solid-presence@0.2.0", "", { "dependencies": { "@corvu/utils": "~0.4.2" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-YM92o+jvpzX3XGaD4rLYmq/Kc2ZVh47GSCLEufHBFQQIurvZTs8SoGJxO8BJGNDxBKdcS8F3dYhW1SDXp4BNjA=="], "solid-prevent-scroll": ["solid-prevent-scroll@0.1.10", "", { "dependencies": { "@corvu/utils": "~0.4.1" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-KplGPX2GHiWJLZ6AXYRql4M127PdYzfwvLJJXMkO+CMb8Np4VxqDAg5S8jLdwlEuBis/ia9DKw2M8dFx5u8Mhw=="], @@ -5077,9 +5383,9 @@ "solid-stripe": ["solid-stripe@0.8.1", "", { "peerDependencies": { "@stripe/stripe-js": ">=1.44.1 <8.0.0", "solid-js": "^1.6.0" } }, "sha512-l2SkWoe51rsvk9u1ILBRWyCHODZebChSGMR6zHYJTivTRC0XWrRnNNKs5x1PYXsaIU71KYI6ov5CZB5cOtGLWw=="], - "solid-use": ["solid-use@0.9.1", "", { "peerDependencies": { "solid-js": "^1.7" } }, "sha512-UwvXDVPlrrbj/9ewG9ys5uL2IO4jSiwys2KPzK4zsnAcmEl7iDafZWW1Mo4BSEWOmQCGK6IvpmGHo1aou8iOFw=="], + "solid-transition-size": ["solid-transition-size@0.1.4", "", { "dependencies": { "@corvu/utils": "~0.3.2" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-ocHVnbfy23CgfaH4cEUR/AFg0Y3CEL8Oh3n9Qv8OHFJgPh+zkmERKZQfi/xH5XvxDCizg8VjPrVUhiHB1Gza8g=="], - "sonic-boom": ["sonic-boom@4.2.1", "", { "dependencies": { "atomic-sleep": "^1.0.0" } }, "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q=="], + "solid-use": ["solid-use@0.9.1", "", { "peerDependencies": { "solid-js": "^1.7" } }, "sha512-UwvXDVPlrrbj/9ewG9ys5uL2IO4jSiwys2KPzK4zsnAcmEl7iDafZWW1Mo4BSEWOmQCGK6IvpmGHo1aou8iOFw=="], "sort-keys": ["sort-keys@1.1.2", "", { "dependencies": { "is-plain-obj": "^1.0.0" } }, "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg=="], @@ -5099,8 +5405,6 @@ "spdx-license-ids": ["spdx-license-ids@3.0.23", "", {}, "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw=="], - "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], - "sprintf-js": ["sprintf-js@1.0.3", "", {}, "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g=="], "sqlstring": ["sqlstring@2.3.3", "", {}, "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg=="], @@ -5137,27 +5441,27 @@ "statuses": ["statuses@2.0.2", "", {}, "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw=="], - "std-env": ["std-env@4.1.0", "", {}, "sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ=="], + "std-env": ["std-env@4.2.0", "", {}, "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw=="], "stop-iteration-iterator": ["stop-iteration-iterator@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "internal-slot": "^1.1.0" } }, "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ=="], "stoppable": ["stoppable@1.1.0", "", {}, "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw=="], - "storybook": ["storybook@10.4.1", "", { "dependencies": { "@storybook/global": "^5.0.0", "@storybook/icons": "^2.0.2", "@testing-library/jest-dom": "^6.9.1", "@testing-library/user-event": "^14.6.1", "@vitest/expect": "3.2.4", "@vitest/spy": "3.2.4", "@webcontainer/env": "^1.1.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0", "open": "^10.2.0", "oxc-parser": "^0.127.0", "oxc-resolver": "^11.19.1", "recast": "^0.23.5", "semver": "^7.7.3", "use-sync-external-store": "^1.5.0", "ws": "^8.18.0" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "prettier": "^2 || ^3", "vite-plus": "^0.1.15" }, "optionalPeers": ["@types/react", "prettier", "vite-plus"], "bin": "./dist/bin/dispatcher.js" }, "sha512-V1Zd2e+gBFufqAQVZ1JR8KLqALsEZ3JYSBnWwQbKa6zCfWWanR6AFMyuOkLt2gZOgGp3h2Riuz88pGNVTQSG0A=="], + "storybook": ["storybook@10.5.2", "", { "dependencies": { "@storybook/global": "^5.0.0", "@storybook/icons": "^2.0.2", "@testing-library/dom": "^10.4.1", "@testing-library/jest-dom": "^6.9.1", "@testing-library/user-event": "^14.6.1", "@vitest/expect": "3.2.4", "@vitest/spy": "3.2.4", "@webcontainer/env": "^1.1.1", "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0 || ^0.26.0 || ^0.27.0 || ^0.28.0", "jsonc-parser": "^3.3.1", "open": "^10.2.0", "oxc-parser": "^0.127.0", "oxc-resolver": "^11.19.1", "recast": "^0.23.5", "semver": "^7.7.3", "use-sync-external-store": "^1.5.0", "ws": "^8.18.0" }, "peerDependencies": { "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "prettier": "^2 || ^3", "vite-plus": "^0.1.15 || ^0.2.0" }, "optionalPeers": ["@types/react", "prettier", "vite-plus"], "bin": "./dist/bin/dispatcher.js" }, "sha512-zkYxVZoDMj8njzZc3EH5UyY7885wpi9a1mmWVwFiNHSo+i5r2Go84E2OI1cdOctRymLkNvgs1j5jqAKA0ftBqg=="], - "storybook-solidjs-vite": ["storybook-solidjs-vite@10.1.1", "", { "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "^0.7.0", "@storybook/builder-vite": "^10.4.0", "@storybook/global": "^5.0.0", "semver": "7.8.1" }, "peerDependencies": { "@solidjs/web": "^2.0.0-0", "solid-js": "^1.8.0-0 || ^2.0.0-0", "storybook": "^0.0.0-0 || ^10.0.0", "typescript": "^4.0.0 || ^5.0.0 || ^6.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "vite-plugin-solid": "^2.0.0-0 || ^3.0.0-0" }, "optionalPeers": ["@solidjs/web", "typescript"] }, "sha512-4acj1yxVPM3PieEGFPJukPeIXmpboJprewiX0KMrdYvtAZy8zbkZ7QBf8iENyKNJOayeXWzMm+z7hWBQDUirYg=="], + "storybook-solidjs-vite": ["storybook-solidjs-vite@10.6.0", "", { "dependencies": { "@storybook/builder-vite": "^10.4.4", "@storybook/global": "^5.0.0", "@volar/language-core": "^2.4.28", "@volar/typescript": "^2.4.28", "semver": "^7.8.1" }, "peerDependencies": { "@solidjs/web": "^2.0.0-0", "solid-js": "^1.8.0-0 || ^2.0.0-0", "storybook": "^0.0.0-0 || ^10.0.0", "typescript": "^4.0.0 || ^5.0.0 || ^6.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0", "vite-plugin-solid": "^2.0.0-0 || ^3.0.0-0" }, "optionalPeers": ["@solidjs/web", "typescript"] }, "sha512-/nNRk0D8Uwvqny/DKVNBsCzajjmC//cATifF66ebnpjpRBCwBrflg2ymsGEE0D9LmDsdcMBn1rsoe6Z4C2Jzbw=="], "stream-replace-string": ["stream-replace-string@2.0.0", "", {}, "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w=="], - "streamx": ["streamx@2.26.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-VvNG1K72Po/xwJzxZFnZ++Tbrv4lwSptsbkFuzXCJAYZvCK5nnxsvXU6ajqkv7chyiI1Y0YXq2Jh8Iy8Y7NF/A=="], + "streamx": ["streamx@2.28.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw=="], "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], "string-width-cjs": ["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=="], - "string.prototype.trim": ["string.prototype.trim@1.2.10", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.23.5", "es-object-atoms": "^1.0.0", "has-property-descriptors": "^1.0.2" } }, "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA=="], + "string.prototype.trim": ["string.prototype.trim@1.2.11", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.2", "es-object-atoms": "^1.1.2", "has-property-descriptors": "^1.0.2", "safe-regex-test": "^1.1.0" } }, "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w=="], - "string.prototype.trimend": ["string.prototype.trimend@1.0.9", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ=="], + "string.prototype.trimend": ["string.prototype.trimend@1.0.10", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-object-atoms": "^1.1.2" } }, "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw=="], "string.prototype.trimstart": ["string.prototype.trimstart@1.0.8", "", { "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" } }, "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg=="], @@ -5187,6 +5491,8 @@ "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], + "stylis": ["stylis@4.4.0", "", {}, "sha512-5Z9ZpRzfuH6l/UAvCPAPUo3665Nk2wLaZU3x+TLHKVzIz33+sbJqbtrYoC3KD4/uVOr2Zp+L0LySezP9OHV9yA=="], + "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], "sumchecker": ["sumchecker@3.0.1", "", { "dependencies": { "debug": "^4.1.0" } }, "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg=="], @@ -5199,15 +5505,19 @@ "sury": ["sury@11.0.0-alpha.4", "", { "peerDependencies": { "rescript": "12.x" }, "optionalPeers": ["rescript"] }, "sha512-oeG/GJWZvQCKtGPpLbu0yCZudfr5LxycDo5kh7SJmKHDPCsEPJssIZL2Eb4Tl7g9aPEvIDuRrkS+L0pybsMEMA=="], + "svgo": ["svgo@4.0.2", "", { "dependencies": { "commander": "^11.1.0", "css-select": "^5.1.0", "css-tree": "^3.0.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.1.1", "sax": "^1.5.0" }, "bin": "./bin/svgo.js" }, "sha512-ekx94z1rRc5LDi6oSUaeRnYhd0UOJxdtQCL2rF8xpWxD3TPAsISWOrxezqGovqS38GRZOdpDfvQe3ts6F7nsng=="], + "system-architecture": ["system-architecture@0.1.0", "", {}, "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA=="], "tagged-tag": ["tagged-tag@1.0.0", "", {}, "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng=="], "tailwindcss": ["tailwindcss@4.1.11", "", {}, "sha512-2E9TBm6MDD/xKYe+dvJZAmg3yxIEDNRc0jwlNyDg/4Fil2QcSLjFKGVff0lAf1jjeaArlG/M75Ey/EYr/OJtBA=="], + "takumi-js": ["takumi-js@2.4.1", "", { "dependencies": { "@takumi-rs/core": "2.4.1", "@takumi-rs/helpers": "2.4.1", "@takumi-rs/wasm": "2.4.1" } }, "sha512-8+iPvoxWp7ur962zvsb+kNK80HlnMjYGYjf6+oNIfcN8n91or3Zct48KlOmpdsWkK1ZWSWvxS1BqL1TcJigrbg=="], + "tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="], - "tar": ["tar@7.5.15", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ=="], + "tar": ["tar@7.5.20", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-9FcyK4PA6+WbzlTM9WhQm6vB5W7cP7dUiPsv1g7YDwEQnQ1CGpK3MGlKk/ITVWMk05kHZuBhmVhiv8LZoy/PFQ=="], "tar-stream": ["tar-stream@3.2.0", "", { "dependencies": { "b4a": "^1.6.4", "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg=="], @@ -5217,9 +5527,9 @@ "temp-file": ["temp-file@3.4.0", "", { "dependencies": { "async-exit-hook": "^2.0.1", "fs-extra": "^10.0.0" } }, "sha512-C5tjlC/HCtVUOi3KWVokd4vHVViOmGjtLwIh4MuzPo/nMYTV/p1urt3RnMz2IWXDdKEGJH3k5+KPxtqRsUYGtg=="], - "terracotta": ["terracotta@1.1.0", "", { "dependencies": { "solid-use": "^0.9.1" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-kfQciWUBUBgYkXu7gh3CK3FAJng/iqZslAaY08C+k1Hdx17aVEpcFFb/WPaysxAfcupNH3y53s/pc53xxZauww=="], + "terracotta": ["terracotta@1.1.1", "", { "dependencies": { "solid-use": "^0.9.1" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-Sa6wnvkGMFmPq8N/wQb2aKkIW2eXH0LJvUOEk6QZLBEjqy+LsbzAOpDuqEfOmfA/hexssE6eQve2i1IIOeOh4g=="], - "terser": ["terser@5.48.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q=="], + "terser": ["terser@5.49.0", "", { "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.15.0", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, "bin": { "terser": "bin/terser" } }, "sha512-SNiDnXyHSrxVcIOtVbULzcTmniUiwcV7Nwdyj1twVubeTmbjoa8p69KKDpfkdoOavuM4/GRm1+ykI8qqnavHoA=="], "text-decoder": ["text-decoder@1.2.7", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ=="], @@ -5227,10 +5537,6 @@ "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], - "thread-stream": ["thread-stream@4.2.0", "", { "dependencies": { "real-require": "^1.0.0" } }, "sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ=="], - - "thunky": ["thunky@1.1.0", "", {}, "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA=="], - "tiny-async-pool": ["tiny-async-pool@1.3.0", "", { "dependencies": { "semver": "^5.5.0" } }, "sha512-01EAw5EDrcVrdgyCLgoSPvqznC0sVxDSVeiOz09FUpjh71G79VCqneOr+xvt7T1r76CF6ZZfPjHorN2+d+3mqA=="], "tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="], @@ -5241,6 +5547,8 @@ "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], + "tinyclip": ["tinyclip@0.1.15", "", {}, "sha512-uo33abH+Ays0xYaDysoBt494Hb3hsEczMpcC0MwFl773pazORx4fmvKhclhR1wonUbB6vvpRsvVMwnhfqeMc+A=="], + "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], @@ -5257,11 +5565,11 @@ "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.1", "", {}, "sha512-5DXWzE4Vz7xNHsv+xQ+MGfJYyC78Aok3tEr0MNwHoRf7vZnga1mQXZ4/Nsodld4VR6Wd+VhfmqnNrsRJyYPfrQ=="], + "toad-cache": ["toad-cache@3.7.4", "", {}, "sha512-m1TdR/rvT7kgGJZhspNtXdsdYk0fddFpJJFlG5s+UkPFo6lkLoZ3YLOaovPYjq1R75NP5JfeTlSHaOsE09peCg=="], "toidentifier": ["toidentifier@1.0.1", "", {}, "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="], - "toml": ["toml@4.1.1", "", {}, "sha512-EBJnVBr3dTXdA89WVFoAIPUqkBjxPMwRqsfuo1r240tKFHXv3zgca4+NJib/h6TyvGF7vOawz0jGuryJCdNHrw=="], + "toml": ["toml@4.3.0", "", {}, "sha512-lVb8X9BsPVuH0M4BKeS91tXAmJvCjQ5UIyAbQFaxkKGyUFK2RPkhwaFSQH8vbpl1d23eu/IBH+dwVMHWaq9A5A=="], "toolbeam-docs-theme": ["toolbeam-docs-theme@0.4.8", "", { "peerDependencies": { "@astrojs/starlight": "^0.34.3", "astro": "^5.7.13" } }, "sha512-b+5ynEFp4Woe5a22hzNQm42lD23t13ZMihVxHbzjA50zdcM9aOSJTIjdJ0PDSd4/50HbBXcpHiQsz6rM4N88ww=="], @@ -5271,10 +5579,6 @@ "traverse": ["traverse@0.3.9", "", {}, "sha512-iawgk0hLP3SxGKDfnDJf8wTz4p2qImnyihM5Hh/sGvQ3K37dPi/w8sRhdNIxYA1TwFwc5mDhIJq+O0RsvXBKdQ=="], - "tree-sitter-bash": ["tree-sitter-bash@0.25.0", "", { "dependencies": { "node-addon-api": "^8.2.1", "node-gyp-build": "^4.8.2" }, "peerDependencies": { "tree-sitter": "^0.25.0" }, "optionalPeers": ["tree-sitter"] }, "sha512-gZtlj9+qFS81qKxpLfD6H0UssQ3QBc/F0nKkPsiFDyfQF2YBqYvglFJUzchrPpVhZe9kLZTrJ9n2J6lmka69Vg=="], - - "tree-sitter-powershell": ["tree-sitter-powershell@0.25.10", "", { "dependencies": { "node-addon-api": "^7.1.0", "node-gyp-build": "^4.8.0" }, "peerDependencies": { "tree-sitter": "^0.25.0" }, "optionalPeers": ["tree-sitter"] }, "sha512-bEt8QoySpGFnU3aa8WedQyNMaN6aTwy/WUbvIVt0JSKF+BbJoSHNHu+wCbhj7xLMsfB0AuffmiJm+B8gzva8Lg=="], - "treeverse": ["treeverse@3.0.0", "", {}, "sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ=="], "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], @@ -5285,7 +5589,7 @@ "ts-algebra": ["ts-algebra@2.0.0", "", {}, "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw=="], - "ts-dedent": ["ts-dedent@2.2.0", "", {}, "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ=="], + "ts-dedent": ["ts-dedent@2.3.0", "", {}, "sha512-JfJeIHke7y2egdGGgRAvpCwYFUsHlM2gPcrVOxFkznt/4uzQ7HFmvE63iFHVLBJNDuyDOQgijDK/tXH/f6Msjg=="], "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], @@ -5299,27 +5603,21 @@ "tunnel": ["tunnel@0.0.6", "", {}, "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="], - "turbo": ["turbo@2.8.13", "", { "optionalDependencies": { "turbo-darwin-64": "2.8.13", "turbo-darwin-arm64": "2.8.13", "turbo-linux-64": "2.8.13", "turbo-linux-arm64": "2.8.13", "turbo-windows-64": "2.8.13", "turbo-windows-arm64": "2.8.13" }, "bin": { "turbo": "bin/turbo" } }, "sha512-nyM99hwFB9/DHaFyKEqatdayGjsMNYsQ/XBNO6MITc7roncZetKb97MpHxWf3uiU+LB9c9HUlU3Jp2Ixei2k1A=="], + "turbo": ["turbo@2.10.2", "", { "optionalDependencies": { "@turbo/darwin-64": "2.10.2", "@turbo/darwin-arm64": "2.10.2", "@turbo/linux-64": "2.10.2", "@turbo/linux-arm64": "2.10.2", "@turbo/windows-64": "2.10.2", "@turbo/windows-arm64": "2.10.2" }, "bin": { "turbo": "bin/turbo" } }, "sha512-wTExrNrRjB8qzIcg+ZLm0A3GFNLDsWNwdS/RBXB0FPrBDyzk3i96Yx+TxWZC7a0k1SIreFB8ciUbxjmEqTH8IQ=="], - "turbo-darwin-64": ["turbo-darwin-64@2.8.13", "", { "os": "darwin", "cpu": "x64" }, "sha512-PmOvodQNiOj77+Zwoqku70vwVjKzL34RTNxxoARjp5RU5FOj/CGiC6vcDQhNtFPUOWSAaogHF5qIka9TBhX4XA=="], - - "turbo-darwin-arm64": ["turbo-darwin-arm64@2.8.13", "", { "os": "darwin", "cpu": "arm64" }, "sha512-kI+anKcLIM4L8h+NsM7mtAUpElkCOxv5LgiQVQR8BASyDFfc8Efj5kCk3cqxuxOvIqx0sLfCX7atrHQ2kwuNJQ=="], - - "turbo-linux-64": ["turbo-linux-64@2.8.13", "", { "os": "linux", "cpu": "x64" }, "sha512-j29KnQhHyzdzgCykBFeBqUPS4Wj7lWMnZ8CHqytlYDap4Jy70l4RNG46pOL9+lGu6DepK2s1rE86zQfo0IOdPw=="], - - "turbo-linux-arm64": ["turbo-linux-arm64@2.8.13", "", { "os": "linux", "cpu": "arm64" }, "sha512-OEl1YocXGZDRDh28doOUn49QwNe82kXljO1HXApjU0LapkDiGpfl3jkAlPKxEkGDSYWc8MH5Ll8S16Rf5tEBYg=="], + "turndown": ["turndown@7.2.0", "", { "dependencies": { "@mixmark-io/domino": "^2.2.0" } }, "sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A=="], - "turbo-windows-64": ["turbo-windows-64@2.8.13", "", { "os": "win32", "cpu": "x64" }, "sha512-717bVk1+Pn2Jody7OmWludhEirEe0okoj1NpRbSm5kVZz/yNN/jfjbxWC6ilimXMz7xoMT3IDfQFJsFR3PMANA=="], + "tw-animate-css": ["tw-animate-css@1.4.0", "", {}, "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ=="], - "turbo-windows-arm64": ["turbo-windows-arm64@2.8.13", "", { "os": "win32", "cpu": "arm64" }, "sha512-R819HShLIT0Wj6zWVnIsYvSNtRNj1q9VIyaUz0P24SMcLCbQZIm1sV09F4SDbg+KCCumqD2lcaR2UViQ8SnUJA=="], + "tw-to-css": ["tw-to-css@0.0.12", "", { "dependencies": { "postcss": "8.4.31", "postcss-css-variables": "0.18.0", "tailwindcss": "3.3.2" } }, "sha512-rQAsQvOtV1lBkyCw+iypMygNHrShYAItES5r8fMsrhhaj5qrV2LkZyXc8ccEH+u5bFjHjQ9iuxe90I7Kykf6pw=="], - "turndown": ["turndown@7.2.0", "", { "dependencies": { "@mixmark-io/domino": "^2.2.0" } }, "sha512-eCZGBN4nNNqM9Owkv9HAtWRYfLA4h909E/WGAWWBpmB275ehNhZyk87/Tpvjbp0jjNl9XwCsbe6bm6CqFsgD+A=="], + "twoslash": ["twoslash@0.3.9", "", { "dependencies": { "@typescript/vfs": "^1.6.4", "twoslash-protocol": "0.3.9" }, "peerDependencies": { "typescript": "^5.5.0 || ^6.0.0" } }, "sha512-rDclk+OtzuTX+tnea7DYLCkqGQ3eP0IyfD+kzUJ7t46X/NzlaxwrhecmEBNuSCuEn3V+n1PhcjUUQQ7gUJzX5Q=="], - "tw-to-css": ["tw-to-css@0.0.12", "", { "dependencies": { "postcss": "8.4.31", "postcss-css-variables": "0.18.0", "tailwindcss": "3.3.2" } }, "sha512-rQAsQvOtV1lBkyCw+iypMygNHrShYAItES5r8fMsrhhaj5qrV2LkZyXc8ccEH+u5bFjHjQ9iuxe90I7Kykf6pw=="], + "twoslash-protocol": ["twoslash-protocol@0.3.9", "", {}, "sha512-9/iwp+CXOnjFMPQuPL5PkuRbZnDoNpBvtJCLs9t8kDYkL3YHujbvnHfZA1i5fApDftVEdBw+T/4F+dH5kIzpYQ=="], "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], - "type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="], + "type-is": ["type-is@2.1.0", "", { "dependencies": { "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA=="], "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=="], @@ -5341,13 +5639,13 @@ "ulid": ["ulid@3.0.1", "", { "bin": { "ulid": "dist/cli.js" } }, "sha512-dPJyqPzx8preQhqq24bBG1YNkvigm87K8kVEHCD+ruZg24t6IFEFv00xMWfxcC4djmFtiTLdFuADn4+DOz6R7Q=="], - "ultrahtml": ["ultrahtml@1.6.0", "", {}, "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw=="], + "ultrahtml": ["ultrahtml@1.7.0", "", {}, "sha512-2xRd0VHoAQE4M+vF/DvFFB7pUV0ZxTW1TLi7lHQWnF/Sb5TPeEUV/l+hxcNnGO00ZXGnR0voCMmYRKQf+rvJ2g=="], "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], "uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="], - "undici": ["undici@8.3.0", "", {}, "sha512-TkUDgb6tl7KOGZ+7e8E3d2FYgUQgF6z5YypqjWmixVQSQERFcVrVg0ySADm2LVLRh5ljAaHTCR5Fmz3Q34rB7Q=="], + "undici": ["undici@8.7.0", "", {}, "sha512-N7iQtfyLhIMOFgQubvmLV26svHpO0bqKnAiWotTQCVKCmWrcGbBotPuW1x+xwYZ2VHdSTVUfPQQnlEt1/LouTQ=="], "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="], @@ -5397,10 +5695,12 @@ "unzip-stream": ["unzip-stream@0.3.4", "", { "dependencies": { "binary": "^0.3.0", "mkdirp": "^0.5.1" } }, "sha512-PyofABPVv+d7fL7GOpusx7eRT9YETY2X04PhwbSipdj6bMxVCFJrr+nm0Mxqbf9hUiTin/UsnuFWBXlDZFy0Cw=="], - "unzipper": ["unzipper@0.12.3", "", { "dependencies": { "bluebird": "~3.7.2", "duplexer2": "~0.1.4", "fs-extra": "^11.2.0", "graceful-fs": "^4.2.2", "node-int64": "^0.4.0" } }, "sha512-PZ8hTS+AqcGxsaQntl3IRBw65QrBI6lxzqDEL7IAo/XCEqRTKGfOX56Vea5TH9SZczRVxuzk1re04z/YjuYCJA=="], + "unzipper": ["unzipper@0.12.5", "", { "dependencies": { "bluebird": "~3.7.2", "duplexer2": "~0.1.4", "fs-extra": "11.3.1", "graceful-fs": "^4.2.2", "node-int64": "^0.4.0" } }, "sha512-tXYOi9R57Uj/2Z25SOs5RRSzq886MBQj2gY8dPL+xl/kv6s6SvByoKfAtvfVeEuhntWDgjd2o9p2lb4TVPAz0A=="], "update-browserslist-db": ["update-browserslist-db@1.2.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w=="], + "uqr": ["uqr@0.1.3", "", {}, "sha512-0rjE8iEJe4YmT9TOhwsZtqCMRLc5DXZUI2UEYUUg63ikBkqqE5EYWaI0etFe/5KUcmcYwLih2RND1kq+hrUJXA=="], + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], @@ -5415,17 +5715,17 @@ "utils-merge": ["utils-merge@1.0.1", "", {}, "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA=="], - "uuid": ["uuid@14.0.0", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg=="], + "uuid": ["uuid@14.0.1", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew=="], - "valibot": ["valibot@1.4.1", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-klCmFTz2jeDluy9RwX+F884TCiogtdBJ/YaxSx1EOBYXa3NXNWj8kR1jjN8rzluwojJVWWaHJ4r1U5LfICnM3g=="], + "vali-date": ["vali-date@1.0.0", "", {}, "sha512-sgECfZthyaCKW10N0fm27cg8HYTFK5qMWgypqkXMQ4Wbl/zZKx7xZICgcoxIIE+WFAP/MBL2EFwC/YvLxw3Zeg=="], + + "valibot": ["valibot@1.4.2", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-gjdCvJ6d3RyHAneqxMYMW9QMCwYMb3jpOO0IyHZV1bnRHFBHrX3VkIILt5XYR0WhwHiH7Mty8ovuPZ/O3gamrg=="], "validate-npm-package-name": ["validate-npm-package-name@7.0.2", "", {}, "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A=="], "vary": ["vary@1.1.2", "", {}, "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg=="], - "venice-ai-sdk-provider": ["venice-ai-sdk-provider@2.0.2", "", { "dependencies": { "@ai-sdk/openai-compatible": "^2.0.47", "@ai-sdk/provider": "^3.0.10", "@ai-sdk/provider-utils": "^4.0.27" }, "peerDependencies": { "ai": "^6.0.90" } }, "sha512-aoa05nI3BTK5aGbjBflq+Gfln2AHAkwNbWuGGvCzUIsOfp5Y3iPD4O4PUGDAEiWVJWbjpPn0KfDa0H/HebwsaA=="], - - "verror": ["verror@1.10.1", "", { "dependencies": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg=="], + "venice-ai-sdk-provider": ["venice-ai-sdk-provider@2.1.1", "", { "dependencies": { "@ai-sdk/openai-compatible": "^2.0.51", "@ai-sdk/provider": "^3.0.10", "@ai-sdk/provider-utils": "^4.0.30" }, "peerDependencies": { "ai": "^6.0.90" } }, "sha512-w3OHkuzzKZ3r2TOxER6myBYzZJNoDqol+DUHu3NnfBN/GETnUVxecZJab0CHQQ8GZc0jjzpFymepjcLDPS4SQg=="], "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], @@ -5443,21 +5743,21 @@ "vitefu": ["vitefu@1.1.3", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["vite"] }, "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg=="], - "vitest": ["vitest@4.1.7", "", { "dependencies": { "@vitest/expect": "4.1.7", "@vitest/mocker": "4.1.7", "@vitest/pretty-format": "4.1.7", "@vitest/runner": "4.1.7", "@vitest/snapshot": "4.1.7", "@vitest/spy": "4.1.7", "@vitest/utils": "4.1.7", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.7", "@vitest/browser-preview": "4.1.7", "@vitest/browser-webdriverio": "4.1.7", "@vitest/coverage-istanbul": "4.1.7", "@vitest/coverage-v8": "4.1.7", "@vitest/ui": "4.1.7", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-flYyaFd2CgoCoU+0UKt3pxksgC+S02iTDN0n3LtqaMeXsI9SBcdNujc2k0DeFLzUn/0k538yNjOSdwgCqcrwJA=="], + "vitest": ["vitest@4.1.10", "", { "dependencies": { "@vitest/expect": "4.1.10", "@vitest/mocker": "4.1.10", "@vitest/pretty-format": "4.1.10", "@vitest/runner": "4.1.10", "@vitest/snapshot": "4.1.10", "@vitest/spy": "4.1.10", "@vitest/utils": "4.1.10", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.10", "@vitest/browser-preview": "4.1.10", "@vitest/browser-webdriverio": "4.1.10", "@vitest/coverage-istanbul": "4.1.10", "@vitest/coverage-v8": "4.1.10", "@vitest/ui": "4.1.10", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "./vitest.mjs" } }, "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw=="], - "volar-service-css": ["volar-service-css@0.0.70", "", { "dependencies": { "vscode-css-languageservice": "^6.3.0", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-K1qyOvBpE3rzdAv3e4/6Rv5yizrYPy5R/ne3IWCAzLBuMO4qBMV3kSqWzj6KUVe6S0AnN6wxF7cRkiaKfYMYJw=="], + "volar-service-css": ["volar-service-css@0.0.71", "", { "dependencies": { "vscode-css-languageservice": "^6.3.0", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-wRRFt9BpjMKCazcgOh67MSjUjiWUCAh99DyYSDIOTuxaRjEtDC7PpB0k1Y1wbJIW/pVtMUSVbpPo3UGSm0Byxw=="], - "volar-service-emmet": ["volar-service-emmet@0.0.70", "", { "dependencies": { "@emmetio/css-parser": "^0.4.1", "@emmetio/html-matcher": "^1.3.0", "@vscode/emmet-helper": "^2.9.3", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-xi5bC4m/VyE3zy/n2CXspKeDZs3qA41tHLTw275/7dNWM/RqE2z3BnDICQybHIVp/6G1iOQj5c1qXMgQC08TNg=="], + "volar-service-emmet": ["volar-service-emmet@0.0.71", "", { "dependencies": { "@emmetio/css-parser": "^0.4.1", "@emmetio/html-matcher": "^1.3.0", "@vscode/emmet-helper": "^2.9.3", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-zqjzt6bN95e3CUstBm0PBFAJnrfz0ZAARka87fart46/gNCLLuP3Vujy8V/J8HEziTFLnfkgIASLFYPUhonJcA=="], - "volar-service-html": ["volar-service-html@0.0.70", "", { "dependencies": { "vscode-html-languageservice": "^5.3.0", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-eR6vCgMdmYAo4n+gcT7DSyBQbwB8S3HZZvSagTf0sxNaD4WppMCFfpqWnkrlGStPKMZvMiejRRVmqsX9dYcTvQ=="], + "volar-service-html": ["volar-service-html@0.0.71", "", { "dependencies": { "vscode-html-languageservice": "^5.3.0", "vscode-languageserver-textdocument": "^1.0.11", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-e8tHPhgQ7ooLfudAEIku+kgd9pWkq3SSz8RbnQDI1+Eb8wbenkLGHqoirLqz5ORLV6wIMr2Iv08RWBG5eOcgpw=="], - "volar-service-prettier": ["volar-service-prettier@0.0.70", "", { "dependencies": { "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0", "prettier": "^2.2 || ^3.0" }, "optionalPeers": ["@volar/language-service", "prettier"] }, "sha512-Z6BCFSpGVCd8BPAsZ785Kce1BGlWd5ODqmqZGVuB14MJvrR4+CYz6cDy4F+igmE1gMifqfvMhdgT8Aud4M5ngg=="], + "volar-service-prettier": ["volar-service-prettier@0.0.71", "", { "dependencies": { "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0", "prettier": "^2.2 || ^3.0" }, "optionalPeers": ["@volar/language-service", "prettier"] }, "sha512-Rz7JVH3qD108UCdmIEiZvOBNljMt2nLFdbN8AXcDfn7xD9F5I2aCIsDVqBbXw21PsnxG0b7MfwtNF+zPS/NKUg=="], - "volar-service-typescript": ["volar-service-typescript@0.0.70", "", { "dependencies": { "path-browserify": "^1.0.1", "semver": "^7.6.2", "typescript-auto-import-cache": "^0.3.5", "vscode-languageserver-textdocument": "^1.0.11", "vscode-nls": "^5.2.0", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-l46Bx4cokkUedTd74ojO5H/zqHZJ8SUuyZ0IB8JN4jfRqUM3bQFBHoOwlZCyZmOeO0A3RQNkMnFclxO4c++gsg=="], + "volar-service-typescript": ["volar-service-typescript@0.0.71", "", { "dependencies": { "path-browserify": "^1.0.1", "semver": "^7.6.2", "typescript-auto-import-cache": "^0.3.5", "vscode-languageserver-textdocument": "^1.0.11", "vscode-nls": "^5.2.0", "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-yTtM/BVT6hoyEYnDtaCyAtNhdNeS/mhTTABlBOdw3NNiRBUin3IznFJpgfjer4c6RYopiPjjQjc9VFhxVl1mLw=="], - "volar-service-typescript-twoslash-queries": ["volar-service-typescript-twoslash-queries@0.0.70", "", { "dependencies": { "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-IdD13Z9N2Bu8EM6CM0fDV1E69olEYGHDU25X51YXmq8Y0CmJ2LNj6gOiBJgpS5JGUqFzECVhMNBW7R0sPdRTMQ=="], + "volar-service-typescript-twoslash-queries": ["volar-service-typescript-twoslash-queries@0.0.71", "", { "dependencies": { "vscode-uri": "^3.0.8" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-9K2k72s4n7rV9s4bX0MyjbX9iBribvKZbBJKuEmTCZfeWJXs6Yh7bGpY4eoc7UufAjvpheBqwyZCOIPBvxCv0A=="], - "volar-service-yaml": ["volar-service-yaml@0.0.70", "", { "dependencies": { "vscode-uri": "^3.0.8", "yaml-language-server": "~1.20.0" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-0c8bXDBeoATF9F6iPIlOuYTuZAC4c+yi0siQo920u7eiBJk8oQmUmg9cDUbR4+Gl++bvGP4plj3fErbJuPqdcQ=="], + "volar-service-yaml": ["volar-service-yaml@0.0.71", "", { "dependencies": { "vscode-uri": "^3.0.8", "yaml-language-server": "~1.23.0" }, "peerDependencies": { "@volar/language-service": "~2.4.0" }, "optionalPeers": ["@volar/language-service"] }, "sha512-qYGWGuVpUTnZGu5P/CR4KLK4aIR8RrcVnmfZ2eRcj9q/I8VZCoC5yy9FtEvfNvnDp4MU17yhdJcvpQPIqhJS2Q=="], "vscode-css-languageservice": ["vscode-css-languageservice@6.3.10", "", { "dependencies": { "@vscode/l10n": "^0.0.18", "vscode-languageserver-textdocument": "^1.0.12", "vscode-languageserver-types": "3.17.5", "vscode-uri": "^3.1.0" } }, "sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA=="], @@ -5469,7 +5769,7 @@ "vscode-languageserver": ["vscode-languageserver@9.0.1", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="], - "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="], + "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.18.2", "", { "dependencies": { "vscode-jsonrpc": "9.0.1", "vscode-languageserver-types": "3.18.0" } }, "sha512-XRyDbT0Pp3sSNti3JmxVEUMySWCSi1hhM+/KUlCy1hV1zmrqpM1OwO12EAki8blhmLuIMpaJrYbo0OzGVfK2Qg=="], "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], @@ -5491,7 +5791,7 @@ "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], - "webpack-sources": ["webpack-sources@3.5.0", "", {}, "sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ=="], + "webpack-sources": ["webpack-sources@3.5.1", "", {}, "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw=="], "webpack-virtual-modules": ["webpack-virtual-modules@0.5.0", "", {}, "sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw=="], @@ -5511,9 +5811,9 @@ "which-pm-runs": ["which-pm-runs@1.1.0", "", {}, "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA=="], - "which-typed-array": ["which-typed-array@1.1.21", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.9", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-zbRA8cVm6io/d5W8uIe2hblzN76/Wm3v/yiythQvr+dpBWeqhPSWIDNj4zOyHi4zKbMK6DN34Xsr9jPHJERAEw=="], + "which-typed-array": ["which-typed-array@1.1.22", "", { "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.9", "call-bound": "^1.0.4", "for-each": "^0.3.5", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" } }, "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw=="], - "why-is-node-running": ["why-is-node-running@3.2.2", "", { "bin": { "why-is-node-running": "cli.js" } }, "sha512-NKUzAelcoCXhXL4dJzKIwXeR8iEVqsA0Lq6Vnd0UXvgaKbzVo4ZTHROF2Jidrv+SgxOQ03fMinnNhzZATxOD3A=="], + "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], "widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="], @@ -5533,11 +5833,15 @@ "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], - "wsl-utils": ["wsl-utils@0.3.1", "", { "dependencies": { "is-wsl": "^3.1.0", "powershell-utils": "^0.1.0" } }, "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg=="], + "wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], + + "xdg-app-paths": ["xdg-app-paths@5.5.1", "", { "dependencies": { "os-paths": "^4.0.1", "xdg-portable": "^7.2.0" } }, "sha512-hI3flOB4PLZIy5prbtTpirobtPE2ZtZ52szO+2mM9Efp6ErM398La+C1lIpNWDfNoQk+6Lsi6nMcCwVB7pxeMQ=="], "xdg-basedir": ["xdg-basedir@5.1.0", "", {}, "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ=="], - "xml-naming": ["xml-naming@0.1.0", "", {}, "sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw=="], + "xdg-portable": ["xdg-portable@7.3.0", "", { "dependencies": { "os-paths": "^4.0.1" } }, "sha512-sqMMuL1rc0FmMBOzCpd0yuy9trqF2yTTVe+E9ogwCSWQCdDEtQUwrZPT6AxqtsFGRNxycgncbP/xmOOSPw5ZUw=="], + + "xml-naming": ["xml-naming@0.3.0", "", {}, "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ=="], "xml2js": ["xml2js@0.5.0", "", { "dependencies": { "sax": ">=0.6.0", "xmlbuilder": "~11.0.0" } }, "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA=="], @@ -5553,9 +5857,9 @@ "yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], - "yaml-language-server": ["yaml-language-server@1.20.0", "", { "dependencies": { "@vscode/l10n": "^0.0.18", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "prettier": "^3.5.0", "request-light": "^0.5.7", "vscode-json-languageservice": "4.1.8", "vscode-languageserver": "^9.0.0", "vscode-languageserver-textdocument": "^1.0.1", "vscode-languageserver-types": "^3.16.0", "vscode-uri": "^3.0.2", "yaml": "2.7.1" }, "bin": { "yaml-language-server": "bin/yaml-language-server" } }, "sha512-qhjK/bzSRZ6HtTvgeFvjNPJGWdZ0+x5NREV/9XZWFjIGezew2b4r5JPy66IfOhd5OA7KeFwk1JfmEbnTvev0cA=="], + "yaml-language-server": ["yaml-language-server@1.23.0", "", { "dependencies": { "@vscode/l10n": "^0.0.18", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "ajv-i18n": "^4.2.0", "prettier": "^3.8.1", "request-light": "^0.5.7", "vscode-json-languageservice": "4.1.8", "vscode-languageserver": "^9.0.0", "vscode-languageserver-textdocument": "^1.0.1", "vscode-languageserver-types": "^3.16.0", "vscode-uri": "^3.0.2", "yaml": "2.8.3" }, "bin": { "yaml-language-server": "bin/yaml-language-server" } }, "sha512-3qVyCOexLCWw06PQa5kRPwvMWMZ/eZeCRWUvgD6a0OkqL/4iCnxy2WumbWifa937Uo5xhyWJ0uxlU39ljhNh7A=="], - "yargs": ["yargs@18.0.0", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="], + "yargs": ["yargs@17.7.3", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g=="], "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], @@ -5567,8 +5871,6 @@ "yoctocolors": ["yoctocolors@2.1.2", "", {}, "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug=="], - "yoga-layout": ["yoga-layout@3.2.1", "", {}, "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ=="], - "youch": ["youch@4.1.0-beta.10", "", { "dependencies": { "@poppinss/colors": "^4.1.5", "@poppinss/dumper": "^0.6.4", "@speed-highlight/core": "^1.2.7", "cookie": "^1.0.2", "youch-core": "^0.3.3" } }, "sha512-rLfVLB4FgQneDr0dv1oddCVZmKjcJ6yX6mS4pU82Mq/Dt9a3cLZQ62pDBL4AUO+uVrCvtWz3ZFUL2HFAFJ/BXQ=="], "youch-core": ["youch-core@0.3.3", "", { "dependencies": { "@poppinss/exception": "^1.2.2", "error-stack-parser-es": "^1.0.5" } }, "sha512-ho7XuGjLaJ2hWHoK8yFnsUGy2Y5uDpqSTq1FkHLK4/oqKtyUU1AFbOOxY4IpC9f0fTLjwYbslUz0Po5BpD1wrA=="], @@ -5585,10 +5887,6 @@ "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], - "@actions/artifact/@actions/core": ["@actions/core@2.0.3", "", { "dependencies": { "@actions/exec": "^2.0.0", "@actions/http-client": "^3.0.2" } }, "sha512-Od9Thc3T1mQJYddvVPM4QGiLUewdh+3txmDYHHxoNdkqysR1MbCT+rFOtNUxYAz+7+6RIsqipVahY2GJqGPyxA=="], - - "@actions/core/@actions/http-client": ["@actions/http-client@2.2.3", "", { "dependencies": { "tunnel": "^0.0.6", "undici": "^5.25.4" } }, "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA=="], - "@actions/github/@actions/http-client": ["@actions/http-client@2.2.3", "", { "dependencies": { "tunnel": "^0.0.6", "undici": "^5.25.4" } }, "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA=="], "@actions/github/@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@9.2.2", "", { "dependencies": { "@octokit/types": "^12.6.0" }, "peerDependencies": { "@octokit/core": "5" } }, "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ=="], @@ -5597,7 +5895,7 @@ "@actions/github/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], - "@actions/http-client/undici": ["undici@6.26.0", "", {}, "sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A=="], + "@actions/http-client/undici": ["undici@6.27.0", "", {}, "sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg=="], "@ai-sdk/alibaba/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g=="], @@ -5609,39 +5907,39 @@ "@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], - "@ai-sdk/amazon-bedrock/@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.14", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.14.1", "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw=="], - - "@ai-sdk/amazon-bedrock/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], - "@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], "@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], - "@ai-sdk/azure/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], + "@ai-sdk/azure/@ai-sdk/openai": ["@ai-sdk/openai@3.0.84", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cmgbeJL0bbY0yTJH4/AdmP5E7MjWRL9G8UdhIi0JlV/So03o82ORJofW8OzwCZPTORVQblFbpZXYGDcUd9NdUQ=="], + + "@ai-sdk/azure/@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], + + "@ai-sdk/azure/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.38", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/HHGmtKllqjg1OLc023v9w9kK3laW7Z6TzfZukYQWCsGBbzB9p60zTvvpXFVcs44NZBVXL3viOa1HRKUbeee8g=="], "@ai-sdk/cerebras/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], "@ai-sdk/cohere/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], - "@ai-sdk/deepgram/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/deepgram/@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], - "@ai-sdk/deepgram/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@ai-sdk/deepgram/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.40", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-OL5IrpUm9Y8Dwy+w/vvFwPotS6m52O9W0op2oXgXdCROMJIBalBI0oro6OIBYkPxvm5Xg02GSkoQN25RlR0bnw=="], "@ai-sdk/deepinfra/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], - "@ai-sdk/deepseek/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/deepseek/@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], - "@ai-sdk/deepseek/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@ai-sdk/deepseek/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.38", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/HHGmtKllqjg1OLc023v9w9kK3laW7Z6TzfZukYQWCsGBbzB9p60zTvvpXFVcs44NZBVXL3viOa1HRKUbeee8g=="], - "@ai-sdk/elevenlabs/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/elevenlabs/@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], - "@ai-sdk/elevenlabs/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@ai-sdk/elevenlabs/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.40", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-OL5IrpUm9Y8Dwy+w/vvFwPotS6m52O9W0op2oXgXdCROMJIBalBI0oro6OIBYkPxvm5Xg02GSkoQN25RlR0bnw=="], - "@ai-sdk/fireworks/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.48", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-z9MC6M4Oh/yUY/F/eszOtO8wc2nMz99XmZQKd2gWTtyIfe716xTfrKe3aYZKg20NZDtyjqPPKPSR+wqz7q1T7Q=="], + "@ai-sdk/fireworks/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.62", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.40" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-lRe54zvyIS1a60N8UVhnwKZRI5I+GSV8uhKkPpId+aiKO7z7UgSbNqFmXkBBMD3yc9UrLnQnATV2EQyXNhzEkA=="], - "@ai-sdk/fireworks/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@ai-sdk/fireworks/@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], - "@ai-sdk/fireworks/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@ai-sdk/fireworks/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.40", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-OL5IrpUm9Y8Dwy+w/vvFwPotS6m52O9W0op2oXgXdCROMJIBalBI0oro6OIBYkPxvm5Xg02GSkoQN25RlR0bnw=="], "@ai-sdk/google/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], @@ -5657,7 +5955,9 @@ "@ai-sdk/groq/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], - "@ai-sdk/mistral/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], + "@ai-sdk/mistral/@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], + + "@ai-sdk/mistral/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.40", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-OL5IrpUm9Y8Dwy+w/vvFwPotS6m52O9W0op2oXgXdCROMJIBalBI0oro6OIBYkPxvm5Xg02GSkoQN25RlR0bnw=="], "@ai-sdk/openai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], @@ -5665,71 +5965,89 @@ "@ai-sdk/perplexity/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], - "@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - "@ai-sdk/togetherai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], "@ai-sdk/vercel/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], - "@ai-sdk/xai/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g=="], + "@ai-sdk/xai/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.56", "", { "dependencies": { "@ai-sdk/provider": "3.0.13", "@ai-sdk/provider-utils": "4.0.35" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cQrN6OUn/jvsY3OdsU6Wn+ss7vp1iwIcakZKSlSRMnYqShBfyT7Qht+eqmgxs7w9ttrw6FAG6o11AiBs+iEsTA=="], + + "@ai-sdk/xai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.13", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-ZPtVYt5QIJzOta1kdUiDuCx4HhFkvNPv/rvmZ2b1iXwybYjJsCnNYR4PAw4kW7rgVfDARvHXcU64efWuqNp6bw=="], + + "@ai-sdk/xai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.35", "", { "dependencies": { "@ai-sdk/provider": "3.0.13", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-bjYld/2KGPLt78kpqbya+fD4LYS7BqVQJyUjE3qAHrYB0FR2Q90BaWEVIBZaguTWXf/A8L6uG1zO1v9TxVlGWg=="], + + "@antfu/install-pkg/tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], - "@astrojs/check/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], + "@astrojs/cloudflare/vite": ["vite@6.4.3", "", { "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-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A=="], - "@astrojs/cloudflare/vite": ["vite@6.4.2", "", { "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-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ=="], + "@astrojs/cloudflare/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="], "@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], - "@astrojs/markdown-remark/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "@astrojs/markdown-remark/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], - "@astrojs/markdown-remark/shiki": ["shiki@3.20.0", "", { "dependencies": { "@shikijs/core": "3.20.0", "@shikijs/engine-javascript": "3.20.0", "@shikijs/engine-oniguruma": "3.20.0", "@shikijs/langs": "3.20.0", "@shikijs/themes": "3.20.0", "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg=="], + "@astrojs/markdown-remark/shiki": ["shiki@3.23.0", "", { "dependencies": { "@shikijs/core": "3.23.0", "@shikijs/engine-javascript": "3.23.0", "@shikijs/engine-oniguruma": "3.23.0", "@shikijs/langs": "3.23.0", "@shikijs/themes": "3.23.0", "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA=="], + + "@astrojs/markdown-satteri/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.10.1", "", { "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "js-yaml": "^4.1.1", "picomatch": "^4.0.4", "retext-smartypants": "^6.2.0", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "unified": "^11.0.5" } }, "sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q=="], + + "@astrojs/markdown-satteri/@astrojs/prism": ["@astrojs/prism@4.0.2", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA=="], "@astrojs/mdx/@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.11", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.6", "@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.2.0", "js-yaml": "^4.1.1", "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.21.0", "smol-toml": "^1.6.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "sha512-hcaxX/5aC6lQgHeGh1i+aauvSwIT6cfyFjKWvExYSxUhZZBBdvCliOtu06gbQyhbe0pGJNoNmqNlQZ5zYUuIyQ=="], "@astrojs/mdx/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + "@astrojs/node/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.10.1", "", { "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "js-yaml": "^4.1.1", "picomatch": "^4.0.4", "retext-smartypants": "^6.2.0", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "unified": "^11.0.5" } }, "sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q=="], + + "@astrojs/node/astro": ["astro@7.1.3", "", { "dependencies": { "@astrojs/compiler-rs": "^0.3.1", "@astrojs/internal-helpers": "0.10.1", "@astrojs/markdown-satteri": "0.3.4", "@astrojs/telemetry": "3.3.3", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "am-i-vibing": "^0.4.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "ci-info": "^4.4.0", "clsx": "^2.1.1", "common-ancestor-path": "^2.0.0", "cookie": "^2.0.1", "devalue": "^5.8.1", "diff": "^8.0.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.28.0", "flattie": "^1.1.1", "fontace": "~0.4.1", "get-tsconfig": "5.0.0-beta.4", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", "jsonc-parser": "^3.3.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^1.0.1", "obug": "^2.1.1", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.4", "semver": "^7.7.4", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "svgo": "^4.0.1", "tinyclip": "^0.1.12", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unstorage": "^1.17.5", "vite": "^8.0.13", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", "zod": "^4.3.6" }, "optionalDependencies": { "sharp": "^0.34.0 || ^0.35.0" }, "peerDependencies": { "@astrojs/markdown-remark": "7.2.1" }, "optionalPeers": ["@astrojs/markdown-remark"], "bin": { "astro": "./bin/astro.mjs" } }, "sha512-4dhPyAAXthf3xLEYnG8SeL7yr/nTPPABfY7e9YF0yuO+vK9Xp+8Q5j4xzsmL3GueukQv4oNwGNTBepLOiDGeJA=="], + + "@astrojs/react/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.10.1", "", { "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "js-yaml": "^4.1.1", "picomatch": "^4.0.4", "retext-smartypants": "^6.2.0", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "unified": "^11.0.5" } }, "sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q=="], + + "@astrojs/react/@vitejs/plugin-react": ["@vitejs/plugin-react@5.2.0", "", { "dependencies": { "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-rc.3", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw=="], + + "@astrojs/react/vite": ["vite@8.1.4", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.5", "postcss": "^8.5.16", "rolldown": "~1.1.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ=="], + "@astrojs/sitemap/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@astrojs/solid-js/vite": ["vite@6.4.2", "", { "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-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ=="], + "@astrojs/solid-js/vite": ["vite@6.4.3", "", { "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-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A=="], - "@astrojs/starlight/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "@astrojs/starlight/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], - "@aws-crypto/crc32/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@astrojs/vercel/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.10.1", "", { "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "js-yaml": "^4.1.1", "picomatch": "^4.0.4", "retext-smartypants": "^6.2.0", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "unified": "^11.0.5" } }, "sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q=="], - "@aws-crypto/crc32c/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@astrojs/vercel/@vercel/analytics": ["@vercel/analytics@1.6.1", "", { "peerDependencies": { "@remix-run/react": "^2", "@sveltejs/kit": "^1 || ^2", "next": ">= 13", "react": "^18 || ^19 || ^19.0.0-rc", "svelte": ">= 4", "vue": "^3", "vue-router": "^4" }, "optionalPeers": ["@remix-run/react", "@sveltejs/kit", "next", "react", "svelte", "vue", "vue-router"] }, "sha512-oH9He/bEM+6oKlv3chWuOOcp8Y6fo6/PSro8hEkgCW3pu9/OiCXiUpRUogDh3Fs3LH2sosDrx8CxeOLBEE+afg=="], - "@aws-crypto/sha1-browser/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@astrojs/vercel/astro": ["astro@7.1.3", "", { "dependencies": { "@astrojs/compiler-rs": "^0.3.1", "@astrojs/internal-helpers": "0.10.1", "@astrojs/markdown-satteri": "0.3.4", "@astrojs/telemetry": "3.3.3", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "am-i-vibing": "^0.4.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "ci-info": "^4.4.0", "clsx": "^2.1.1", "common-ancestor-path": "^2.0.0", "cookie": "^2.0.1", "devalue": "^5.8.1", "diff": "^8.0.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.28.0", "flattie": "^1.1.1", "fontace": "~0.4.1", "get-tsconfig": "5.0.0-beta.4", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", "jsonc-parser": "^3.3.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^1.0.1", "obug": "^2.1.1", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.4", "semver": "^7.7.4", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "svgo": "^4.0.1", "tinyclip": "^0.1.12", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unstorage": "^1.17.5", "vite": "^8.0.13", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", "zod": "^4.3.6" }, "optionalDependencies": { "sharp": "^0.34.0 || ^0.35.0" }, "peerDependencies": { "@astrojs/markdown-remark": "7.2.1" }, "optionalPeers": ["@astrojs/markdown-remark"], "bin": { "astro": "./bin/astro.mjs" } }, "sha512-4dhPyAAXthf3xLEYnG8SeL7yr/nTPPABfY7e9YF0yuO+vK9Xp+8Q5j4xzsmL3GueukQv4oNwGNTBepLOiDGeJA=="], - "@aws-crypto/sha1-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=="], + "@astrojs/vercel/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], - "@aws-crypto/sha256-browser/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-crypto/crc32/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@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/crc32c/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-crypto/sha256-js/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-crypto/sha1-browser/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-crypto/util/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-crypto/sha1-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=="], + "@aws-crypto/sha256-browser/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/client-athena/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@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-sdk/client-cognito-identity/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], + "@aws-crypto/sha256-js/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/client-cognito-identity/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.47", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.41", "@aws-sdk/credential-provider-http": "^3.972.43", "@aws-sdk/credential-provider-ini": "^3.972.46", "@aws-sdk/credential-provider-process": "^3.972.41", "@aws-sdk/credential-provider-sso": "^3.972.45", "@aws-sdk/credential-provider-web-identity": "^3.972.45", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/credential-provider-imds": "^4.3.6", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-HrId+C0DWA5qDIyLG64/kjUB2RNtPypxmABnIctK+TA1P1kHlOYoE/Wf5T5tKOMKgb08P7k/zNyhvfJ3lh5Oag=="], + "@aws-crypto/util/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/client-cognito-identity/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@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-firehose/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@aws-sdk/client-cognito-identity/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/client-lambda/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], + "@aws-sdk/client-cognito-identity/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.70", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.59", "@aws-sdk/credential-provider-http": "^3.972.61", "@aws-sdk/credential-provider-ini": "^3.973.4", "@aws-sdk/credential-provider-process": "^3.972.59", "@aws-sdk/credential-provider-sso": "^3.973.3", "@aws-sdk/credential-provider-web-identity": "^3.972.65", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/credential-provider-imds": "^4.4.9", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3xzvkGdykBunxqh8WudmUpSyLWvIhfI6aBQo1b5rb3mDO5mNLadK+0hiI0qBQBMVynJbfLO+Ajy9dztMwy9O8w=="], - "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.47", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.41", "@aws-sdk/credential-provider-http": "^3.972.43", "@aws-sdk/credential-provider-ini": "^3.972.46", "@aws-sdk/credential-provider-process": "^3.972.41", "@aws-sdk/credential-provider-sso": "^3.972.45", "@aws-sdk/credential-provider-web-identity": "^3.972.45", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/credential-provider-imds": "^4.3.6", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-HrId+C0DWA5qDIyLG64/kjUB2RNtPypxmABnIctK+TA1P1kHlOYoE/Wf5T5tKOMKgb08P7k/zNyhvfJ3lh5Oag=="], + "@aws-sdk/client-cognito-identity/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/client-lambda/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/client-lambda/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/client-s3/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@aws-sdk/client-lambda/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.70", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.59", "@aws-sdk/credential-provider-http": "^3.972.61", "@aws-sdk/credential-provider-ini": "^3.973.4", "@aws-sdk/credential-provider-process": "^3.972.59", "@aws-sdk/credential-provider-sso": "^3.973.3", "@aws-sdk/credential-provider-web-identity": "^3.972.65", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/credential-provider-imds": "^4.4.9", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3xzvkGdykBunxqh8WudmUpSyLWvIhfI6aBQo1b5rb3mDO5mNLadK+0hiI0qBQBMVynJbfLO+Ajy9dztMwy9O8w=="], - "@aws-sdk/client-sso/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@aws-sdk/client-lambda/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], "@aws-sdk/client-sts/@aws-sdk/core": ["@aws-sdk/core@3.775.0", "", { "dependencies": { "@aws-sdk/types": "3.775.0", "@smithy/core": "^3.2.0", "@smithy/node-config-provider": "^4.0.2", "@smithy/property-provider": "^4.0.2", "@smithy/protocol-http": "^5.1.0", "@smithy/signature-v4": "^5.0.2", "@smithy/smithy-client": "^4.2.0", "@smithy/types": "^4.2.0", "@smithy/util-middleware": "^4.0.2", "fast-xml-parser": "4.4.1", "tslib": "^2.6.2" } }, "sha512-8vpW4WihVfz0DX+7WnnLGm3GuQER++b0IwQG35JlQMlgqnc44M//KbJPsIHA0aJUJVwJAEShgfr5dUbY8WUzaA=="], @@ -5753,27 +6071,23 @@ "@aws-sdk/client-sts/@aws-sdk/util-user-agent-node": ["@aws-sdk/util-user-agent-node@3.782.0", "", { "dependencies": { "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/types": "3.775.0", "@smithy/node-config-provider": "^4.0.2", "@smithy/types": "^4.2.0", "tslib": "^2.6.2" }, "peerDependencies": { "aws-crt": ">=1.0.0" }, "optionalPeers": ["aws-crt"] }, "sha512-dMFkUBgh2Bxuw8fYZQoH/u3H4afQ12VSkzEi//qFiDTwbKYq+u+RYjc8GLDM6JSK1BShMu5AVR7HD4ap1TYUnA=="], - "@aws-sdk/client-sts/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], - - "@aws-sdk/core/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@aws-sdk/credential-provider-cognito-identity/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/credential-provider-cognito-identity/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/credential-provider-env/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/credential-provider-env/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], + "@aws-sdk/credential-provider-env/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/credential-provider-env/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/credential-provider-http/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/credential-provider-http/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], + "@aws-sdk/credential-provider-http/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/credential-provider-http/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/credential-provider-ini/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/credential-provider-ini/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], + "@aws-sdk/credential-provider-ini/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/credential-provider-ini/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/credential-provider-login/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/credential-provider-login/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], - - "@aws-sdk/credential-provider-login/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/credential-provider-login/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.932.0", "", { "dependencies": { "@aws-sdk/core": "3.932.0", "@aws-sdk/types": "3.930.0", "@smithy/property-provider": "^4.2.5", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-ozge/c7NdHUDyHqro6+P5oHt8wfKSUBN+olttiVfBe9Mw3wBMpPa3gQ0pZnG+gwBkKskBuip2bMR16tqYvUSEA=="], @@ -5787,37 +6101,33 @@ "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.933.0", "", { "dependencies": { "@aws-sdk/core": "3.932.0", "@aws-sdk/nested-clients": "3.933.0", "@aws-sdk/types": "3.930.0", "@smithy/property-provider": "^4.2.5", "@smithy/shared-ini-file-loader": "^4.4.0", "@smithy/types": "^4.9.0", "tslib": "^2.6.2" } }, "sha512-c7Eccw2lhFx2/+qJn3g+uIDWRuWi2A6Sz3PVvckFUEzPsP0dPUo19hlvtarwP5GzrsXn0yEPRVhpewsIaSCGaQ=="], - "@aws-sdk/credential-provider-process/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], - - "@aws-sdk/credential-provider-process/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/credential-provider-process/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/credential-provider-sso/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], + "@aws-sdk/credential-provider-process/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/credential-provider-sso/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/credential-provider-sso/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/credential-provider-web-identity/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], + "@aws-sdk/credential-provider-sso/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/credential-provider-web-identity/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/credential-providers/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], + "@aws-sdk/credential-provider-web-identity/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/credential-providers/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.47", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.41", "@aws-sdk/credential-provider-http": "^3.972.43", "@aws-sdk/credential-provider-ini": "^3.972.46", "@aws-sdk/credential-provider-process": "^3.972.41", "@aws-sdk/credential-provider-sso": "^3.972.45", "@aws-sdk/credential-provider-web-identity": "^3.972.45", "@aws-sdk/types": "^3.973.9", "@smithy/core": "^3.24.5", "@smithy/credential-provider-imds": "^4.3.6", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-HrId+C0DWA5qDIyLG64/kjUB2RNtPypxmABnIctK+TA1P1kHlOYoE/Wf5T5tKOMKgb08P7k/zNyhvfJ3lh5Oag=="], + "@aws-sdk/credential-providers/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/credential-providers/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/credential-providers/@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.70", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.59", "@aws-sdk/credential-provider-http": "^3.972.61", "@aws-sdk/credential-provider-ini": "^3.973.4", "@aws-sdk/credential-provider-process": "^3.972.59", "@aws-sdk/credential-provider-sso": "^3.973.3", "@aws-sdk/credential-provider-web-identity": "^3.972.65", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/credential-provider-imds": "^4.4.9", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3xzvkGdykBunxqh8WudmUpSyLWvIhfI6aBQo1b5rb3mDO5mNLadK+0hiI0qBQBMVynJbfLO+Ajy9dztMwy9O8w=="], - "@aws-sdk/middleware-flexible-checksums/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@aws-sdk/credential-providers/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/middleware-sdk-s3/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@aws-sdk/nested-clients/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/nested-clients/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], + "@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.41", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-QMUytg+FQMGouc8gHS00KoYih3+N6cqmVI/pQGOIo7Nr7OpQaiXjSYOuL+vsPZ1tymY4LAQ8MYcHJmws5LRxng=="], - "@aws-sdk/nested-clients/@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.30", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-HULDLMVzkmTSEv6//7kx2kRevp/VYUpm8hJNNFbmhxDn0fUiGTxVcM9yg31TukvTq8nyOBDUN2gH0o5IRbKjdw=="], + "@aws-sdk/nested-clients/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], - "@aws-sdk/nested-clients/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/token-providers/@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], - "@aws-sdk/token-providers/@aws-sdk/core": ["@aws-sdk/core@3.974.15", "", { "dependencies": { "@aws-sdk/types": "^3.973.9", "@aws-sdk/xml-builder": "^3.972.26", "@aws/lambda-invoke-store": "^0.2.2", "@smithy/core": "^3.24.5", "@smithy/signature-v4": "^5.4.5", "@smithy/types": "^4.14.2", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-UpA0rTGW/tHGITcCqHisbuuEPraYg9GG+mWmXjY5+RxZBMLGe6aL9oe0ix50LztwAcPIkGZLH0yWdMIkCM10hw=="], - - "@aws-sdk/token-providers/@aws-sdk/types": ["@aws-sdk/types@3.973.9", "", { "dependencies": { "@smithy/types": "^4.14.2", "tslib": "^2.6.2" } }, "sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg=="], + "@aws-sdk/token-providers/@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], "@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.2.5", "", { "dependencies": { "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ=="], @@ -5827,7 +6137,7 @@ "@azure/core-http/uuid": ["uuid@8.3.2", "", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="], - "@azure/core-xml/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@azure/core-xml/fast-xml-parser": ["fast-xml-parser@5.10.1", "", { "dependencies": { "@nodable/entities": "^3.0.0", "fast-xml-builder": "^1.2.0", "is-unsafe": "^2.0.0", "path-expression-matcher": "^1.6.2", "strnum": "^2.4.1", "xml-naming": "^0.3.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-IEMIf7298kXuZSRFoGfMYrl7is8LpavODgbNz1cwIudv7KwVFnuU+UsMporfq6PD6aXSlawZlARiA3UywCTfMw=="], "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -5845,8 +6155,6 @@ "@cspotcode/source-map-support/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], - "@develar/schema-utils/ajv": ["ajv@6.15.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw=="], - "@dot/log/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "@electron/asar/commander": ["commander@5.1.0", "", {}, "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg=="], @@ -5859,29 +6167,21 @@ "@electron/fuses/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], - "@electron/get/undici": ["undici@7.26.0", "", {}, "sha512-3O9Tf67pGhgOv9jM35AbhkXAKi13f3oy3aE4CSgr+TckGeY+/iu97ZXN+J7DpHPzLbVApFd1IFhcnBjREYXYcg=="], + "@electron/get/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="], "@electron/notarize/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], "@electron/osx-sign/isbinaryfile": ["isbinaryfile@4.0.10", "", {}, "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw=="], - "@electron/universal/fs-extra": ["fs-extra@11.3.5", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg=="], + "@electron/universal/fs-extra": ["fs-extra@11.3.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g=="], "@electron/universal/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], - "@electron/windows-sign/fs-extra": ["fs-extra@11.3.5", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg=="], + "@electron/windows-sign/fs-extra": ["fs-extra@11.3.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g=="], "@expressive-code/plugin-shiki/shiki": ["shiki@3.23.0", "", { "dependencies": { "@shikijs/core": "3.23.0", "@shikijs/engine-javascript": "3.23.0", "@shikijs/engine-oniguruma": "3.23.0", "@shikijs/langs": "3.23.0", "@shikijs/themes": "3.23.0", "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA=="], - "@fastify/proxy-addr/ipaddr.js": ["ipaddr.js@2.4.0", "", {}, "sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ=="], - - "@hey-api/json-schema-ref-parser/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], - - "@hey-api/openapi-ts/open": ["open@11.0.0", "", { "dependencies": { "default-browser": "^5.4.0", "define-lazy-prop": "^3.0.0", "is-in-ssh": "^1.0.0", "is-inside-container": "^1.0.0", "powershell-utils": "^0.1.0", "wsl-utils": "^0.3.0" } }, "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw=="], - - "@hey-api/openapi-ts/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - - "@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="], + "@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], "@jsx-email/cli/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], @@ -5893,44 +6193,40 @@ "@jsx-email/doiuse-email/htmlparser2": ["htmlparser2@9.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.1.0", "entities": "^4.5.0" } }, "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ=="], + "@kobalte/core/solid-presence": ["solid-presence@0.1.8", "", { "dependencies": { "@corvu/utils": "~0.4.0" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-pWGtXUFWYYUZNbg5YpG5vkQJyOtzn2KXhxYaMx/4I+lylTLYkITOLevaCwMRN+liCVk0pqB6EayLWojNqBFECA=="], + "@malept/flatpak-bundler/fs-extra": ["fs-extra@9.1.0", "", { "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ=="], - "@mdx-js/mdx/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], + "@mapbox/node-pre-gyp/nopt": ["nopt@8.1.0", "", { "dependencies": { "abbrev": "^3.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A=="], - "@modelcontextprotocol/sdk/express": ["express@5.2.1", "", { "dependencies": { "accepts": "^2.0.0", "body-parser": "^2.2.1", "content-disposition": "^1.0.0", "content-type": "^1.0.5", "cookie": "^0.7.1", "cookie-signature": "^1.2.1", "debug": "^4.4.0", "depd": "^2.0.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "finalhandler": "^2.1.0", "fresh": "^2.0.0", "http-errors": "^2.0.0", "merge-descriptors": "^2.0.0", "mime-types": "^3.0.0", "on-finished": "^2.4.1", "once": "^1.4.0", "parseurl": "^1.3.3", "proxy-addr": "^2.0.7", "qs": "^6.14.0", "range-parser": "^1.2.1", "router": "^2.2.0", "send": "^1.1.0", "serve-static": "^2.2.0", "statuses": "^2.0.1", "type-is": "^2.0.1", "vary": "^1.1.2" } }, "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw=="], + "@mdx-js/mdx/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], - "@modelcontextprotocol/sdk/hono": ["hono@4.12.23", "", {}, "sha512-eIaZ9qDgu7XV0pxOCrg7/WhnQ6Ivm22UcxhXx/A3dcbqbbYgBEkc6e/J/s7j2tS96zoB0S9VBdLwQNCWwUo4LA=="], + "@modelcontextprotocol/sdk/hono": ["hono@4.12.30", "", {}, "sha512-emn+JoJjrN9YTpRDS5it/UI2SO9BAE37T6I3d963RxcZ81G9A4pr2SZTEiiaiKbzx+NKRg5BZ89fCL7gCJCUog=="], "@modelcontextprotocol/sdk/jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], - "@modelcontextprotocol/sdk/raw-body": ["raw-body@3.0.2", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.7.0", "unpipe": "~1.0.0" } }, "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA=="], - - "@modelcontextprotocol/sdk/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "@npmcli/config/ini": ["ini@6.0.0", "", {}, "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ=="], "@npmcli/git/ini": ["ini@6.0.0", "", {}, "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ=="], - "@npmcli/query/postcss-selector-parser": ["postcss-selector-parser@7.1.1", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg=="], + "@npmcli/query/postcss-selector-parser": ["postcss-selector-parser@7.1.4", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg=="], - "@octokit/auth-app/@octokit/request": ["@octokit/request@10.0.10", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w=="], + "@octokit/auth-app/@octokit/request": ["@octokit/request@10.0.11", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q=="], "@octokit/auth-app/@octokit/request-error": ["@octokit/request-error@7.1.0", "", { "dependencies": { "@octokit/types": "^16.0.0" } }, "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw=="], - "@octokit/auth-oauth-app/@octokit/request": ["@octokit/request@10.0.10", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w=="], + "@octokit/auth-oauth-app/@octokit/request": ["@octokit/request@10.0.11", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q=="], "@octokit/auth-oauth-app/@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="], - "@octokit/auth-oauth-device/@octokit/request": ["@octokit/request@10.0.10", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w=="], + "@octokit/auth-oauth-device/@octokit/request": ["@octokit/request@10.0.11", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q=="], "@octokit/auth-oauth-device/@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="], - "@octokit/auth-oauth-user/@octokit/request": ["@octokit/request@10.0.10", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w=="], + "@octokit/auth-oauth-user/@octokit/request": ["@octokit/request@10.0.11", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q=="], "@octokit/auth-oauth-user/@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="], - "@octokit/core/@octokit/graphql": ["@octokit/graphql@7.1.1", "", { "dependencies": { "@octokit/request": "^8.4.1", "@octokit/types": "^13.0.0", "universal-user-agent": "^6.0.0" } }, "sha512-3mkDltSfcDUoa176nlGoA32RGjeWjl3K7F/BwHwRMJUW/IteSa4bnSV8p2ThNkcIcZU2umkZWxwETSSCJf2Q7g=="], - "@octokit/core/@octokit/types": ["@octokit/types@13.10.0", "", { "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA=="], "@octokit/core/universal-user-agent": ["universal-user-agent@6.0.1", "", {}, "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ=="], @@ -5939,11 +6235,11 @@ "@octokit/endpoint/universal-user-agent": ["universal-user-agent@6.0.1", "", {}, "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ=="], - "@octokit/graphql/@octokit/request": ["@octokit/request@10.0.10", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w=="], + "@octokit/graphql/@octokit/types": ["@octokit/types@13.10.0", "", { "dependencies": { "@octokit/openapi-types": "^24.2.0" } }, "sha512-ifLaO34EbbPj0Xgro4G5lP5asESjwHracYJvVaPIyXMuiuXLlhic3S47cBdTb+jfODkTE5YtGCLt3Ay3+J97sA=="], - "@octokit/graphql/@octokit/types": ["@octokit/types@15.0.2", "", { "dependencies": { "@octokit/openapi-types": "^26.0.0" } }, "sha512-rR+5VRjhYSer7sC51krfCctQhVTmjyUMAaShfPB8mscVa8tSoLyon3coxQmXu0ahJoLVWl8dSGD/3OGZlFV44Q=="], + "@octokit/graphql/universal-user-agent": ["universal-user-agent@6.0.1", "", {}, "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ=="], - "@octokit/oauth-methods/@octokit/request": ["@octokit/request@10.0.10", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w=="], + "@octokit/oauth-methods/@octokit/request": ["@octokit/request@10.0.11", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q=="], "@octokit/oauth-methods/@octokit/request-error": ["@octokit/request-error@7.1.0", "", { "dependencies": { "@octokit/types": "^16.0.0" } }, "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw=="], @@ -5973,7 +6269,17 @@ "@openauthjs/openauth/jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="], - "@opencode-ai/core/@ai-sdk/openai": ["@ai-sdk/openai@3.0.53", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Wld+Rbc05KaUn08uBt06eEuwcgalcIFtIl32Yp+GxuZXUQwOb6YeAuq+C6da4ch6BurFoqEaLemJVwjBb7x+PQ=="], + "@opencode-ai/app/@opencode-ai/client": ["@opencode-ai/client@vendor/opencode-ai-client-1.17.13.tgz", {}, "sha512-1cYJikTCrXNhnS2qQ3P3rtdbGqhvJKksswG0amJNqgaeUfz3xDlKEDx+YoIosT7Cqk/AtO18jtip0lYL3TVdHQ=="], + + "@opencode-ai/cli/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], + + "@opencode-ai/console-app/@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.7", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.11.0", "@smithy/util-hex-encoding": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-DrpkEoM3j9cBBWhufqBwnbbn+3nf1N9FP6xuVJ+e220jbactKuQgaZwjwP5CP1t+O94brm2JgVMD2atMGX3xIQ=="], + + "@opencode-ai/console-app/@smithy/util-utf8": ["@smithy/util-utf8@4.2.0", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw=="], + + "@opencode-ai/console-mail/@types/react": ["@types/react@18.0.25", "", { "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g=="], + + "@opencode-ai/core/@ai-sdk/openai": ["@ai-sdk/openai@3.0.84", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cmgbeJL0bbY0yTJH4/AdmP5E7MjWRL9G8UdhIi0JlV/So03o82ORJofW8OzwCZPTORVQblFbpZXYGDcUd9NdUQ=="], "@opencode-ai/core/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g=="], @@ -5983,36 +6289,68 @@ "@opencode-ai/desktop/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], - "@opencode-ai/llm/@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.14", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.14.1", "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw=="], - - "@opencode-ai/llm/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@opencode-ai/session-ui/@opencode-ai/client": ["@opencode-ai/client@../app/vendor/opencode-ai-client-1.17.13.tgz", {}, "sha512-1cYJikTCrXNhnS2qQ3P3rtdbGqhvJKksswG0amJNqgaeUfz3xDlKEDx+YoIosT7Cqk/AtO18jtip0lYL3TVdHQ=="], "@opencode-ai/session-ui/@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=="], + "@opencode-ai/storybook/@types/react": ["@types/react@18.0.25", "", { "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", "csstype": "^3.0.2" } }, "sha512-xD6c0KDT4m7n9uD4ZHi02lzskaiqcBxf4zi+tXZY98a04wvc0hi/TcCPC2FOESZi51Nd7tlUeOJY8RofL799/g=="], + "@opencode-ai/ui/@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=="], + "@opencode-ai/updates/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="], + "@opencode-ai/web/@shikijs/transformers": ["@shikijs/transformers@3.20.0", "", { "dependencies": { "@shikijs/core": "3.20.0", "@shikijs/types": "3.20.0" } }, "sha512-PrHHMRr3Q5W1qB/42kJW6laqFyWdhrPF2hNR9qjOm1xcSiAO3hAHo7HaVyHE6pMyevmy3i51O8kuGGXC78uK3g=="], + "@opencode-ai/www/@astrojs/cloudflare": ["@astrojs/cloudflare@14.1.4", "", { "dependencies": { "@astrojs/internal-helpers": "0.10.1", "@astrojs/underscore-redirects": "1.0.3", "@cloudflare/vite-plugin": "^1.39.0", "piccolore": "^0.1.3", "vite": "^8.0.13" }, "peerDependencies": { "astro": "^7.0.0", "wrangler": "^4.83.0" } }, "sha512-Zyo1E/5/dmegmKODbwUzOd67euNd6oKcbllhAwe3uFFprA7mIFNkpF6yBBa78vIkpMNuU13MkBJHCLd+yJSuEA=="], + + "@opencode-ai/www/astro": ["astro@7.1.3", "", { "dependencies": { "@astrojs/compiler-rs": "^0.3.1", "@astrojs/internal-helpers": "0.10.1", "@astrojs/markdown-satteri": "0.3.4", "@astrojs/telemetry": "3.3.3", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "am-i-vibing": "^0.4.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "ci-info": "^4.4.0", "clsx": "^2.1.1", "common-ancestor-path": "^2.0.0", "cookie": "^2.0.1", "devalue": "^5.8.1", "diff": "^8.0.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.28.0", "flattie": "^1.1.1", "fontace": "~0.4.1", "get-tsconfig": "5.0.0-beta.4", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", "jsonc-parser": "^3.3.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^1.0.1", "obug": "^2.1.1", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.4", "semver": "^7.7.4", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "svgo": "^4.0.1", "tinyclip": "^0.1.12", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unstorage": "^1.17.5", "vite": "^8.0.13", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", "zod": "^4.3.6" }, "optionalDependencies": { "sharp": "^0.34.0 || ^0.35.0" }, "peerDependencies": { "@astrojs/markdown-remark": "7.2.1" }, "optionalPeers": ["@astrojs/markdown-remark"], "bin": { "astro": "./bin/astro.mjs" } }, "sha512-4dhPyAAXthf3xLEYnG8SeL7yr/nTPPABfY7e9YF0yuO+vK9Xp+8Q5j4xzsmL3GueukQv4oNwGNTBepLOiDGeJA=="], + + "@opencode-ai/www/wrangler": ["wrangler@4.110.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260708.1", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260708.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260708.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-xZeXKYi7hxQRF5anL+v77RkufJNpF9f3Eqeyqq2QBsETpLZgh0Agj0jJ6JPtkbgn6ukZdh8OK5egsGPWIditgg=="], + "@opentui/core/diff": ["diff@9.0.0", "", {}, "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw=="], + "@opentui/core/marked": ["marked@17.0.1", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-boeBdiS0ghpWcSwoNm/jJBwdpFaMnZWRzjA6SkUMYb40SVaN1x7mmfGKp0jvexGcx+7y2La5zRZsYFZI6Qpypg=="], + "@opentui/solid/@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=="], "@oslojs/jwt/@oslojs/encoding": ["@oslojs/encoding@0.4.1", "", {}, "sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q=="], - "@oxc-resolver/binding-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], + "@oxc-parser/binding-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.9.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA=="], - "@oxc-resolver/binding-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="], + "@oxc-parser/binding-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.9.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw=="], + + "@oxc-resolver/binding-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA=="], + + "@oxc-resolver/binding-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], + + "@parcel/watcher/detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], "@pierre/diffs/@shikijs/transformers": ["@shikijs/transformers@3.20.0", "", { "dependencies": { "@shikijs/core": "3.20.0", "@shikijs/types": "3.20.0" } }, "sha512-PrHHMRr3Q5W1qB/42kJW6laqFyWdhrPF2hNR9qjOm1xcSiAO3hAHo7HaVyHE6pMyevmy3i51O8kuGGXC78uK3g=="], "@pierre/diffs/diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], + "@pierre/diffs/react": ["react@19.2.7", "", {}, "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ=="], + + "@pierre/diffs/react-dom": ["react-dom@19.2.7", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.7" } }, "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ=="], + + "@pierre/trees/react": ["react@19.2.7", "", {}, "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ=="], + + "@pierre/trees/react-dom": ["react-dom@19.2.7", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.7" } }, "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ=="], + + "@poppinss/dumper/@sindresorhus/is": ["@sindresorhus/is@7.2.0", "", {}, "sha512-P1Cz1dWaFfR4IR+U13mqqiGsLFf1KbayybWwdd2vfctdV6hDpUkgCY0nKOLLTMSoRd/jJNjtbqzf13K8DCCXQw=="], + "@poppinss/dumper/supports-color": ["supports-color@10.2.2", "", {}, "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g=="], "@protobuf-ts/plugin/typescript": ["typescript@3.9.10", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q=="], "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + "@scalar/types/nanoid": ["nanoid@5.1.16", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ=="], + + "@scalar/types/type-fest": ["type-fest@5.8.0", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA=="], + + "@scalar/types/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + "@sentry/bundler-plugin-core/glob": ["glob@9.3.5", "", { "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" } }, "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q=="], "@sentry/bundler-plugin-core/magic-string": ["magic-string@0.30.8", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" } }, "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ=="], @@ -6035,43 +6373,55 @@ "@shikijs/themes/@shikijs/types": ["@shikijs/types@4.2.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw=="], + "@shikijs/twoslash/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], + + "@shikijs/twoslash/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], + + "@slack/bolt/express": ["express@4.22.2", "", { "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", "body-parser": "~1.20.5", "content-disposition": "~0.5.4", "content-type": "~1.0.4", "cookie": "~0.7.1", "cookie-signature": "~1.0.6", "debug": "2.6.9", "depd": "2.0.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "~1.3.1", "fresh": "~0.5.2", "http-errors": "~2.0.0", "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "path-to-regexp": "~0.1.12", "proxy-addr": "~2.0.7", "qs": "~6.15.1", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", "send": "~0.19.0", "serve-static": "~1.16.2", "setprototypeof": "1.2.0", "statuses": "~2.0.1", "type-is": "~1.6.18", "utils-merge": "1.0.1", "vary": "~1.1.2" } }, "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q=="], + "@slack/bolt/path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], + "@slack/bolt/raw-body": ["raw-body@2.5.3", "", { "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" } }, "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA=="], + "@slack/oauth/@slack/logger": ["@slack/logger@3.0.0", "", { "dependencies": { "@types/node": ">=12.0.0" } }, "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA=="], "@slack/socket-mode/@slack/logger": ["@slack/logger@3.0.0", "", { "dependencies": { "@types/node": ">=12.0.0" } }, "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA=="], "@slack/socket-mode/@types/ws": ["@types/ws@7.4.7", "", { "dependencies": { "@types/node": "*" } }, "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww=="], - "@slack/socket-mode/ws": ["ws@7.5.11", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA=="], + "@slack/socket-mode/ws": ["ws@7.5.13", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA=="], "@slack/web-api/@slack/logger": ["@slack/logger@3.0.0", "", { "dependencies": { "@types/node": ">=12.0.0" } }, "sha512-DTuBFbqu4gGfajREEMrkq5jBhcnskinhr4+AnfJEk48zhVeEv3XnUKGIX98B74kxhYsIMfApGGySTn7V3b5yBA=="], "@slack/web-api/eventemitter3": ["eventemitter3@3.1.2", "", {}, "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q=="], - "@slack/web-api/form-data": ["form-data@2.5.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.35", "safe-buffer": "^5.2.1" } }, "sha512-jqdObeR2rxZZbPSGL+3VckHMYtu+f9//KXBsVny6JSX/pa38Fy+bGjuG8eW/H6USNQWhLi8Num++cU2yOCNz4A=="], + "@slack/web-api/form-data": ["form-data@2.5.6", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.4", "mime-types": "^2.1.35", "safe-buffer": "^5.2.1" } }, "sha512-Ogz/E85h9tlfJzpI6TuFpGcHZFhLrb9Gw8wq9v40CxSCPnv7ahKr6Xgtkn0KYCDQJ8DNn5VoMO8EXr9V5PadyA=="], "@slack/web-api/p-queue": ["p-queue@6.6.2", "", { "dependencies": { "eventemitter3": "^4.0.4", "p-timeout": "^3.2.0" } }, "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ=="], "@solidjs/start/path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], + "@solidjs/start/seroval": ["seroval@1.5.5", "", {}, "sha512-bSjOuPcwPKLSJNhr9+bZxA20nQxVle5J5MNsYRVE6cIg7KpRLXGupymePavu0jrxlPiPsr4xGZSB8yUY2sH2sw=="], + + "@solidjs/start/seroval-plugins": ["seroval-plugins@1.5.5", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-+BDhqYM6CEn3x09v44dpa9p6974FuUB2dxk+Ctn04k0cO1Zt6QODTXfmEZK0eBaTe/fJBvP4NMGuNJ+R8T+QMg=="], + "@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": ["vite@7.1.10", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "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-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA=="], - "@standard-community/standard-json/effect": ["effect@4.0.0-beta.74", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "fast-check": "^4.8.0", "find-my-way-ts": "^0.1.6", "ini": "^7.0.0", "kubernetes-types": "^1.30.0", "msgpackr": "^2.0.1", "multipasta": "^0.2.7", "toml": "^4.1.1", "uuid": "^14.0.0", "yaml": "^2.9.0" } }, "sha512-Yx+Kh12U+i2FmjwEfKs+ePFmpMd43RPD1oGqc/VraSS9bYzvF0Ff3PojwEFEVEewp8xc92Uxu28gTspU4qyvHA=="], + "@storybook/addon-docs/react": ["react@19.2.7", "", {}, "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ=="], - "@standard-community/standard-openapi/effect": ["effect@4.0.0-beta.74", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "fast-check": "^4.8.0", "find-my-way-ts": "^0.1.6", "ini": "^7.0.0", "kubernetes-types": "^1.30.0", "msgpackr": "^2.0.1", "multipasta": "^0.2.7", "toml": "^4.1.1", "uuid": "^14.0.0", "yaml": "^2.9.0" } }, "sha512-Yx+Kh12U+i2FmjwEfKs+ePFmpMd43RPD1oGqc/VraSS9bYzvF0Ff3PojwEFEVEewp8xc92Uxu28gTspU4qyvHA=="], + "@storybook/addon-docs/react-dom": ["react-dom@19.2.7", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.7" } }, "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ=="], "@storybook/csf-plugin/unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], - "@tailwindcss/oxide/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + "@tailwindcss/node/lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" }, "bundled": true }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], - "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" }, "bundled": true }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], @@ -6079,6 +6429,8 @@ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@tailwindcss/typography/postcss-selector-parser": ["postcss-selector-parser@6.0.10", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w=="], + "@tanstack/directive-functions-plugin/@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=="], "@tanstack/router-utils/diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], @@ -6089,33 +6441,35 @@ "@testing-library/dom/dom-accessibility-api": ["dom-accessibility-api@0.5.16", "", {}, "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg=="], - "@types/plist/xmlbuilder": ["xmlbuilder@15.1.1", "", {}, "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg=="], + "@vercel/cli-config/zod": ["zod@4.1.11", "", {}, "sha512-WPsqwxITS2tzx1bzhIKsEs19ABD5vmCVa4xBo2tq/SrV4RNZtfws1EnCWQXM6yh8bD08a1idvkB5MZSBiZsjwg=="], - "@vitest/coverage-v8/@vitest/utils": ["@vitest/utils@4.1.8", "", { "dependencies": { "@vitest/pretty-format": "4.1.8", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg=="], + "@vercel/cli-exec/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=="], - "@vitest/coverage-v8/magicast": ["magicast@0.5.3", "", { "dependencies": { "@babel/parser": "^7.29.3", "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } }, "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw=="], + "@vercel/functions/@vercel/oidc": ["@vercel/oidc@3.8.0", "", { "dependencies": { "@vercel/cli-config": "0.2.0", "@vercel/cli-exec": "1.0.0", "jose": "^5.9.6" } }, "sha512-r00laGW6Pv778RoR6M2NxX91ycSj+PBwVo+fOb9Bif+F0IyUKt25zrvBzfEzQpeAzbqOgPZyQibEWDdDFApd+A=="], - "@vitest/expect/@vitest/utils": ["@vitest/utils@3.2.4", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA=="], + "@vercel/nft/acorn": ["acorn@8.17.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg=="], - "@vitest/expect/tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="], + "@vercel/nft/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], - "@vitest/mocker/@vitest/spy": ["@vitest/spy@4.1.7", "", {}, "sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q=="], + "@vercel/routing-utils/ajv": ["ajv@6.15.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw=="], - "@vscode/emmet-helper/jsonc-parser": ["jsonc-parser@2.3.1", "", {}, "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg=="], + "@vercel/routing-utils/path-to-regexp": ["path-to-regexp@6.1.0", "", {}, "sha512-h9DqehX3zZZDCEm+xbfU0ZmwCGFCAAraPJWMXJ4+v32NjZJilVg3k1TcKsRgIb8IQ/izZSaydDc1OhJCZvs2Dw=="], + + "@vitejs/plugin-react/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], - "accepts/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + "@vitest/expect/@vitest/utils": ["@vitest/utils@3.2.4", "", { "dependencies": { "@vitest/pretty-format": "3.2.4", "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" } }, "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA=="], - "accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], + "@vitest/expect/tinyrainbow": ["tinyrainbow@2.0.0", "", {}, "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw=="], - "ai-gateway-provider/@ai-sdk/amazon-bedrock": ["@ai-sdk/amazon-bedrock@4.0.107", "", { "dependencies": { "@ai-sdk/anthropic": "3.0.78", "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27", "@smithy/eventstream-codec": "^4.0.1", "@smithy/util-utf8": "^4.0.0", "aws4fetch": "^1.0.20" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-8nT08pGPy25rleJNk56ep00UHK6kCtCmu+ZNqVVSSPDieADlIZqcaN1iRXAFBoCH0Fb9F6C2EjFDaySdsargfQ=="], + "@vitest/mocker/@vitest/spy": ["@vitest/spy@4.1.10", "", {}, "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw=="], - "ai-gateway-provider/@ai-sdk/anthropic": ["@ai-sdk/anthropic@3.0.78", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-0OY12G20cUt6iU6htpEA1491Oz++NVxZxlmWGX4B7rSbeZ5pnDmOu6YtW9BKzdZlNx5Gn23i6WMxyZFoMKNcgA=="], + "@vscode/emmet-helper/jsonc-parser": ["jsonc-parser@2.3.1", "", {}, "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg=="], - "ai-gateway-provider/@ai-sdk/openai": ["@ai-sdk/openai@3.0.53", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Wld+Rbc05KaUn08uBt06eEuwcgalcIFtIl32Yp+GxuZXUQwOb6YeAuq+C6da4ch6BurFoqEaLemJVwjBb7x+PQ=="], + "@vscode/emmet-helper/vscode-languageserver-types": ["vscode-languageserver-types@3.18.0", "", {}, "sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g=="], - "ai-gateway-provider/@openrouter/ai-sdk-provider": ["@openrouter/ai-sdk-provider@2.8.1", "", { "peerDependencies": { "ai": "^6.0.0", "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Y6j3yivgoEUf/kutD/k5GX/mzZfioRFoSx0gbQ+mIOzMaH/vJv1rCkztiuvlLw5xRYQil7oxHUZvmSfXqOx1NQ=="], + "ai-gateway-provider/@ai-sdk/mistral": ["@ai-sdk/mistral@3.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.21" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ZXe7nZQgliDdjz5ufH5RKpHWxbN72AzmzzKGbF/z+0K9GN5tUCnftrQRvTRFHA5jAzTapcm2BEevmGLVbMkW+A=="], - "ajv-keywords/ajv": ["ajv@6.15.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw=="], + "ai-gateway-provider/@ai-sdk/openai": ["@ai-sdk/openai@3.0.84", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@ai-sdk/provider-utils": "4.0.38" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cmgbeJL0bbY0yTJH4/AdmP5E7MjWRL9G8UdhIi0JlV/So03o82ORJofW8OzwCZPTORVQblFbpZXYGDcUd9NdUQ=="], "ansi-align/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=="], @@ -6127,9 +6481,9 @@ "app-builder-lib/hosted-git-info": ["hosted-git-info@4.1.0", "", { "dependencies": { "lru-cache": "^6.0.0" } }, "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA=="], - "app-builder-lib/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "app-builder-lib/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], - "app-builder-lib/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "app-builder-lib/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "app-builder-lib/which": ["which@5.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="], @@ -6137,21 +6491,19 @@ "archiver-utils/is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], - "ast-v8-to-istanbul/js-tokens": ["js-tokens@10.0.0", "", {}, "sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q=="], - "astro/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.6.1", "", {}, "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A=="], "astro/common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="], "astro/diff": ["diff@5.2.2", "", {}, "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A=="], - "astro/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "astro/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], - "astro/shiki": ["shiki@3.20.0", "", { "dependencies": { "@shikijs/core": "3.20.0", "@shikijs/engine-javascript": "3.20.0", "@shikijs/engine-oniguruma": "3.20.0", "@shikijs/langs": "3.20.0", "@shikijs/themes": "3.20.0", "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg=="], + "astro/shiki": ["shiki@3.23.0", "", { "dependencies": { "@shikijs/core": "3.23.0", "@shikijs/engine-javascript": "3.23.0", "@shikijs/engine-oniguruma": "3.23.0", "@shikijs/langs": "3.23.0", "@shikijs/themes": "3.23.0", "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA=="], "astro/unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "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 || ^7 || ^8", "@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 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "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-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="], - "astro/vite": ["vite@6.4.2", "", { "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-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ=="], + "astro/vite": ["vite@6.4.3", "", { "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-NTKlcQjlAK7MlQoyb6LgaqHc8sso/pVyUJYWMws3jg21uTJw/LddqIFPcPqP6PzpgbIcZyKI85sFE4HBrQDA8A=="], "astro/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], @@ -6161,17 +6513,53 @@ "babel-plugin-module-resolver/glob": ["glob@9.3.5", "", { "dependencies": { "fs.realpath": "^1.0.0", "minimatch": "^8.0.2", "minipass": "^4.2.4", "path-scurry": "^1.6.1" } }, "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q=="], - "body-parser/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + "blume/@astrojs/mdx": ["@astrojs/mdx@7.0.3", "", { "dependencies": { "@astrojs/internal-helpers": "0.10.1", "@astrojs/markdown-remark": "7.2.1", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.16.0", "es-module-lexer": "^2.0.0", "estree-util-visit": "^2.0.0", "hast-util-to-html": "^9.0.5", "piccolore": "^0.1.3", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", "source-map": "^0.7.6", "unist-util-visit": "^5.1.0", "vfile": "^6.0.3" }, "peerDependencies": { "@astrojs/markdown-satteri": "^0.3.1", "astro": "^7.0.0" }, "optionalPeers": ["@astrojs/markdown-satteri"] }, "sha512-RxyIwU0uFam5ftwqKOjpIdhnFxZ/kEikeimLyQy3eGXbHT8WgRGzzesOIHVU8+m9TY8ag5WVOyvV24/GyqPdPQ=="], + + "blume/@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], + + "blume/@pierre/diffs": ["@pierre/diffs@1.2.12", "", { "dependencies": { "@pierre/theme": "1.1.0", "@pierre/theming": "0.0.2", "@shikijs/transformers": "^3.0.0 || ^4.0.0", "diff": "9.0.0", "hast-util-to-html": "9.0.5", "lru_map": "0.4.1", "shiki": "^3.0.0 || ^4.0.0" }, "peerDependencies": { "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0" } }, "sha512-pY/gmgWL03WnagqCyCnBi3QtRXUv4hCIY6FYqd5b1ZGaoI6a4Bsji8j+yRl2RfzPh/8Hf19rCl1GE80G6a1cLQ=="], + + "blume/@shikijs/transformers": ["@shikijs/transformers@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/types": "4.3.1" } }, "sha512-z6ir0bGDgWcF2FduktEfPgIsdOtIlDiLAjFBgBzE42Q9xHbkkIXZtORHzlLVB71iZP9elEcqKg6keajvOUwE2A=="], + + "blume/@tailwindcss/vite": ["@tailwindcss/vite@4.3.2", "", { "dependencies": { "@tailwindcss/node": "4.3.2", "@tailwindcss/oxide": "4.3.2", "tailwindcss": "4.3.2" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7 || ^8" } }, "sha512-eHpMeX4JXfVNJDEcsouTeCBubJBTcTLigeaw/NTUW6PB5ATKKXdyonnXgTBX2VuRbjz1hjfz6C5XAhr52ImQXA=="], + + "blume/ai": ["ai@5.0.216", "", { "dependencies": { "@ai-sdk/gateway": "2.0.115", "@ai-sdk/provider": "2.0.3", "@ai-sdk/provider-utils": "3.0.30", "@opentelemetry/api": "1.9.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-W1QgTQS/2itHasAjqx0CVWfRojmnu1V4tJbqaHJf5hXckAZa9IrPDS9VNWBSgZjBhBE9//5M+D4FKdvAGcQBEw=="], + + "blume/astro": ["astro@7.1.3", "", { "dependencies": { "@astrojs/compiler-rs": "^0.3.1", "@astrojs/internal-helpers": "0.10.1", "@astrojs/markdown-satteri": "0.3.4", "@astrojs/telemetry": "3.3.3", "@capsizecss/unpack": "^4.0.0", "@clack/prompts": "^1.1.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "am-i-vibing": "^0.4.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "ci-info": "^4.4.0", "clsx": "^2.1.1", "common-ancestor-path": "^2.0.0", "cookie": "^2.0.1", "devalue": "^5.8.1", "diff": "^8.0.3", "dset": "^3.1.4", "es-module-lexer": "^2.0.0", "esbuild": "^0.28.0", "flattie": "^1.1.1", "fontace": "~0.4.1", "get-tsconfig": "5.0.0-beta.4", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "js-yaml": "^4.1.1", "jsonc-parser": "^3.3.1", "magic-string": "^0.30.21", "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^1.0.1", "obug": "^2.1.1", "p-limit": "^7.3.0", "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.4", "semver": "^7.7.4", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "svgo": "^4.0.1", "tinyclip": "^0.1.12", "tinyexec": "^1.0.4", "tinyglobby": "^0.2.15", "ultrahtml": "^1.6.0", "unifont": "~0.7.4", "unstorage": "^1.17.5", "vite": "^8.0.13", "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", "yargs-parser": "^22.0.0", "zod": "^4.3.6" }, "optionalDependencies": { "sharp": "^0.34.0 || ^0.35.0" }, "peerDependencies": { "@astrojs/markdown-remark": "7.2.1" }, "optionalPeers": ["@astrojs/markdown-remark"], "bin": { "astro": "./bin/astro.mjs" } }, "sha512-4dhPyAAXthf3xLEYnG8SeL7yr/nTPPABfY7e9YF0yuO+vK9Xp+8Q5j4xzsmL3GueukQv4oNwGNTBepLOiDGeJA=="], + + "blume/dompurify": ["dompurify@3.4.12", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-zQvGet8Z2sWbQhCmfFz/T5QWH2oBmjnqK3qvOjaqaNLrLEF912WamU+ohnTp0TCep/MFVHpdJuCZEdFOdTnEFg=="], + + "blume/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], + + "blume/katex": ["katex@0.17.0", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-Vdw0ATsQ9V+LuegM/BTwQqV/6cTl5lbGcIrU+BCgLxyf6bo38ybOr372tuSIxir3CN720flu1meYR6XzNMwQnw=="], + + "blume/marked": ["marked@18.0.7", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-iDVQ5ldaiKXn6b2JroX5kgRfmwgqolW7NpaEzTl1k/2Zh1njIEN9yniyLV/mOvWwtsE8OGgkjsCYvijuPk1dtA=="], - "body-parser/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + "blume/node-html-parser": ["node-html-parser@9.0.0", "", { "dependencies": { "css-select": "^5.1.0", "entities": "^8.0.0" } }, "sha512-MhdaHPyxnyYu/sf0TpiRvDnTrkum0UKHC7FdbDGIUQNlx3I7xzwXoyV0eMUMv/XU+lkJT1glOUzpDPq7b2p1Ew=="], + + "blume/react": ["react@19.2.7", "", {}, "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ=="], + + "blume/react-dom": ["react-dom@19.2.7", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.7" } }, "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ=="], + + "blume/shiki": ["shiki@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/engine-javascript": "4.3.1", "@shikijs/engine-oniguruma": "4.3.1", "@shikijs/langs": "4.3.1", "@shikijs/themes": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw=="], + + "blume/tailwindcss": ["tailwindcss@4.3.2", "", {}, "sha512-WtctNNSH8A9jlMIqxzuYumOHU5uGZyRv0Q5svQl+oEPy5w84YpBxdb7MdqyiSPQge5jTJ6zFQLq0PFygdccSBA=="], + + "blume/typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="], + + "blume/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], + + "body-parser/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], "builder-util/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "builder-util/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "builder-util/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], + + "cliui/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=="], - "c12/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], + "cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], - "c12/dotenv": ["dotenv@17.4.2", "", {}, "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw=="], + "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=="], "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="], @@ -6183,17 +6571,25 @@ "config-chain/ini": ["ini@1.3.8", "", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="], - "crc/buffer": ["buffer@5.7.1", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="], - "cross-spawn/which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], + + "cytoscape-fcose/cose-base": ["cose-base@2.2.0", "", { "dependencies": { "layout-base": "^2.0.0" } }, "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g=="], + + "d3-dsv/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], + + "d3-dsv/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + + "d3-sankey/d3-array": ["d3-array@2.12.1", "", { "dependencies": { "internmap": "^1.0.0" } }, "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ=="], + + "d3-sankey/d3-shape": ["d3-shape@1.3.7", "", { "dependencies": { "d3-path": "1" } }, "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw=="], + "dir-compare/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], "dir-compare/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], - "dmg-builder/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], - - "dmg-license/ajv": ["ajv@6.15.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw=="], + "dmg-builder/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], @@ -6205,31 +6601,31 @@ "editorconfig/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], - "effect/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - "electron-builder/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], - "electron-builder/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], - - "electron-builder-squirrel-windows/app-builder-lib": ["app-builder-lib@26.8.1", "", { "dependencies": { "@develar/schema-utils": "~2.6.5", "@electron/asar": "3.4.1", "@electron/fuses": "^1.8.0", "@electron/get": "^3.0.0", "@electron/notarize": "2.5.0", "@electron/osx-sign": "1.3.3", "@electron/rebuild": "^4.0.3", "@electron/universal": "2.0.3", "@malept/flatpak-bundler": "^0.4.0", "@types/fs-extra": "9.0.13", "async-exit-hook": "^2.0.1", "builder-util": "26.8.1", "builder-util-runtime": "9.5.1", "chromium-pickle-js": "^0.2.0", "ci-info": "4.3.1", "debug": "^4.3.4", "dotenv": "^16.4.5", "dotenv-expand": "^11.0.6", "ejs": "^3.1.8", "electron-publish": "26.8.1", "fs-extra": "^10.1.0", "hosted-git-info": "^4.1.0", "isbinaryfile": "^5.0.0", "jiti": "^2.4.2", "js-yaml": "^4.1.0", "json5": "^2.2.3", "lazy-val": "^1.0.5", "minimatch": "^10.0.3", "plist": "3.1.0", "proper-lockfile": "^4.1.2", "resedit": "^1.7.0", "semver": "~7.7.3", "tar": "^7.5.7", "temp-file": "^3.4.0", "tiny-async-pool": "1.3.0", "which": "^5.0.0" }, "peerDependencies": { "dmg-builder": "26.8.1", "electron-builder-squirrel-windows": "26.8.1" } }, "sha512-p0Im/Dx5C4tmz8QEE1Yn4MkuPC8PrnlRneMhWJj7BBXQfNTJUshM/bp3lusdEsDbvvfJZpXWnYesgSLvwtM2Zw=="], - - "electron-builder-squirrel-windows/builder-util": ["builder-util@26.8.1", "", { "dependencies": { "7zip-bin": "~5.2.0", "@types/debug": "^4.1.6", "app-builder-bin": "5.0.0-alpha.12", "builder-util-runtime": "9.5.1", "chalk": "^4.1.2", "cross-spawn": "^7.0.6", "debug": "^4.3.4", "fs-extra": "^10.1.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "js-yaml": "^4.1.0", "sanitize-filename": "^1.6.3", "source-map-support": "^0.5.19", "stat-mode": "^1.0.0", "temp-file": "^3.4.0", "tiny-async-pool": "1.3.0" } }, "sha512-pm1lTYbGyc90DHgCDO7eo8Rl4EqKLciayNbZqGziqnH9jrlKe8ZANGdityLZU+pJh16dfzjAx2xQq9McuIPEtw=="], - "electron-publish/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "electron-publish/mime": ["mime@2.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="], - "electron-store/type-fest": ["type-fest@5.7.0", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg=="], + "electron-store/type-fest": ["type-fest@5.8.0", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA=="], - "electron-updater/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "electron-updater/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], - "electron-updater/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "electron-updater/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "electron-winstaller/fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], - "encoding/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + "epub-gen-memory/css-select": ["css-select@4.3.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", "domhandler": "^4.3.1", "domutils": "^2.8.0", "nth-check": "^2.0.1" } }, "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ=="], + + "epub-gen-memory/dom-serializer": ["dom-serializer@1.4.1", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", "entities": "^2.0.0" } }, "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag=="], + + "epub-gen-memory/domhandler": ["domhandler@4.3.1", "", { "dependencies": { "domelementtype": "^2.2.0" } }, "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ=="], + + "epub-gen-memory/domutils": ["domutils@2.8.0", "", { "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", "domhandler": "^4.2.0" } }, "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A=="], + + "epub-gen-memory/htmlparser2": ["htmlparser2@7.2.0", "", { "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.2", "domutils": "^2.8.0", "entities": "^3.0.1" } }, "sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog=="], - "engine.io-client/ws": ["ws@8.20.1", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w=="], + "epub-gen-memory/mime": ["mime@2.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="], "esbuild-plugin-copy/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], @@ -6243,58 +6639,50 @@ "express/cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], - "express/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - - "express/path-to-regexp": ["path-to-regexp@0.1.13", "", {}, "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA=="], - "fetch-blob/web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], "filelist/minimatch": ["minimatch@5.1.9", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw=="], - "finalhandler/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - "form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], "fs-extra/jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], "gaxios/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], - "gitlab-ai-provider/openai": ["openai@6.39.1", "", { "peerDependencies": { "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["ws", "zod"], "bin": { "openai": "bin/cli" } }, "sha512-z3dO9fEWOXBzlXynVb/xZ/tujzUjFWQWn3C0n0mw6Vo0zJTbEkaN4b2cLWjhJ6haJQx8LlREoafHRl+Gu/Hl+A=="], + "gcp-metadata/gaxios": ["gaxios@7.1.3", "", { "dependencies": { "extend": "^3.0.2", "https-proxy-agent": "^7.0.1", "node-fetch": "^3.3.2", "rimraf": "^5.0.1" } }, "sha512-YGGyuEdVIjqxkxVH1pUTMY/XtmmsApXrCVv5EU25iX6inEPbV+VakJfLealkBtJN69AQmh1eGOdCl9Sm1UP6XQ=="], + + "gcp-metadata/google-logging-utils": ["google-logging-utils@1.1.3", "", {}, "sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA=="], + + "gitlab-ai-provider/openai": ["openai@6.48.0", "", { "peerDependencies": { "@aws-sdk/credential-provider-node": ">=3.972.0 <4", "@smithy/hash-node": ">=4.3.0 <5", "@smithy/signature-v4": ">=5.4.0 <6", "ws": "^8.18.0", "zod": "^3.25 || ^4.0" }, "optionalPeers": ["@aws-sdk/credential-provider-node", "@smithy/hash-node", "@smithy/signature-v4", "ws", "zod"] }, "sha512-KhVp+FyV50QrXNextvL9hIU5l6ox5HYuKQjGVk7lIqprgJol90+dQXWONV6S1lRWsKA1bXjrow8RsUT14M1hNA=="], "gitlab-ai-provider/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], "globby/ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], - "got/@sindresorhus/is": ["@sindresorhus/is@4.6.0", "", {}, "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw=="], - "html-minifier-terser/commander": ["commander@10.0.1", "", {}, "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug=="], "html-minifier-terser/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], "htmlparser2/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], - "iconv-corefoundation/cli-truncate": ["cli-truncate@2.1.0", "", { "dependencies": { "slice-ansi": "^3.0.0", "string-width": "^4.2.0" } }, "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg=="], + "js-beautify/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], - "iconv-corefoundation/node-addon-api": ["node-addon-api@1.7.2", "", {}, "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg=="], + "js-beautify/nopt": ["nopt@7.2.1", "", { "dependencies": { "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w=="], - "istanbul-reports/html-escaper": ["html-escaper@2.0.2", "", {}, "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg=="], - - "js-beautify/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], - - "js-beautify/nopt": ["nopt@7.2.1", "", { "dependencies": { "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" } }, "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w=="], - - "katex/commander": ["commander@8.3.0", "", {}, "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww=="], + "jszip/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=="], "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=="], - "light-my-request/process-warning": ["process-warning@4.0.1", "", {}, "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q=="], - - "lightningcss/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], - "matcher/escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], "md-to-react-email/marked": ["marked@7.0.4", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-t8eP0dXRJMtMvBojtkcsA7n48BkauktUKzfkPSCq85ZMTJ0v76Rke4DYz01omYpPTUh4p/f7HePgRo3ebG8+QQ=="], + "mermaid/dompurify": ["dompurify@3.4.12", "", { "optionalDependencies": { "@types/trusted-types": "^2.0.7" } }, "sha512-zQvGet8Z2sWbQhCmfFz/T5QWH2oBmjnqK3qvOjaqaNLrLEF912WamU+ohnTp0TCep/MFVHpdJuCZEdFOdTnEFg=="], + + "mermaid/katex": ["katex@0.16.47", "", { "dependencies": { "commander": "^8.3.0" }, "bin": { "katex": "cli.js" } }, "sha512-Eeo8Ys1doU1z+x8AZsPpQu+p/QcZBI5PeOo7QGQdy2x2m0MU/hYagBbGOmXwr5KVbEfVuWv9LpnQWeehogurjg=="], + + "mermaid/marked": ["marked@16.4.2", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA=="], + "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], "miniflare/acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], @@ -6309,38 +6697,26 @@ "minipass-pipeline/minipass": ["minipass@3.3.6", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw=="], - "motion/framer-motion": ["framer-motion@12.40.0", "", { "dependencies": { "motion-dom": "^12.40.0", "motion-utils": "^12.39.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-uaBd3qC1v3KQqBEjwTUd183K6PbS+j0yR9w9VmEOLWA/tnUcSn8Xa3uck7t4dgpDoUss8xQTcj8W2L07lrnLFg=="], + "motion/framer-motion": ["framer-motion@12.42.2", "", { "dependencies": { "motion-dom": "^12.42.2", "motion-utils": "^12.39.0", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-5XY9luDiu0oHfHBjpDthFMh0ES+122w6p/papSJBweMkO8Sn+PW2QaEgRblQBpWFnuvZS5qvarpt/hO2pjGmnw=="], "nitro/h3": ["h3@2.0.1-rc.5", "", { "dependencies": { "rou3": "^0.7.9", "srvx": "^0.9.1" }, "peerDependencies": { "crossws": "^0.4.1" }, "optionalPeers": ["crossws"] }, "sha512-qkohAzCab0nLzXNm78tBjZDvtKMTmtygS8BJLT3VPczAQofdqlFXDPkXdLMJN4r05+xqneG8snZJ0HgkERCZTg=="], - "nitro/undici": ["undici@7.26.0", "", {}, "sha512-3O9Tf67pGhgOv9jM35AbhkXAKi13f3oy3aE4CSgr+TckGeY+/iu97ZXN+J7DpHPzLbVApFd1IFhcnBjREYXYcg=="], + "nitro/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="], "node-gyp/env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], - "node-gyp/undici": ["undici@6.26.0", "", {}, "sha512-4yqz8a3n5HmGTlsbADNtr/dJlhkh/55Rq798G6ibiULcXbDtaLpTl1pvdqcbFfeoj3iSi52lePFM7h9H21cw/A=="], - - "node-gyp-build-optional-packages/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + "node-gyp/undici": ["undici@6.27.0", "", {}, "sha512-YmfV3YnEDzXRC5lZ2jWtWWHKGUm1zIt8AhesR1tens+HTNv+YZlN/dp6G727LOvMJ8xjP9Be7Y2Sdr96LDm+pg=="], "npm-run-path/path-key": ["path-key@4.0.0", "", {}, "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ=="], - "nypm/citty": ["citty@0.2.2", "", {}, "sha512-+6vJA3L98yv+IdfKGZHBNiGW5KHn22e/JwID0Strsz8h4S/csAu/OuICwxrg44k5MRiZHWIo8XXuJgQTriRP4w=="], - - "nypm/tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], - - "opencode/@ai-sdk/openai": ["@ai-sdk/openai@3.0.53", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Wld+Rbc05KaUn08uBt06eEuwcgalcIFtIl32Yp+GxuZXUQwOb6YeAuq+C6da4ch6BurFoqEaLemJVwjBb7x+PQ=="], - - "opencode/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.41", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@ai-sdk/provider-utils": "4.0.23" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-kNAGINk71AlOXx10Dq/PXw4t/9XjdK8uxfpVElRwtSFMdeSiLVt58p9TPx4/FJD+hxZuVhvxYj9r42osxWq79g=="], - - "opencode/@solid-primitives/scheduled": ["@solid-primitives/scheduled@1.5.2", "", { "peerDependencies": { "solid-js": "^1.6.12" } }, "sha512-/j2igE0xyNaHhj6kMfcUQn5rAVSTLbAX+CDEBm25hSNBmNiHLu2lM7Usj2kJJ5j36D67bE8wR1hBNA8hjtvsQA=="], - - "opencode/minimatch": ["minimatch@10.0.3", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw=="], - - "opencode-gitlab-auth/open": ["open@10.2.0", "", { "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", "wsl-utils": "^0.1.0" } }, "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA=="], - "openid-client/jose": ["jose@4.15.9", "", {}, "sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA=="], "openid-client/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], + "ow/dot-prop": ["dot-prop@6.0.1", "", { "dependencies": { "is-obj": "^2.0.0" } }, "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA=="], + + "oxc-parser/@oxc-project/types": ["@oxc-project/types@0.127.0", "", {}, "sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ=="], + "p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], "p-retry/retry": ["retry@0.13.1", "", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="], @@ -6375,24 +6751,16 @@ "proper-lockfile/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - "raw-body/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], - "readdir-glob/minimatch": ["minimatch@5.1.9", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw=="], - "rimraf/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], + "rimraf/glob": ["glob@10.5.0", "", { "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", "minimatch": "^9.0.4", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg=="], "roarr/sprintf-js": ["sprintf-js@1.1.3", "", {}, "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA=="], "router/path-to-regexp": ["path-to-regexp@8.4.2", "", {}, "sha512-qRcuIdP69NPm4qbACK+aDogI5CBDMi1jKe0ry5rSQJz8JVLsC7jV8XpiJjGRLLol3N+R5ihGYcrPLTno6pAdBA=="], - "send/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], - - "send/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], - "serialize-error/type-fest": ["type-fest@0.13.1", "", {}, "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg=="], - "sharp/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], - "shiki/@shikijs/core": ["@shikijs/core@4.2.0", "", { "dependencies": { "@shikijs/primitive": "4.2.0", "@shikijs/types": "4.2.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-Hc87Ab1Ld/vEbZRCbwx344I5v+4RU8CVToUTRkqXL1+TjbuOp9U5Xa0M23V4GEWHxVn+yO5otb+HkQVm3ptWQQ=="], "shiki/@shikijs/types": ["@shikijs/types@4.2.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw=="], @@ -6401,6 +6769,8 @@ "slice-ansi/is-fullwidth-code-point": ["is-fullwidth-code-point@4.0.0", "", {}, "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ=="], + "solid-transition-size/@corvu/utils": ["@corvu/utils@0.3.2", "", { "dependencies": { "@floating-ui/dom": "^1.6.7" }, "peerDependencies": { "solid-js": "^1.8" } }, "sha512-ZWlyWEE8qV9+CB9OAyo2bTrZGXQN9ZeM+JfYv89zoR+lRACKTDuoOZEdiyL8Uc7U5dUSH1uTqKhTTnaHWb+wZA=="], + "sort-keys/is-plain-obj": ["is-plain-obj@1.1.0", "", {}, "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg=="], "sst/aws4fetch": ["aws4fetch@1.0.18", "", {}, "sha512-3Cf+YaUl07p24MoQ46rFwulAmiyCwH2+1zw1ZyPAX5OtJ34Hh185DwB8y/qRLb6cYYYtSFJ9pthyLc0MD4e8sQ=="], @@ -6417,23 +6787,25 @@ "sucrase/commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], + "svgo/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], + "tar/yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], - "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], + "temp/rimraf": ["rimraf@2.6.3", "", { "dependencies": { "glob": "^7.1.3" }, "bin": { "rimraf": "./bin.js" } }, "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA=="], - "thread-stream/real-require": ["real-require@1.0.0", "", {}, "sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g=="], + "terser/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], "tiny-async-pool/semver": ["semver@5.7.2", "", { "bin": { "semver": "bin/semver" } }, "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g=="], "topojson-client/commander": ["commander@2.20.3", "", {}, "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ=="], - "tree-sitter-bash/node-addon-api": ["node-addon-api@8.8.0", "", {}, "sha512-c5Ko1fZJIJmzhFIkhRN76WTq+fC6tWnGy9CXA0fA+XygsWZmEwG8vmbkNqxMyoaa0Tin4djul49NzdVcJJcjeA=="], - "tw-to-css/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], "tw-to-css/tailwindcss": ["tailwindcss@3.3.2", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.5.3", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.2.12", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.18.2", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.0.0", "postcss": "^8.4.23", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.1", "postcss-nested": "^6.0.1", "postcss-selector-parser": "^6.0.11", "postcss-value-parser": "^4.2.0", "resolve": "^1.22.2", "sucrase": "^3.32.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w=="], - "type-is/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + "type-is/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + + "unicode-trie/pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], "unifont/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], @@ -6441,31 +6813,33 @@ "unused-filename/path-exists": ["path-exists@5.0.0", "", {}, "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ=="], - "unzipper/fs-extra": ["fs-extra@11.3.5", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg=="], + "unzipper/fs-extra": ["fs-extra@11.3.1", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-eXvGGwZ5CL17ZSwHWd3bbgk7UUpF6IFHtP57NYYakPvHOs8GDgDe5KJI36jIJzDkJ6eJjuzRA8eBQb6SkKue0g=="], - "venice-ai-sdk-provider/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.47", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@ai-sdk/provider-utils": "4.0.27" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-Enm5UlL0zUCrW3792opk5h7hRWxZOZzDe6eQYVFqX9LUOGGCe1h8MZWAGim765nwzgnjlpeYOsuzZmLtRsTPlg=="], + "venice-ai-sdk-provider/@ai-sdk/openai-compatible": ["@ai-sdk/openai-compatible@2.0.56", "", { "dependencies": { "@ai-sdk/provider": "3.0.13", "@ai-sdk/provider-utils": "4.0.35" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-cQrN6OUn/jvsY3OdsU6Wn+ss7vp1iwIcakZKSlSRMnYqShBfyT7Qht+eqmgxs7w9ttrw6FAG6o11AiBs+iEsTA=="], - "venice-ai-sdk-provider/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "venice-ai-sdk-provider/@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], - "venice-ai-sdk-provider/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], - - "verror/core-util-is": ["core-util-is@1.0.2", "", {}, "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ=="], + "venice-ai-sdk-provider/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.38", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/HHGmtKllqjg1OLc023v9w9kK3laW7Z6TzfZukYQWCsGBbzB9p60zTvvpXFVcs44NZBVXL3viOa1HRKUbeee8g=="], "vite-plugin-icons-spritesheet/glob": ["glob@11.1.0", "", { "dependencies": { "foreground-child": "^3.3.1", "jackspeak": "^4.1.1", "minimatch": "^10.1.1", "minipass": "^7.1.2", "package-json-from-dist": "^1.0.0", "path-scurry": "^2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw=="], - "vitest/@vitest/expect": ["@vitest/expect@4.1.7", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.7", "@vitest/utils": "4.1.7", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-1R+tw0ortHEbZDGMymm+pN7/AFQ/RkFFdtd7EN+VBpynKmLbP8A3rpEXdshBJ7+8hQ9zBJh/i1s0yKNtxAnU7w=="], + "vitest/@vitest/expect": ["@vitest/expect@4.1.10", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.10", "@vitest/utils": "4.1.10", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA=="], - "vitest/@vitest/spy": ["@vitest/spy@4.1.7", "", {}, "sha512-kbkI5LMWakyuTIvs6fUJ5qdIVb1XVKsYJAT4OJ938cHMROYMSfmoQdZy0aaAnjbbc8F61vkoTqz/Az+/HiIu5Q=="], + "vitest/@vitest/spy": ["@vitest/spy@4.1.10", "", {}, "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw=="], - "vitest/es-module-lexer": ["es-module-lexer@2.1.0", "", {}, "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ=="], + "vitest/es-module-lexer": ["es-module-lexer@2.3.1", "", {}, "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA=="], "vitest/tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], - "vitest/vite": ["vite@7.1.10", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "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-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA=="], + "vitest/vite": ["vite@8.1.4", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.5", "postcss": "^8.5.16", "rolldown": "~1.1.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ=="], + + "vscode-json-languageservice/vscode-languageserver-types": ["vscode-languageserver-types@3.18.0", "", {}, "sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g=="], - "vitest/why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], + "vscode-languageserver/vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="], - "vscode-languageserver-protocol/vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], + "vscode-languageserver-protocol/vscode-jsonrpc": ["vscode-jsonrpc@9.0.1", "", {}, "sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw=="], + + "vscode-languageserver-protocol/vscode-languageserver-types": ["vscode-languageserver-types@3.18.0", "", {}, "sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g=="], "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=="], @@ -6475,99 +6849,231 @@ "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "yaml-language-server/prettier": ["prettier@3.9.5", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg=="], + "yaml-language-server/request-light": ["request-light@0.5.8", "", {}, "sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg=="], - "yaml-language-server/yaml": ["yaml@2.7.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ=="], + "yaml-language-server/vscode-languageserver-types": ["vscode-languageserver-types@3.18.0", "", {}, "sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g=="], - "yargs/yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], + "yaml-language-server/yaml": ["yaml@2.8.3", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg=="], + + "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=="], "yauzl/buffer-crc32": ["buffer-crc32@0.2.13", "", {}, "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ=="], "zod-to-ts/zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - "@actions/artifact/@actions/core/@actions/exec": ["@actions/exec@2.0.0", "", { "dependencies": { "@actions/io": "^2.0.0" } }, "sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw=="], - - "@actions/core/@actions/http-client/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], - "@actions/github/@octokit/plugin-paginate-rest/@octokit/types": ["@octokit/types@12.6.0", "", { "dependencies": { "@octokit/openapi-types": "^20.0.0" } }, "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw=="], "@actions/github/@octokit/plugin-rest-endpoint-methods/@octokit/types": ["@octokit/types@12.6.0", "", { "dependencies": { "@octokit/openapi-types": "^20.0.0" } }, "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw=="], - "@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/cloudflare/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="], + + "@astrojs/cloudflare/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="], + + "@astrojs/cloudflare/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + + "@astrojs/cloudflare/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="], - "@ai-sdk/anthropic/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/cloudflare/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="], - "@ai-sdk/azure/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/markdown-remark/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "@ai-sdk/cerebras/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/markdown-remark/shiki/@shikijs/core": ["@shikijs/core@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA=="], - "@ai-sdk/cohere/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/markdown-remark/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA=="], - "@ai-sdk/deepgram/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/markdown-remark/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g=="], - "@ai-sdk/deepinfra/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/markdown-remark/shiki/@shikijs/langs": ["@shikijs/langs@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg=="], - "@ai-sdk/deepseek/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/markdown-remark/shiki/@shikijs/themes": ["@shikijs/themes@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA=="], - "@ai-sdk/elevenlabs/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/markdown-remark/shiki/@shikijs/types": ["@shikijs/types@3.23.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ=="], - "@ai-sdk/fireworks/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/markdown-satteri/@astrojs/internal-helpers/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], - "@ai-sdk/google-vertex/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/markdown-satteri/@astrojs/internal-helpers/shiki": ["shiki@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/engine-javascript": "4.3.1", "@shikijs/engine-oniguruma": "4.3.1", "@shikijs/langs": "4.3.1", "@shikijs/themes": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw=="], - "@ai-sdk/google/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/mdx/@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.6", "", {}, "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q=="], - "@ai-sdk/groq/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/mdx/@astrojs/markdown-remark/@astrojs/prism": ["@astrojs/prism@3.3.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ=="], - "@ai-sdk/mistral/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/mdx/@astrojs/markdown-remark/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], - "@ai-sdk/openai-compatible/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/mdx/@astrojs/markdown-remark/shiki": ["shiki@3.23.0", "", { "dependencies": { "@shikijs/core": "3.23.0", "@shikijs/engine-javascript": "3.23.0", "@shikijs/engine-oniguruma": "3.23.0", "@shikijs/langs": "3.23.0", "@shikijs/themes": "3.23.0", "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA=="], - "@ai-sdk/openai/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/node/@astrojs/internal-helpers/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], - "@ai-sdk/perplexity/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/node/@astrojs/internal-helpers/shiki": ["shiki@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/engine-javascript": "4.3.1", "@shikijs/engine-oniguruma": "4.3.1", "@shikijs/langs": "4.3.1", "@shikijs/themes": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw=="], - "@ai-sdk/togetherai/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/node/astro/@astrojs/telemetry": ["@astrojs/telemetry@3.3.3", "", { "dependencies": { "ci-info": "^4.4.0", "dset": "^3.1.4", "is-docker": "^4.0.0", "package-manager-detector": "^1.6.0" } }, "sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ=="], - "@ai-sdk/vercel/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/node/astro/@capsizecss/unpack": ["@capsizecss/unpack@4.0.1", "", { "dependencies": { "fontkitten": "^1.0.3" } }, "sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ=="], - "@astrojs/check/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + "@astrojs/node/astro/@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], - "@astrojs/check/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=="], + "@astrojs/node/astro/cookie": ["cookie@2.0.1", "", {}, "sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w=="], - "@astrojs/markdown-remark/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "@astrojs/node/astro/diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], - "@astrojs/markdown-remark/shiki/@shikijs/core": ["@shikijs/core@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g=="], + "@astrojs/node/astro/es-module-lexer": ["es-module-lexer@2.3.1", "", {}, "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA=="], - "@astrojs/markdown-remark/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg=="], + "@astrojs/node/astro/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], - "@astrojs/markdown-remark/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ=="], + "@astrojs/node/astro/fontace": ["fontace@0.4.1", "", { "dependencies": { "fontkitten": "^1.0.2" } }, "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw=="], - "@astrojs/markdown-remark/shiki/@shikijs/langs": ["@shikijs/langs@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0" } }, "sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA=="], + "@astrojs/node/astro/get-tsconfig": ["get-tsconfig@5.0.0-beta.4", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ=="], - "@astrojs/markdown-remark/shiki/@shikijs/themes": ["@shikijs/themes@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0" } }, "sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ=="], + "@astrojs/node/astro/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], - "@astrojs/markdown-remark/shiki/@shikijs/types": ["@shikijs/types@3.20.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw=="], + "@astrojs/node/astro/magicast": ["magicast@0.5.3", "", { "dependencies": { "@babel/parser": "^7.29.3", "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } }, "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw=="], - "@astrojs/mdx/@astrojs/markdown-remark/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.6", "", {}, "sha512-GOle7smBWKfMSP8osUIGOlB5kaHdQLV3foCsf+5Q9Wsuu+C6Fs3Ez/ttXmhjZ1HkSgsogcM1RXSjjOVieHq16Q=="], + "@astrojs/node/astro/neotraverse": ["neotraverse@1.0.1", "", {}, "sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w=="], - "@astrojs/mdx/@astrojs/markdown-remark/@astrojs/prism": ["@astrojs/prism@3.3.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ=="], + "@astrojs/node/astro/p-limit": ["p-limit@7.3.1", "", { "dependencies": { "yocto-queue": "^1.2.1" } }, "sha512-0trZaiG7Y7kN/Egy9a8j47t9osC0Tch4PaIWd9yGF6bvmlk7muExRvGNYb8sXBwEKMoNKsbNN9P8EefuQekE4Q=="], - "@astrojs/mdx/@astrojs/markdown-remark/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "@astrojs/node/astro/p-queue": ["p-queue@9.3.3", "", { "dependencies": { "eventemitter3": "^5.0.4", "p-timeout": "^7.0.0" } }, "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA=="], - "@astrojs/mdx/@astrojs/markdown-remark/shiki": ["shiki@3.23.0", "", { "dependencies": { "@shikijs/core": "3.23.0", "@shikijs/engine-javascript": "3.23.0", "@shikijs/engine-oniguruma": "3.23.0", "@shikijs/langs": "3.23.0", "@shikijs/themes": "3.23.0", "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA=="], + "@astrojs/node/astro/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + + "@astrojs/node/astro/shiki": ["shiki@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/engine-javascript": "4.3.1", "@shikijs/engine-oniguruma": "4.3.1", "@shikijs/langs": "4.3.1", "@shikijs/themes": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw=="], + + "@astrojs/node/astro/tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], + + "@astrojs/node/astro/unifont": ["unifont@0.7.4", "", { "dependencies": { "css-tree": "^3.1.0", "ofetch": "^1.5.1", "ohash": "^2.0.11" } }, "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg=="], + + "@astrojs/node/astro/unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "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 || ^7 || ^8", "@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 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "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-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="], + + "@astrojs/node/astro/vite": ["vite@8.1.4", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.5", "postcss": "^8.5.16", "rolldown": "~1.1.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ=="], + + "@astrojs/node/astro/yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], + + "@astrojs/node/astro/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + + "@astrojs/react/@astrojs/internal-helpers/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], + + "@astrojs/react/@astrojs/internal-helpers/shiki": ["shiki@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/engine-javascript": "4.3.1", "@shikijs/engine-oniguruma": "4.3.1", "@shikijs/langs": "4.3.1", "@shikijs/themes": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw=="], + + "@astrojs/react/@vitejs/plugin-react/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-rc.3", "", {}, "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q=="], + + "@astrojs/react/@vitejs/plugin-react/react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], + + "@astrojs/react/vite/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], "@astrojs/starlight/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "@astrojs/vercel/@astrojs/internal-helpers/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], + + "@astrojs/vercel/@astrojs/internal-helpers/shiki": ["shiki@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/engine-javascript": "4.3.1", "@shikijs/engine-oniguruma": "4.3.1", "@shikijs/langs": "4.3.1", "@shikijs/themes": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw=="], + + "@astrojs/vercel/astro/@astrojs/telemetry": ["@astrojs/telemetry@3.3.3", "", { "dependencies": { "ci-info": "^4.4.0", "dset": "^3.1.4", "is-docker": "^4.0.0", "package-manager-detector": "^1.6.0" } }, "sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ=="], + + "@astrojs/vercel/astro/@capsizecss/unpack": ["@capsizecss/unpack@4.0.1", "", { "dependencies": { "fontkitten": "^1.0.3" } }, "sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ=="], + + "@astrojs/vercel/astro/@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], + + "@astrojs/vercel/astro/cookie": ["cookie@2.0.1", "", {}, "sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w=="], + + "@astrojs/vercel/astro/diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], + + "@astrojs/vercel/astro/es-module-lexer": ["es-module-lexer@2.3.1", "", {}, "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA=="], + + "@astrojs/vercel/astro/fontace": ["fontace@0.4.1", "", { "dependencies": { "fontkitten": "^1.0.2" } }, "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw=="], + + "@astrojs/vercel/astro/get-tsconfig": ["get-tsconfig@5.0.0-beta.4", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ=="], + + "@astrojs/vercel/astro/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], + + "@astrojs/vercel/astro/magicast": ["magicast@0.5.3", "", { "dependencies": { "@babel/parser": "^7.29.3", "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } }, "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw=="], + + "@astrojs/vercel/astro/neotraverse": ["neotraverse@1.0.1", "", {}, "sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w=="], + + "@astrojs/vercel/astro/p-limit": ["p-limit@7.3.1", "", { "dependencies": { "yocto-queue": "^1.2.1" } }, "sha512-0trZaiG7Y7kN/Egy9a8j47t9osC0Tch4PaIWd9yGF6bvmlk7muExRvGNYb8sXBwEKMoNKsbNN9P8EefuQekE4Q=="], + + "@astrojs/vercel/astro/p-queue": ["p-queue@9.3.3", "", { "dependencies": { "eventemitter3": "^5.0.4", "p-timeout": "^7.0.0" } }, "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA=="], + + "@astrojs/vercel/astro/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + + "@astrojs/vercel/astro/shiki": ["shiki@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/engine-javascript": "4.3.1", "@shikijs/engine-oniguruma": "4.3.1", "@shikijs/langs": "4.3.1", "@shikijs/themes": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw=="], + + "@astrojs/vercel/astro/tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], + + "@astrojs/vercel/astro/unifont": ["unifont@0.7.4", "", { "dependencies": { "css-tree": "^3.1.0", "ofetch": "^1.5.1", "ohash": "^2.0.11" } }, "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg=="], + + "@astrojs/vercel/astro/unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "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 || ^7 || ^8", "@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 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "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-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="], + + "@astrojs/vercel/astro/vite": ["vite@8.1.4", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.5", "postcss": "^8.5.16", "rolldown": "~1.1.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ=="], + + "@astrojs/vercel/astro/yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], + + "@astrojs/vercel/astro/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + + "@astrojs/vercel/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@astrojs/vercel/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@astrojs/vercel/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@astrojs/vercel/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@astrojs/vercel/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "@astrojs/vercel/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "@astrojs/vercel/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "@astrojs/vercel/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@astrojs/vercel/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@astrojs/vercel/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@astrojs/vercel/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@astrojs/vercel/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@astrojs/vercel/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@astrojs/vercel/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@astrojs/vercel/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@astrojs/vercel/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@astrojs/vercel/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@astrojs/vercel/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@astrojs/vercel/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@astrojs/vercel/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@astrojs/vercel/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@astrojs/vercel/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@astrojs/vercel/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@astrojs/vercel/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@astrojs/vercel/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@astrojs/vercel/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + "@aws-crypto/sha1-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], "@aws-crypto/sha256-browser/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], "@aws-crypto/util/@smithy/util-utf8/@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], - "@aws-sdk/client-cognito-identity/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/client-cognito-identity/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], + + "@aws-sdk/client-cognito-identity/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], - "@aws-sdk/client-lambda/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/client-lambda/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], + + "@aws-sdk/client-lambda/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.775.0", "", { "dependencies": { "@aws-sdk/core": "3.775.0", "@aws-sdk/types": "3.775.0", "@smithy/property-provider": "^4.0.2", "@smithy/types": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-6ESVxwCbGm7WZ17kY1fjmxQud43vzJFoLd4bmlR+idQSWdqlzGDYdcfzpjDKTcivdtNrVYmFvcH1JBUwCRAZhw=="], @@ -6581,13 +7087,21 @@ "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.782.0", "", { "dependencies": { "@aws-sdk/core": "3.775.0", "@aws-sdk/nested-clients": "3.782.0", "@aws-sdk/types": "3.775.0", "@smithy/property-provider": "^4.0.2", "@smithy/types": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-xCna0opVPaueEbJoclj5C6OpDNi0Gynj+4d7tnuXGgQhTHPyAz8ZyClkVqpi5qvHTgxROdUEDxWqEO5jqRHZHQ=="], - "@aws-sdk/credential-provider-env/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/credential-provider-env/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], + + "@aws-sdk/credential-provider-env/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], - "@aws-sdk/credential-provider-http/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/credential-provider-http/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], - "@aws-sdk/credential-provider-ini/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/credential-provider-http/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], - "@aws-sdk/credential-provider-login/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/credential-provider-ini/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], + + "@aws-sdk/credential-provider-ini/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], + + "@aws-sdk/credential-provider-login/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.933.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.932.0", "@aws-sdk/middleware-host-header": "3.930.0", "@aws-sdk/middleware-logger": "3.930.0", "@aws-sdk/middleware-recursion-detection": "3.933.0", "@aws-sdk/middleware-user-agent": "3.932.0", "@aws-sdk/region-config-resolver": "3.930.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@aws-sdk/util-user-agent-browser": "3.930.0", "@aws-sdk/util-user-agent-node": "3.932.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.2", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", "@smithy/middleware-endpoint": "^4.3.9", "@smithy/middleware-retry": "^4.4.9", "@smithy/middleware-serde": "^4.2.5", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", "@smithy/smithy-client": "^4.9.5", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.8", "@smithy/util-defaults-mode-node": "^4.2.11", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-o1GX0+IPlFi/D8ei9y/jj3yucJWNfPnbB5appVBWevAyUdZA5KzQ2nK/hDxiu9olTZlFEFpf1m1Rn3FaGxHqsw=="], @@ -6595,27 +7109,37 @@ "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.933.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.932.0", "@aws-sdk/middleware-host-header": "3.930.0", "@aws-sdk/middleware-logger": "3.930.0", "@aws-sdk/middleware-recursion-detection": "3.933.0", "@aws-sdk/middleware-user-agent": "3.932.0", "@aws-sdk/region-config-resolver": "3.930.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@aws-sdk/util-user-agent-browser": "3.930.0", "@aws-sdk/util-user-agent-node": "3.932.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.2", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", "@smithy/middleware-endpoint": "^4.3.9", "@smithy/middleware-retry": "^4.4.9", "@smithy/middleware-serde": "^4.2.5", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", "@smithy/smithy-client": "^4.9.5", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.8", "@smithy/util-defaults-mode-node": "^4.2.11", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-o1GX0+IPlFi/D8ei9y/jj3yucJWNfPnbB5appVBWevAyUdZA5KzQ2nK/hDxiu9olTZlFEFpf1m1Rn3FaGxHqsw=="], - "@aws-sdk/credential-provider-process/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/credential-provider-process/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], - "@aws-sdk/credential-provider-sso/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/credential-provider-process/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], - "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/credential-provider-sso/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], - "@aws-sdk/credential-providers/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/credential-provider-sso/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], - "@aws-sdk/nested-clients/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], - "@aws-sdk/token-providers/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.26", "", { "dependencies": { "@smithy/types": "^4.14.2", "fast-xml-parser": "5.7.3", "tslib": "^2.6.2" } }, "sha512-cDbrqvDS73whl6YAPSPq0U6whzG6UWI9PuWh0wrUuGoZexhWEqhdunbukV7iBoaWnFV1AODutM5hOD6rtn439g=="], + "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], - "@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@aws-sdk/credential-providers/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], - "@azure/core-xml/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@aws-sdk/credential-providers/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], - "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + "@aws-sdk/nested-clients/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], + + "@aws-sdk/nested-clients/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], + + "@aws-sdk/token-providers/@aws-sdk/core/@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], + + "@aws-sdk/token-providers/@aws-sdk/core/@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], + + "@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.4.1", "", { "dependencies": { "anynum": "^1.0.1" } }, "sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg=="], - "@develar/schema-utils/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + "@azure/core-xml/fast-xml-parser/strnum": ["strnum@2.4.1", "", { "dependencies": { "anynum": "^1.0.1" } }, "sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg=="], - "@electron/asar/minimatch/brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], + "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + + "@electron/asar/minimatch/brace-expansion": ["brace-expansion@1.1.16", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw=="], "@electron/fuses/fs-extra/jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], @@ -6623,7 +7147,7 @@ "@electron/universal/fs-extra/jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], - "@electron/universal/minimatch/brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], + "@electron/universal/minimatch/brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], "@electron/windows-sign/fs-extra/jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], @@ -6639,8 +7163,6 @@ "@expressive-code/plugin-shiki/shiki/@shikijs/types": ["@shikijs/types@3.23.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ=="], - "@hey-api/json-schema-ref-parser/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "@jsx-email/cli/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.19.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA=="], "@jsx-email/cli/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.19.12", "", { "os": "android", "cpu": "arm" }, "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w=="], @@ -6703,27 +7225,7 @@ "@malept/flatpak-bundler/fs-extra/jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], - "@modelcontextprotocol/sdk/express/accepts": ["accepts@2.0.0", "", { "dependencies": { "mime-types": "^3.0.0", "negotiator": "^1.0.0" } }, "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng=="], - - "@modelcontextprotocol/sdk/express/body-parser": ["body-parser@2.2.2", "", { "dependencies": { "bytes": "^3.1.2", "content-type": "^1.0.5", "debug": "^4.4.3", "http-errors": "^2.0.0", "iconv-lite": "^0.7.0", "on-finished": "^2.4.1", "qs": "^6.14.1", "raw-body": "^3.0.1", "type-is": "^2.0.1" } }, "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA=="], - - "@modelcontextprotocol/sdk/express/content-disposition": ["content-disposition@1.1.0", "", {}, "sha512-5jRCH9Z/+DRP7rkvY83B+yGIGX96OYdJmzngqnw2SBSxqCFPd0w2km3s5iawpGX8krnwSGmF0FW5Nhr0Hfai3g=="], - - "@modelcontextprotocol/sdk/express/cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], - - "@modelcontextprotocol/sdk/express/cookie-signature": ["cookie-signature@1.2.2", "", {}, "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg=="], - - "@modelcontextprotocol/sdk/express/finalhandler": ["finalhandler@2.1.1", "", { "dependencies": { "debug": "^4.4.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "on-finished": "^2.4.1", "parseurl": "^1.3.3", "statuses": "^2.0.1" } }, "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA=="], - - "@modelcontextprotocol/sdk/express/fresh": ["fresh@2.0.0", "", {}, "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A=="], - - "@modelcontextprotocol/sdk/express/merge-descriptors": ["merge-descriptors@2.0.0", "", {}, "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g=="], - - "@modelcontextprotocol/sdk/express/send": ["send@1.2.1", "", { "dependencies": { "debug": "^4.4.3", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", "fresh": "^2.0.0", "http-errors": "^2.0.1", "mime-types": "^3.0.2", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", "statuses": "^2.0.2" } }, "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ=="], - - "@modelcontextprotocol/sdk/express/serve-static": ["serve-static@2.2.1", "", { "dependencies": { "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "parseurl": "^1.3.3", "send": "^1.2.0" } }, "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw=="], - - "@modelcontextprotocol/sdk/express/type-is": ["type-is@2.1.0", "", { "dependencies": { "content-type": "^2.0.0", "media-typer": "^1.1.0", "mime-types": "^3.0.0" } }, "sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA=="], + "@mapbox/node-pre-gyp/nopt/abbrev": ["abbrev@3.0.1", "", {}, "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg=="], "@octokit/auth-app/@octokit/request/@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], @@ -6761,15 +7263,7 @@ "@octokit/endpoint/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@24.2.0", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="], - "@octokit/graphql/@octokit/request/@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], - - "@octokit/graphql/@octokit/request/@octokit/request-error": ["@octokit/request-error@7.1.0", "", { "dependencies": { "@octokit/types": "^16.0.0" } }, "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw=="], - - "@octokit/graphql/@octokit/request/@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="], - - "@octokit/graphql/@octokit/request/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], - - "@octokit/graphql/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@26.0.0", "", {}, "sha512-7AtcfKtpo77j7Ts73b4OWhOZHTKo/gGY8bB3bNBQz4H+GRSWqx2yvj8TXRsbdTE0eRmYmXOEY66jM7mJ7LzfsA=="], + "@octokit/graphql/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@24.2.0", "", {}, "sha512-9sIH3nSUttelJSXUrmGzl7QUBFul0/mB8HRYl3fOlgHbIWG+WnYDXU3v/2zMtAvuzZ/ed00Ei6on975FhBfzrg=="], "@octokit/oauth-methods/@octokit/request/@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], @@ -6781,7 +7275,7 @@ "@octokit/plugin-paginate-rest/@octokit/core/@octokit/graphql": ["@octokit/graphql@9.0.3", "", { "dependencies": { "@octokit/request": "^10.0.6", "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA=="], - "@octokit/plugin-paginate-rest/@octokit/core/@octokit/request": ["@octokit/request@10.0.10", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w=="], + "@octokit/plugin-paginate-rest/@octokit/core/@octokit/request": ["@octokit/request@10.0.11", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q=="], "@octokit/plugin-paginate-rest/@octokit/core/@octokit/request-error": ["@octokit/request-error@7.1.0", "", { "dependencies": { "@octokit/types": "^16.0.0" } }, "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw=="], @@ -6795,7 +7289,7 @@ "@octokit/plugin-rest-endpoint-methods/@octokit/core/@octokit/graphql": ["@octokit/graphql@9.0.3", "", { "dependencies": { "@octokit/request": "^10.0.6", "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA=="], - "@octokit/plugin-rest-endpoint-methods/@octokit/core/@octokit/request": ["@octokit/request@10.0.10", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w=="], + "@octokit/plugin-rest-endpoint-methods/@octokit/core/@octokit/request": ["@octokit/request@10.0.11", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q=="], "@octokit/plugin-rest-endpoint-methods/@octokit/core/@octokit/request-error": ["@octokit/request-error@7.1.0", "", { "dependencies": { "@octokit/types": "^16.0.0" } }, "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw=="], @@ -6815,7 +7309,7 @@ "@octokit/rest/@octokit/core/@octokit/graphql": ["@octokit/graphql@9.0.3", "", { "dependencies": { "@octokit/request": "^10.0.6", "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA=="], - "@octokit/rest/@octokit/core/@octokit/request": ["@octokit/request@10.0.10", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-KxNC2pTqqhszMNrf12ZRd4PonRgyJdsM4F/jySiddQK+DsRcfBtUvqn8t7UsyZhnRJHvX46OohDt5N3VqIWC2w=="], + "@octokit/rest/@octokit/core/@octokit/request": ["@octokit/request@10.0.11", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q=="], "@octokit/rest/@octokit/core/@octokit/request-error": ["@octokit/request-error@7.1.0", "", { "dependencies": { "@octokit/types": "^16.0.0" } }, "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw=="], @@ -6823,18 +7317,104 @@ "@octokit/rest/@octokit/core/before-after-hook": ["before-after-hook@4.0.0", "", {}, "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="], + "@opencode-ai/core/@ai-sdk/openai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], + + "@opencode-ai/core/@ai-sdk/openai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.38", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/HHGmtKllqjg1OLc023v9w9kK3laW7Z6TzfZukYQWCsGBbzB9p60zTvvpXFVcs44NZBVXL3viOa1HRKUbeee8g=="], + + "@opencode-ai/desktop/@actions/artifact/@actions/core": ["@actions/core@1.11.1", "", { "dependencies": { "@actions/exec": "^1.1.1", "@actions/http-client": "^2.0.1" } }, "sha512-hXJCSrkwfA46Vd9Z3q4cpEpHB1rL5NG04+/rbqW9d3+CSvtB1tYe8UTpAlixa1vj0m/ULglfEK2UKxMGxCxv5A=="], + "@opencode-ai/desktop/@actions/artifact/@actions/http-client": ["@actions/http-client@2.2.3", "", { "dependencies": { "tunnel": "^0.0.6", "undici": "^5.25.4" } }, "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA=="], + "@opencode-ai/updates/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="], + + "@opencode-ai/updates/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="], + + "@opencode-ai/updates/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + + "@opencode-ai/updates/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="], + + "@opencode-ai/updates/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="], + "@opencode-ai/web/@shikijs/transformers/@shikijs/core": ["@shikijs/core@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g=="], "@opencode-ai/web/@shikijs/transformers/@shikijs/types": ["@shikijs/types@3.20.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw=="], + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.10.1", "", { "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "js-yaml": "^4.1.1", "picomatch": "^4.0.4", "retext-smartypants": "^6.2.0", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "unified": "^11.0.5" } }, "sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/underscore-redirects": ["@astrojs/underscore-redirects@1.0.3", "", {}, "sha512-cxnGSw+sJigBLdX4TMSZKkzV6C3gMLJMucDk2W+n281Xhie68T2/9f1+1NMNDCZsc5i0FED7Qt5I10g2O9wtZg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin": ["@cloudflare/vite-plugin@1.45.1", "", { "dependencies": { "@cloudflare/unenv-preset": "2.16.1", "miniflare": "4.20260714.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260714.1", "wrangler": "4.112.0", "ws": "8.21.0" }, "peerDependencies": { "vite": "^6.1.0 || ^7.0.0 || ^8.0.0" }, "bin": { "cf-vite": "bin/cf-vite" } }, "sha512-C+iDpO9pVH7IqrjdYtUV+obcTAdpiNk0OSinGEZZyd2ZWyGVjGk7iJ2p3xpMBpZuTa1I4hfAECNp0yN/8f3PIQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite": ["vite@8.1.4", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.5", "postcss": "^8.5.16", "rolldown": "~1.1.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ=="], + + "@opencode-ai/www/astro/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.10.1", "", { "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "js-yaml": "^4.1.1", "picomatch": "^4.0.4", "retext-smartypants": "^6.2.0", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "unified": "^11.0.5" } }, "sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q=="], + + "@opencode-ai/www/astro/@astrojs/telemetry": ["@astrojs/telemetry@3.3.3", "", { "dependencies": { "ci-info": "^4.4.0", "dset": "^3.1.4", "is-docker": "^4.0.0", "package-manager-detector": "^1.6.0" } }, "sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ=="], + + "@opencode-ai/www/astro/@capsizecss/unpack": ["@capsizecss/unpack@4.0.1", "", { "dependencies": { "fontkitten": "^1.0.3" } }, "sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ=="], + + "@opencode-ai/www/astro/@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], + + "@opencode-ai/www/astro/cookie": ["cookie@2.0.1", "", {}, "sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w=="], + + "@opencode-ai/www/astro/diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], + + "@opencode-ai/www/astro/es-module-lexer": ["es-module-lexer@2.3.1", "", {}, "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA=="], + + "@opencode-ai/www/astro/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + + "@opencode-ai/www/astro/fontace": ["fontace@0.4.1", "", { "dependencies": { "fontkitten": "^1.0.2" } }, "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw=="], + + "@opencode-ai/www/astro/get-tsconfig": ["get-tsconfig@5.0.0-beta.4", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ=="], + + "@opencode-ai/www/astro/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], + + "@opencode-ai/www/astro/magicast": ["magicast@0.5.3", "", { "dependencies": { "@babel/parser": "^7.29.3", "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } }, "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw=="], + + "@opencode-ai/www/astro/neotraverse": ["neotraverse@1.0.1", "", {}, "sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w=="], + + "@opencode-ai/www/astro/p-limit": ["p-limit@7.3.1", "", { "dependencies": { "yocto-queue": "^1.2.1" } }, "sha512-0trZaiG7Y7kN/Egy9a8j47t9osC0Tch4PaIWd9yGF6bvmlk7muExRvGNYb8sXBwEKMoNKsbNN9P8EefuQekE4Q=="], + + "@opencode-ai/www/astro/p-queue": ["p-queue@9.3.3", "", { "dependencies": { "eventemitter3": "^5.0.4", "p-timeout": "^7.0.0" } }, "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA=="], + + "@opencode-ai/www/astro/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + + "@opencode-ai/www/astro/shiki": ["shiki@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/engine-javascript": "4.3.1", "@shikijs/engine-oniguruma": "4.3.1", "@shikijs/langs": "4.3.1", "@shikijs/themes": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw=="], + + "@opencode-ai/www/astro/tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], + + "@opencode-ai/www/astro/unifont": ["unifont@0.7.4", "", { "dependencies": { "css-tree": "^3.1.0", "ofetch": "^1.5.1", "ohash": "^2.0.11" } }, "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg=="], + + "@opencode-ai/www/astro/unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "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 || ^7 || ^8", "@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 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "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-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="], + + "@opencode-ai/www/astro/vite": ["vite@8.1.4", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.5", "postcss": "^8.5.16", "rolldown": "~1.1.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ=="], + + "@opencode-ai/www/astro/yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], + + "@opencode-ai/www/astro/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], + + "@opencode-ai/www/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="], + + "@opencode-ai/www/wrangler/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="], + + "@opencode-ai/www/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + + "@opencode-ai/www/wrangler/miniflare": ["miniflare@4.20260708.1", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260708.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-c94O9zRDISdqO18EHt6l0iF/fWgWt8p18PJvRsA/L/NJZ9Cfke3s/F5Blg1XXF7WDutVRzWVWy8Vy4LaT5ifsA=="], + + "@opencode-ai/www/wrangler/workerd": ["workerd@1.20260708.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260708.1", "@cloudflare/workerd-darwin-arm64": "1.20260708.1", "@cloudflare/workerd-linux-64": "1.20260708.1", "@cloudflare/workerd-linux-arm64": "1.20260708.1", "@cloudflare/workerd-windows-64": "1.20260708.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-WAK+Kt/VVCSldH2qSr8lx46XCJ4Q+bdlHNaFqUtOHthBEIB8C1N8HVW+VOLrxDoTCk0NGNv0zajnBeQK4JOB9w=="], + "@opentui/solid/@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@oxc-parser/binding-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], + "@pierre/diffs/@shikijs/transformers/@shikijs/core": ["@shikijs/core@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g=="], "@pierre/diffs/@shikijs/transformers/@shikijs/types": ["@shikijs/types@3.20.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw=="], + "@pierre/diffs/react-dom/scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], + + "@pierre/trees/react-dom/scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], + "@sentry/bundler-plugin-core/glob/minimatch": ["minimatch@8.0.7", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-V+1uQNdzybxa14e/p00HZnQNNcTjnRJjDxg2V8wtkjFctq4M7hXFws4oekyTP0Jebeq7QYtpFyOeBAjc88zvYg=="], "@sentry/bundler-plugin-core/glob/minipass": ["minipass@4.2.8", "", {}, "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ=="], @@ -6847,6 +7427,38 @@ "@shikijs/stream/@shikijs/core/@shikijs/types": ["@shikijs/types@4.2.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-VT/MKtlpOhEPZloSH3Pb9WCZEBDoQVMa9jedp5UAwmJOar1DVc9DRODAxmYPW9M93IK4ryuqRejFfmlvlVDemw=="], + "@shikijs/twoslash/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "@slack/bolt/express/accepts": ["accepts@1.3.8", "", { "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" } }, "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw=="], + + "@slack/bolt/express/body-parser": ["body-parser@1.20.6", "", { "dependencies": { "bytes": "~3.1.2", "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "~1.2.0", "http-errors": "~2.0.1", "iconv-lite": "~0.4.24", "on-finished": "~2.4.1", "qs": "~6.15.1", "raw-body": "~2.5.3", "type-is": "~1.6.18", "unpipe": "~1.0.0" } }, "sha512-p5tAzS57i5MV9fZFDj9LeIiTZEufbSe2eDozP+ElheSUq1m74CRq1jI4mYNDdVs9vQztXFLuk/Gd6BWTdwRJ5g=="], + + "@slack/bolt/express/content-disposition": ["content-disposition@0.5.4", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ=="], + + "@slack/bolt/express/cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], + + "@slack/bolt/express/cookie-signature": ["cookie-signature@1.0.7", "", {}, "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA=="], + + "@slack/bolt/express/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], + + "@slack/bolt/express/finalhandler": ["finalhandler@1.3.2", "", { "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "~2.4.1", "parseurl": "~1.3.3", "statuses": "~2.0.2", "unpipe": "~1.0.0" } }, "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg=="], + + "@slack/bolt/express/fresh": ["fresh@0.5.2", "", {}, "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q=="], + + "@slack/bolt/express/merge-descriptors": ["merge-descriptors@1.0.3", "", {}, "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ=="], + + "@slack/bolt/express/path-to-regexp": ["path-to-regexp@0.1.13", "", {}, "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA=="], + + "@slack/bolt/express/range-parser": ["range-parser@1.2.1", "", {}, "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="], + + "@slack/bolt/express/send": ["send@0.19.2", "", { "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "fresh": "~0.5.2", "http-errors": "~2.0.1", "mime": "1.6.0", "ms": "2.1.3", "on-finished": "~2.4.1", "range-parser": "~1.2.1", "statuses": "~2.0.2" } }, "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg=="], + + "@slack/bolt/express/serve-static": ["serve-static@1.16.3", "", { "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", "send": "~0.19.1" } }, "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA=="], + + "@slack/bolt/express/type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="], + + "@slack/bolt/raw-body/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + "@slack/web-api/form-data/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], "@slack/web-api/p-queue/eventemitter3": ["eventemitter3@4.0.7", "", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="], @@ -6865,33 +7477,57 @@ "@solidjs/start/shiki/@shikijs/types": ["@shikijs/types@1.29.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw=="], - "@standard-community/standard-json/effect/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], - - "@standard-community/standard-openapi/effect/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@storybook/addon-docs/react-dom/scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], "@storybook/csf-plugin/unplugin/webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], - "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg=="], + "@tailwindcss/node/lightningcss/lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="], - "@vitest/coverage-v8/@vitest/utils/@vitest/pretty-format": ["@vitest/pretty-format@4.1.8", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA=="], + "@tailwindcss/node/lightningcss/lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.30.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA=="], - "@vitest/expect/@vitest/utils/@vitest/pretty-format": ["@vitest/pretty-format@3.2.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA=="], + "@tailwindcss/node/lightningcss/lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.30.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig=="], + + "@tailwindcss/node/lightningcss/lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.30.1", "", { "os": "linux", "cpu": "arm" }, "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q=="], + + "@tailwindcss/node/lightningcss/lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw=="], + + "@tailwindcss/node/lightningcss/lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.30.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ=="], + + "@tailwindcss/node/lightningcss/lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw=="], + + "@tailwindcss/node/lightningcss/lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.30.1", "", { "os": "linux", "cpu": "x64" }, "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ=="], + + "@tailwindcss/node/lightningcss/lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.30.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA=="], + + "@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.1", "", { "os": "win32", "cpu": "x64" }, "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg=="], + + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], + + "@vercel/cli-exec/execa/get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="], + + "@vercel/cli-exec/execa/human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="], - "accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + "@vercel/cli-exec/execa/is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="], - "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@vercel/cli-exec/execa/npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="], - "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@vercel/cli-exec/execa/onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], - "ai-gateway-provider/@ai-sdk/amazon-bedrock/@smithy/eventstream-codec": ["@smithy/eventstream-codec@4.2.14", "", { "dependencies": { "@aws-crypto/crc32": "5.2.0", "@smithy/types": "^4.14.1", "@smithy/util-hex-encoding": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw=="], + "@vercel/cli-exec/execa/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], - "ai-gateway-provider/@ai-sdk/amazon-bedrock/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@vercel/cli-exec/execa/strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="], - "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider": ["@ai-sdk/provider@3.0.10", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-Q3BZ27qfpYqnCYGvE3vt+Qi6LGOF9R5Nmzn+9JoM1lCRsD9mYaIhfJLkSunN48nfGXJ6n+XNV0J/XVpqGQl7Dw=="], + "@vercel/functions/@vercel/oidc/jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="], - "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.27", "", { "dependencies": { "@ai-sdk/provider": "3.0.10", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-ubkAJ+xODouwtmN1tYlvTPphH1hPOBfZaEQe8U7skGvFAnIRs9PPpsq57bC2+Ky/MB4yzhd6YOsxTAx9sGpazw=="], + "@vercel/routing-utils/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], - "ajv-keywords/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + "@vitest/expect/@vitest/utils/@vitest/pretty-format": ["@vitest/pretty-format@3.2.4", "", { "dependencies": { "tinyrainbow": "^2.0.0" } }, "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA=="], + + "ai-gateway-provider/@ai-sdk/mistral/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.21", "", { "dependencies": { "@ai-sdk/provider": "3.0.8", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-MtFUYI1/8mgDvRmaBDjbLJPFFrMG777AvSgyIFQtZHIMzm88R/12vYBBpnk7pfiWLFE1DSZzY4WDYzGbKAcmiw=="], + + "ai-gateway-provider/@ai-sdk/openai/@ai-sdk/provider": ["@ai-sdk/provider@3.0.14", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-5X1k57JBJ4H7H1QjX7CnJYAB1I19r/trVZTMcSms7/kLNZ8RaU4Nt2agcwZzv82Hfx6Q7/TOLU7agAKeFfc8cA=="], + + "ai-gateway-provider/@ai-sdk/openai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.38", "", { "dependencies": { "@ai-sdk/provider": "3.0.14", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-/HHGmtKllqjg1OLc023v9w9kK3laW7Z6TzfZukYQWCsGBbzB9p60zTvvpXFVcs44NZBVXL3viOa1HRKUbeee8g=="], "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], @@ -6917,17 +7553,17 @@ "astro/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "astro/shiki/@shikijs/core": ["@shikijs/core@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g=="], + "astro/shiki/@shikijs/core": ["@shikijs/core@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA=="], - "astro/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg=="], + "astro/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA=="], - "astro/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ=="], + "astro/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g=="], - "astro/shiki/@shikijs/langs": ["@shikijs/langs@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0" } }, "sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA=="], + "astro/shiki/@shikijs/langs": ["@shikijs/langs@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg=="], - "astro/shiki/@shikijs/themes": ["@shikijs/themes@3.20.0", "", { "dependencies": { "@shikijs/types": "3.20.0" } }, "sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ=="], + "astro/shiki/@shikijs/themes": ["@shikijs/themes@3.23.0", "", { "dependencies": { "@shikijs/types": "3.23.0" } }, "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA=="], - "astro/shiki/@shikijs/types": ["@shikijs/types@3.20.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw=="], + "astro/shiki/@shikijs/types": ["@shikijs/types@3.23.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ=="], "astro/unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], @@ -6943,141 +7579,215 @@ "babel-plugin-module-resolver/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], - "body-parser/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + "blume/@astrojs/mdx/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.10.1", "", { "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "js-yaml": "^4.1.1", "picomatch": "^4.0.4", "retext-smartypants": "^6.2.0", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "unified": "^11.0.5" } }, "sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q=="], - "builder-util/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "blume/@astrojs/mdx/@astrojs/markdown-remark": ["@astrojs/markdown-remark@7.2.1", "", { "dependencies": { "@astrojs/internal-helpers": "0.10.1", "@astrojs/prism": "4.0.2", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "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", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.1.0", "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "sha512-jPVNIqTvk+yKviikszv/Y1U4jGUSKpp/Nw48QZV4qjWgp70j4Lkq3lhSDRbWwCfgKvEyO9GHuVbV1dM2WYXy1w=="], - "c12/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + "blume/@astrojs/mdx/acorn": ["acorn@8.17.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg=="], - "conf/dot-prop/type-fest": ["type-fest@5.7.0", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-1URUxUqfHFM1c+zfSPsa3gnkO7Aq21qyH75SIduNYz4SzY964rn1X2vCMQaHSHhktiw+0kPa2iyb6PUpXqB6Vg=="], + "blume/@astrojs/mdx/es-module-lexer": ["es-module-lexer@2.3.1", "", {}, "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA=="], - "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], + "blume/@astrojs/mdx/source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], - "dir-compare/minimatch/brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], + "blume/@clack/prompts/@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], - "dir-compare/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + "blume/@pierre/diffs/@pierre/theme": ["@pierre/theme@1.1.0", "", {}, "sha512-GC2OWTAfTIIWWYhPCygwG8t2EtePQkRfON4MI2rwIkJylmiyqIttJID2dCL8sUD8cNdEvYkEyfEHHKMeCiDLoQ=="], - "dmg-builder/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "blume/@pierre/diffs/@pierre/theming": ["@pierre/theming@0.0.2", "", { "peerDependencies": { "@pierre/theme": "^1.1.0", "@shikijs/themes": "^3.0.0 || ^4.0.0", "react": "^18.3.1 || ^19.0.0", "react-dom": "^18.3.1 || ^19.0.0", "shiki": "^3.0.0 || ^4.0.0" }, "optionalPeers": ["@pierre/theme", "@shikijs/themes", "react", "react-dom", "shiki"] }, "sha512-QM1M4stXfnzfaE8I8YbjXSApV8c+2dBsXJj8eYg9WTpBR/cTmCZIcfGnN4p13iRrYu2Br/R/OJfEL7uR8Qjctw=="], - "dmg-license/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], + "blume/@pierre/diffs/diff": ["diff@9.0.0", "", {}, "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw=="], - "duplexer2/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], + "blume/@shikijs/transformers/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], - "duplexer2/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + "blume/@shikijs/transformers/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], - "duplexer2/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + "blume/@tailwindcss/vite/@tailwindcss/node": ["@tailwindcss/node@4.3.2", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "5.21.6", "jiti": "^2.7.0", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.3.2" } }, "sha512-yWP/sqEcBLaD8JuA6zNwxoYKr75qxTioYwlRwekj5Jr/I5GXnoJfjetH/psLUIv74cYTH2lBUEzBkinthoYcBg=="], - "editorconfig/minimatch/brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], + "blume/@tailwindcss/vite/@tailwindcss/oxide": ["@tailwindcss/oxide@4.3.2", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.3.2", "@tailwindcss/oxide-darwin-arm64": "4.3.2", "@tailwindcss/oxide-darwin-x64": "4.3.2", "@tailwindcss/oxide-freebsd-x64": "4.3.2", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.2", "@tailwindcss/oxide-linux-arm64-gnu": "4.3.2", "@tailwindcss/oxide-linux-arm64-musl": "4.3.2", "@tailwindcss/oxide-linux-x64-gnu": "4.3.2", "@tailwindcss/oxide-linux-x64-musl": "4.3.2", "@tailwindcss/oxide-wasm32-wasi": "4.3.2", "@tailwindcss/oxide-win32-arm64-msvc": "4.3.2", "@tailwindcss/oxide-win32-x64-msvc": "4.3.2" } }, "sha512-z8ZgnzX8gdNoWLBLqBPoh/sjnxkwvf9ZuWjnO0l0yIzbLa5/9S+eC5QxGZKRobVHIC3/1BoMWjHblqWjcgFgag=="], - "electron-builder-squirrel-windows/app-builder-lib/@electron/get": ["@electron/get@3.1.0", "", { "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", "fs-extra": "^8.1.0", "got": "^11.8.5", "progress": "^2.0.3", "semver": "^6.2.0", "sumchecker": "^3.0.1" }, "optionalDependencies": { "global-agent": "^3.0.0" } }, "sha512-F+nKc0xW+kVbBRhFzaMgPy3KwmuNTYX1fx6+FxxoSnNgwYX6LD7AKBTWkU0MQ6IBoe7dz069CNkR673sPAgkCQ=="], + "blume/ai/@ai-sdk/gateway": ["@ai-sdk/gateway@2.0.115", "", { "dependencies": { "@ai-sdk/provider": "2.0.3", "@ai-sdk/provider-utils": "3.0.30", "@vercel/oidc": "3.1.0" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-BLN5eLjzg6mKkbxAf6oP8Z7mEyRihrDzBJr7QlNPZTFvgZJ15peoflUJuskTCZFaisqelj1P4Se1pHY8QBBgBA=="], - "electron-builder-squirrel-windows/app-builder-lib/builder-util-runtime": ["builder-util-runtime@9.5.1", "", { "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" } }, "sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ=="], + "blume/ai/@ai-sdk/provider": ["@ai-sdk/provider@2.0.3", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-h88OPkavHTiN9tMn2l5awAznGB0lXzjcLhgR1/rvjB2zlLprsNxbM2tt6OJsHUxduLC3klq0/eqaSf6fX5XVww=="], - "electron-builder-squirrel-windows/app-builder-lib/ci-info": ["ci-info@4.3.1", "", {}, "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA=="], + "blume/ai/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@3.0.30", "", { "dependencies": { "@ai-sdk/provider": "2.0.3", "@standard-schema/spec": "^1.0.0", "eventsource-parser": "^3.0.6" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-NCJ9JKow5ENAgEZxzvEvF20thwDiH+hutvzmrUDbloRX0azpJHNst8+7pZIVryYhLM9wgpT5/ShTSjPTFhkxEQ=="], - "electron-builder-squirrel-windows/app-builder-lib/dmg-builder": ["dmg-builder@26.8.1", "", { "dependencies": { "app-builder-lib": "26.8.1", "builder-util": "26.8.1", "fs-extra": "^10.1.0", "iconv-lite": "^0.6.2", "js-yaml": "^4.1.0" }, "optionalDependencies": { "dmg-license": "^1.0.11" } }, "sha512-glMJgnTreo8CFINujtAhCgN96QAqApDMZ8Vl1r8f0QT8QprvC1UCltV4CcWj20YoIyLZx6IUskaJZ0NV8fokcg=="], + "blume/astro/@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.10.1", "", { "dependencies": { "@types/hast": "^3.0.4", "@types/mdast": "^4.0.4", "js-yaml": "^4.1.1", "picomatch": "^4.0.4", "retext-smartypants": "^6.2.0", "shiki": "^4.0.2", "smol-toml": "^1.6.0", "unified": "^11.0.5" } }, "sha512-5phcroT/vmOOrYuuAxtkbPixy5hePtlz9i8K4OeDv3dNK6/UQRuXPOSRTxIOBbUY5Sonw2UaxjbuVc43Mcir6Q=="], - "electron-builder-squirrel-windows/app-builder-lib/electron-publish": ["electron-publish@26.8.1", "", { "dependencies": { "@types/fs-extra": "^9.0.11", "builder-util": "26.8.1", "builder-util-runtime": "9.5.1", "chalk": "^4.1.2", "form-data": "^4.0.5", "fs-extra": "^10.1.0", "lazy-val": "^1.0.5", "mime": "^2.5.2" } }, "sha512-q+jrSTIh/Cv4eGZa7oVR+grEJo/FoLMYBAnSL5GCtqwUpr1T+VgKB/dn1pnzxIxqD8S/jP1yilT9VrwCqINR4w=="], + "blume/astro/@astrojs/telemetry": ["@astrojs/telemetry@3.3.3", "", { "dependencies": { "ci-info": "^4.4.0", "dset": "^3.1.4", "is-docker": "^4.0.0", "package-manager-detector": "^1.6.0" } }, "sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ=="], - "electron-builder-squirrel-windows/app-builder-lib/hosted-git-info": ["hosted-git-info@4.1.0", "", { "dependencies": { "lru-cache": "^6.0.0" } }, "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA=="], + "blume/astro/@capsizecss/unpack": ["@capsizecss/unpack@4.0.1", "", { "dependencies": { "fontkitten": "^1.0.3" } }, "sha512-CuNiSqg7+e1cO/GjffyMOm5Tt2jUF9CWHHnvQ/UkqvtkGfHdgwEC0wpmq7fkN3gxwpRnrAN0WzO3vREKmNolMQ=="], - "electron-builder-squirrel-windows/app-builder-lib/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "blume/astro/cookie": ["cookie@2.0.1", "", {}, "sha512-yuToqVvRrj6pfDXREyQAAv8SkAEk/8GS3jQRTiUMm66TVtBYmqQeoEjL2Lmq8Rpo6271vH76InTChTitEAm65w=="], - "electron-builder-squirrel-windows/app-builder-lib/semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], + "blume/astro/diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], - "electron-builder-squirrel-windows/app-builder-lib/which": ["which@5.0.0", "", { "dependencies": { "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" } }, "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ=="], + "blume/astro/es-module-lexer": ["es-module-lexer@2.3.1", "", {}, "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA=="], - "electron-builder-squirrel-windows/builder-util/builder-util-runtime": ["builder-util-runtime@9.5.1", "", { "dependencies": { "debug": "^4.3.4", "sax": "^1.2.4" } }, "sha512-qt41tMfgHTllhResqM5DcnHyDIWNgzHvuY2jDcYP9iaGpkWxTUzV6GQjDeLnlR1/DtdlcsWQbA7sByMpmJFTLQ=="], + "blume/astro/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], - "electron-builder-squirrel-windows/builder-util/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "blume/astro/fontace": ["fontace@0.4.1", "", { "dependencies": { "fontkitten": "^1.0.2" } }, "sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw=="], - "electron-builder-squirrel-windows/builder-util/js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], + "blume/astro/get-tsconfig": ["get-tsconfig@5.0.0-beta.4", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-7nF7C9fIPFEMHgEMEfgIlO9wDdZ8CyHw27rWciFZfHvHDReIiPhsYuzPRXsfvBCqFy1l8RRyyWV7QLM+ZhUJsQ=="], - "electron-builder/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], + "blume/astro/magicast": ["magicast@0.5.3", "", { "dependencies": { "@babel/parser": "^7.29.3", "@babel/types": "^7.29.0", "source-map-js": "^1.2.1" } }, "sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw=="], - "electron-builder/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=="], + "blume/astro/neotraverse": ["neotraverse@1.0.1", "", {}, "sha512-WmmLty1YWwJl9yZi77v2dVIV6X2kuYV8YYBI/G3LWGKdGHmHUvL1z7FW0iDvEvGAwNEoc5x1tOOOyDnf5jJw/w=="], - "electron-updater/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "blume/astro/p-limit": ["p-limit@7.3.1", "", { "dependencies": { "yocto-queue": "^1.2.1" } }, "sha512-0trZaiG7Y7kN/Egy9a8j47t9osC0Tch4PaIWd9yGF6bvmlk7muExRvGNYb8sXBwEKMoNKsbNN9P8EefuQekE4Q=="], - "electron-winstaller/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], + "blume/astro/p-queue": ["p-queue@9.3.3", "", { "dependencies": { "eventemitter3": "^5.0.4", "p-timeout": "^7.0.0" } }, "sha512-NXAOdnEe5FsZJfT4oK84lE1Y5cFFdWlRuOo5tww8DyNMxyRXwn39fIkUtNLKppcPC+UYU/bXujNCUGDv01y7CA=="], - "esbuild-plugin-copy/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + "blume/astro/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], - "express/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + "blume/astro/tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], - "filelist/minimatch/brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], + "blume/astro/unifont": ["unifont@0.7.4", "", { "dependencies": { "css-tree": "^3.1.0", "ofetch": "^1.5.1", "ohash": "^2.0.11" } }, "sha512-oHeis4/xl42HUIeHuNZRGEvxj5AaIKR+bHPNegRq5LV1gdc3jundpONbjglKpihmJf+dswygdMJn3eftGIMemg=="], - "finalhandler/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + "blume/astro/unstorage": ["unstorage@1.17.5", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^5.0.0", "destr": "^2.0.5", "h3": "^1.15.10", "lru-cache": "^11.2.7", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.3" }, "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 || ^7 || ^8", "@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 || ^3.0.0", "@vercel/kv": "^1 || ^2 || ^3", "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-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg=="], - "form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + "blume/astro/vite": ["vite@8.1.4", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.5", "postcss": "^8.5.16", "rolldown": "~1.1.4", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-bTT9PsdWO+MQMNG9ZXIP/qM9wGh37DFxTV/sPq9cFpHr3w4jkgef032PkAL9jAqhk3Nz8NQw3O8n6/xFkqO4QQ=="], - "iconv-corefoundation/cli-truncate/slice-ansi": ["slice-ansi@3.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", "is-fullwidth-code-point": "^3.0.0" } }, "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ=="], + "blume/astro/yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], - "iconv-corefoundation/cli-truncate/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=="], + "blume/astro/zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="], - "js-beautify/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], + "blume/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "js-beautify/glob/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], + "blume/node-html-parser/entities": ["entities@8.0.0", "", {}, "sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA=="], - "js-beautify/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], + "blume/react-dom/scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], - "js-beautify/nopt/abbrev": ["abbrev@2.0.0", "", {}, "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ=="], + "blume/shiki/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], - "lazystream/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], + "blume/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ=="], - "lazystream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + "blume/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg=="], - "lazystream/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + "blume/shiki/@shikijs/langs": ["@shikijs/langs@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ=="], - "motion/framer-motion/motion-dom": ["motion-dom@12.40.0", "", { "dependencies": { "motion-utils": "^12.39.0" } }, "sha512-HxU3ZaBwNPVQUBQf1xxgq+7JrPNZvjLVxgbpEZL7RrWJnsxOf0/OM+yrHG9ogLQ31Do/r57Oz2gQWPK+6q62mg=="], + "blume/shiki/@shikijs/themes": ["@shikijs/themes@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA=="], - "motion/framer-motion/motion-utils": ["motion-utils@12.39.0", "", {}, "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ=="], + "blume/shiki/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], - "opencode-gitlab-auth/open/wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], + "builder-util/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "p-locate/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + "cliui/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], - "pkg-dir/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + "cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "pkg-up/find-up/locate-path": ["locate-path@3.0.0", "", { "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="], + "conf/dot-prop/type-fest": ["type-fest@5.8.0", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA=="], - "readdir-glob/minimatch/brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], + "cross-spawn/which/isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], - "rimraf/glob/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], + "csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="], - "send/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + "cytoscape-fcose/cose-base/layout-base": ["layout-base@2.0.1", "", {}, "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg=="], - "storybook/open/wsl-utils": ["wsl-utils@0.1.0", "", { "dependencies": { "is-wsl": "^3.1.0" } }, "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw=="], + "d3-sankey/d3-array/internmap": ["internmap@1.0.1", "", {}, "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw=="], - "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "d3-sankey/d3-shape/d3-path": ["d3-path@1.0.9", "", {}, "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="], - "tw-to-css/tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + "dir-compare/minimatch/brace-expansion": ["brace-expansion@1.1.16", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw=="], - "tw-to-css/tailwindcss/glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + "dir-compare/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], - "tw-to-css/tailwindcss/jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], + "dmg-builder/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "tw-to-css/tailwindcss/object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], + "duplexer2/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], - "tw-to-css/tailwindcss/postcss": ["postcss@8.5.15", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A=="], + "duplexer2/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], - "type-is/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + "duplexer2/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], - "unplugin/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + "editorconfig/minimatch/brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], - "unzipper/fs-extra/jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], + "electron-updater/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "venice-ai-sdk-provider/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "electron-winstaller/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], - "vitest/@vitest/expect/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "epub-gen-memory/dom-serializer/entities": ["entities@2.2.0", "", {}, "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A=="], - "vitest/@vitest/expect/chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], + "epub-gen-memory/htmlparser2/entities": ["entities@3.0.1", "", {}, "sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q=="], - "wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.4", "", { "os": "aix", "cpu": "ppc64" }, "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q=="], + "esbuild-plugin-copy/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], - "wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.4", "", { "os": "android", "cpu": "arm" }, "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ=="], + "filelist/minimatch/brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], - "wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.4", "", { "os": "android", "cpu": "arm64" }, "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A=="], + "form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "gcp-metadata/gaxios/node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], + + "js-beautify/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], + + "js-beautify/glob/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], + + "js-beautify/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], + + "js-beautify/nopt/abbrev": ["abbrev@2.0.0", "", {}, "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ=="], + + "jszip/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], + + "jszip/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + + "jszip/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + + "lazystream/readable-stream/isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], + + "lazystream/readable-stream/safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + + "lazystream/readable-stream/string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + + "motion/framer-motion/motion-dom": ["motion-dom@12.42.2", "", { "dependencies": { "motion-utils": "^12.39.0" } }, "sha512-5gIMWLp/PycBtJRJWRgjxke5n8dlvkSn2DrYW+tr3XcqAZY1xZh6BJyooJXCM8wdfM7wfMjkBJNLge1CKPUIRA=="], + + "motion/framer-motion/motion-utils": ["motion-utils@12.39.0", "", {}, "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ=="], + + "p-locate/p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], + + "pkg-dir/find-up/locate-path": ["locate-path@5.0.0", "", { "dependencies": { "p-locate": "^4.1.0" } }, "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="], + + "pkg-up/find-up/locate-path": ["locate-path@3.0.0", "", { "dependencies": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="], + + "readdir-glob/minimatch/brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], + + "rimraf/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "^8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "^0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], + + "rimraf/glob/minimatch": ["minimatch@9.0.9", "", { "dependencies": { "brace-expansion": "^2.0.2" } }, "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg=="], + + "rimraf/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], + + "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "temp/rimraf/glob": ["glob@7.2.3", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q=="], + + "tw-to-css/tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], + + "tw-to-css/tailwindcss/glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], + + "tw-to-css/tailwindcss/jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], + + "tw-to-css/tailwindcss/object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], + + "tw-to-css/tailwindcss/postcss": ["postcss@8.5.19", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ=="], + + "unplugin/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "unzipper/fs-extra/jsonfile": ["jsonfile@6.2.1", "", { "dependencies": { "universalify": "^2.0.0" }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, "sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q=="], + + "venice-ai-sdk-provider/@ai-sdk/openai-compatible/@ai-sdk/provider": ["@ai-sdk/provider@3.0.13", "", { "dependencies": { "json-schema": "^0.4.0" } }, "sha512-ZPtVYt5QIJzOta1kdUiDuCx4HhFkvNPv/rvmZ2b1iXwybYjJsCnNYR4PAw4kW7rgVfDARvHXcU64efWuqNp6bw=="], + + "venice-ai-sdk-provider/@ai-sdk/openai-compatible/@ai-sdk/provider-utils": ["@ai-sdk/provider-utils@4.0.35", "", { "dependencies": { "@ai-sdk/provider": "3.0.13", "@standard-schema/spec": "^1.1.0", "eventsource-parser": "^3.0.8" }, "peerDependencies": { "zod": "^3.25.76 || ^4.1.8" } }, "sha512-bjYld/2KGPLt78kpqbya+fD4LYS7BqVQJyUjE3qAHrYB0FR2Q90BaWEVIBZaguTWXf/A8L6uG1zO1v9TxVlGWg=="], + + "vitest/@vitest/expect/chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], + + "vitest/vite/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + + "vscode-languageserver/vscode-languageserver-protocol/vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], + + "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=="], + + "wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.4", "", { "os": "android", "cpu": "arm64" }, "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A=="], "wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.4", "", { "os": "android", "cpu": "x64" }, "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ=="], @@ -7127,19 +7837,93 @@ "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], - "@actions/artifact/@actions/core/@actions/exec/@actions/io": ["@actions/io@2.0.0", "", {}, "sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg=="], + "yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + + "yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "@actions/github/@octokit/plugin-paginate-rest/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@20.0.0", "", {}, "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA=="], "@actions/github/@octokit/plugin-rest-endpoint-methods/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@20.0.0", "", {}, "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA=="], - "@astrojs/check/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], - "@astrojs/check/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=="], + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], - "@astrojs/check/yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], - "@astrojs/check/yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@astrojs/cloudflare/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + + "@astrojs/cloudflare/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="], + + "@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="], + + "@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="], + + "@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="], + + "@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="], + + "@astrojs/cloudflare/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="], + + "@astrojs/markdown-satteri/@astrojs/internal-helpers/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "@astrojs/markdown-satteri/@astrojs/internal-helpers/shiki/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], + + "@astrojs/markdown-satteri/@astrojs/internal-helpers/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ=="], + + "@astrojs/markdown-satteri/@astrojs/internal-helpers/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg=="], + + "@astrojs/markdown-satteri/@astrojs/internal-helpers/shiki/@shikijs/langs": ["@shikijs/langs@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ=="], + + "@astrojs/markdown-satteri/@astrojs/internal-helpers/shiki/@shikijs/themes": ["@shikijs/themes@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA=="], + + "@astrojs/markdown-satteri/@astrojs/internal-helpers/shiki/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], "@astrojs/mdx/@astrojs/markdown-remark/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], @@ -7155,306 +7939,1328 @@ "@astrojs/mdx/@astrojs/markdown-remark/shiki/@shikijs/types": ["@shikijs/types@3.23.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ=="], - "@aws-crypto/sha1-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=="], + "@astrojs/node/@astrojs/internal-helpers/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "@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=="], + "@astrojs/node/@astrojs/internal-helpers/shiki/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], - "@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=="], + "@astrojs/node/@astrojs/internal-helpers/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ=="], - "@aws-sdk/client-cognito-identity/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/@astrojs/internal-helpers/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg=="], - "@aws-sdk/client-lambda/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/@astrojs/internal-helpers/shiki/@shikijs/langs": ["@shikijs/langs@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ=="], - "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.782.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.775.0", "@aws-sdk/middleware-host-header": "3.775.0", "@aws-sdk/middleware-logger": "3.775.0", "@aws-sdk/middleware-recursion-detection": "3.775.0", "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/region-config-resolver": "3.775.0", "@aws-sdk/types": "3.775.0", "@aws-sdk/util-endpoints": "3.782.0", "@aws-sdk/util-user-agent-browser": "3.775.0", "@aws-sdk/util-user-agent-node": "3.782.0", "@smithy/config-resolver": "^4.1.0", "@smithy/core": "^3.2.0", "@smithy/fetch-http-handler": "^5.0.2", "@smithy/hash-node": "^4.0.2", "@smithy/invalid-dependency": "^4.0.2", "@smithy/middleware-content-length": "^4.0.2", "@smithy/middleware-endpoint": "^4.1.0", "@smithy/middleware-retry": "^4.1.0", "@smithy/middleware-serde": "^4.0.3", "@smithy/middleware-stack": "^4.0.2", "@smithy/node-config-provider": "^4.0.2", "@smithy/node-http-handler": "^4.0.4", "@smithy/protocol-http": "^5.1.0", "@smithy/smithy-client": "^4.2.0", "@smithy/types": "^4.2.0", "@smithy/url-parser": "^4.0.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", "@smithy/util-defaults-mode-browser": "^4.0.8", "@smithy/util-defaults-mode-node": "^4.0.8", "@smithy/util-endpoints": "^3.0.2", "@smithy/util-middleware": "^4.0.2", "@smithy/util-retry": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-QOYC8q7luzHFXrP0xYAqBctoPkynjfV0r9dqntFu4/IWMTyC1vlo1UTxFAjIPyclYw92XJyEkVCVg9v/nQnsUA=="], + "@astrojs/node/@astrojs/internal-helpers/shiki/@shikijs/themes": ["@shikijs/themes@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA=="], - "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.782.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.775.0", "@aws-sdk/middleware-host-header": "3.775.0", "@aws-sdk/middleware-logger": "3.775.0", "@aws-sdk/middleware-recursion-detection": "3.775.0", "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/region-config-resolver": "3.775.0", "@aws-sdk/types": "3.775.0", "@aws-sdk/util-endpoints": "3.782.0", "@aws-sdk/util-user-agent-browser": "3.775.0", "@aws-sdk/util-user-agent-node": "3.782.0", "@smithy/config-resolver": "^4.1.0", "@smithy/core": "^3.2.0", "@smithy/fetch-http-handler": "^5.0.2", "@smithy/hash-node": "^4.0.2", "@smithy/invalid-dependency": "^4.0.2", "@smithy/middleware-content-length": "^4.0.2", "@smithy/middleware-endpoint": "^4.1.0", "@smithy/middleware-retry": "^4.1.0", "@smithy/middleware-serde": "^4.0.3", "@smithy/middleware-stack": "^4.0.2", "@smithy/node-config-provider": "^4.0.2", "@smithy/node-http-handler": "^4.0.4", "@smithy/protocol-http": "^5.1.0", "@smithy/smithy-client": "^4.2.0", "@smithy/types": "^4.2.0", "@smithy/url-parser": "^4.0.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", "@smithy/util-defaults-mode-browser": "^4.0.8", "@smithy/util-defaults-mode-node": "^4.0.8", "@smithy/util-endpoints": "^3.0.2", "@smithy/util-middleware": "^4.0.2", "@smithy/util-retry": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-5GlJBejo8wqMpSSEKb45WE82YxI2k73YuebjLH/eWDNQeE6VI5Bh9lA1YQ7xNkLLH8hIsb0pSfKVuwh0VEzVrg=="], + "@astrojs/node/@astrojs/internal-helpers/shiki/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], - "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.782.0", "", { "dependencies": { "@aws-sdk/nested-clients": "3.782.0", "@aws-sdk/types": "3.775.0", "@smithy/property-provider": "^4.0.2", "@smithy/shared-ini-file-loader": "^4.0.2", "@smithy/types": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-4tPuk/3+THPrzKaXW4jE2R67UyGwHLFizZ47pcjJWbhb78IIJAy94vbeqEQ+veS84KF5TXcU7g5jGTXC0D70Wg=="], + "@astrojs/node/astro/@astrojs/telemetry/is-docker": ["is-docker@4.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA=="], - "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.782.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.775.0", "@aws-sdk/middleware-host-header": "3.775.0", "@aws-sdk/middleware-logger": "3.775.0", "@aws-sdk/middleware-recursion-detection": "3.775.0", "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/region-config-resolver": "3.775.0", "@aws-sdk/types": "3.775.0", "@aws-sdk/util-endpoints": "3.782.0", "@aws-sdk/util-user-agent-browser": "3.775.0", "@aws-sdk/util-user-agent-node": "3.782.0", "@smithy/config-resolver": "^4.1.0", "@smithy/core": "^3.2.0", "@smithy/fetch-http-handler": "^5.0.2", "@smithy/hash-node": "^4.0.2", "@smithy/invalid-dependency": "^4.0.2", "@smithy/middleware-content-length": "^4.0.2", "@smithy/middleware-endpoint": "^4.1.0", "@smithy/middleware-retry": "^4.1.0", "@smithy/middleware-serde": "^4.0.3", "@smithy/middleware-stack": "^4.0.2", "@smithy/node-config-provider": "^4.0.2", "@smithy/node-http-handler": "^4.0.4", "@smithy/protocol-http": "^5.1.0", "@smithy/smithy-client": "^4.2.0", "@smithy/types": "^4.2.0", "@smithy/url-parser": "^4.0.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", "@smithy/util-defaults-mode-browser": "^4.0.8", "@smithy/util-defaults-mode-node": "^4.0.8", "@smithy/util-endpoints": "^3.0.2", "@smithy/util-middleware": "^4.0.2", "@smithy/util-retry": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-QOYC8q7luzHFXrP0xYAqBctoPkynjfV0r9dqntFu4/IWMTyC1vlo1UTxFAjIPyclYw92XJyEkVCVg9v/nQnsUA=="], + "@astrojs/node/astro/@clack/prompts/@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], - "@aws-sdk/credential-provider-env/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/astro/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], - "@aws-sdk/credential-provider-http/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/astro/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], - "@aws-sdk/credential-provider-ini/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/astro/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], - "@aws-sdk/credential-provider-login/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/astro/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], - "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@astrojs/node/astro/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], - "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.933.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.932.0", "@aws-sdk/middleware-host-header": "3.930.0", "@aws-sdk/middleware-logger": "3.930.0", "@aws-sdk/middleware-recursion-detection": "3.933.0", "@aws-sdk/middleware-user-agent": "3.932.0", "@aws-sdk/region-config-resolver": "3.930.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@aws-sdk/util-user-agent-browser": "3.930.0", "@aws-sdk/util-user-agent-node": "3.932.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.2", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", "@smithy/middleware-endpoint": "^4.3.9", "@smithy/middleware-retry": "^4.4.9", "@smithy/middleware-serde": "^4.2.5", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", "@smithy/smithy-client": "^4.9.5", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.8", "@smithy/util-defaults-mode-node": "^4.2.11", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-o1GX0+IPlFi/D8ei9y/jj3yucJWNfPnbB5appVBWevAyUdZA5KzQ2nK/hDxiu9olTZlFEFpf1m1Rn3FaGxHqsw=="], + "@astrojs/node/astro/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], - "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@astrojs/node/astro/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], - "@aws-sdk/credential-provider-process/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/astro/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], - "@aws-sdk/credential-provider-sso/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/astro/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], - "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/astro/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], - "@aws-sdk/credential-providers/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/astro/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], - "@aws-sdk/nested-clients/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/astro/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], - "@aws-sdk/token-providers/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser": ["fast-xml-parser@5.7.3", "", { "dependencies": { "@nodable/entities": "^2.1.0", "fast-xml-builder": "^1.1.7", "path-expression-matcher": "^1.5.0", "strnum": "^2.2.3" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg=="], + "@astrojs/node/astro/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], - "@electron/asar/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@astrojs/node/astro/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], - "@electron/universal/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@astrojs/node/astro/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], - "@jsx-email/cli/tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "@astrojs/node/astro/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], - "@jsx-email/cli/tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + "@astrojs/node/astro/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], - "@jsx-email/cli/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.18.20", "", { "os": "android", "cpu": "arm" }, "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw=="], + "@astrojs/node/astro/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], - "@jsx-email/cli/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.18.20", "", { "os": "android", "cpu": "arm64" }, "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ=="], + "@astrojs/node/astro/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], - "@jsx-email/cli/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.18.20", "", { "os": "android", "cpu": "x64" }, "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg=="], + "@astrojs/node/astro/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], - "@jsx-email/cli/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.18.20", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA=="], + "@astrojs/node/astro/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], - "@jsx-email/cli/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.18.20", "", { "os": "darwin", "cpu": "x64" }, "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ=="], + "@astrojs/node/astro/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], - "@jsx-email/cli/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.18.20", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw=="], + "@astrojs/node/astro/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], - "@jsx-email/cli/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.18.20", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ=="], + "@astrojs/node/astro/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], - "@jsx-email/cli/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.18.20", "", { "os": "linux", "cpu": "arm" }, "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg=="], + "@astrojs/node/astro/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], - "@jsx-email/cli/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.18.20", "", { "os": "linux", "cpu": "arm64" }, "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA=="], + "@astrojs/node/astro/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], - "@jsx-email/cli/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.18.20", "", { "os": "linux", "cpu": "ia32" }, "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA=="], + "@astrojs/node/astro/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "@jsx-email/cli/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg=="], + "@astrojs/node/astro/p-queue/p-timeout": ["p-timeout@7.0.1", "", {}, "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg=="], - "@jsx-email/cli/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ=="], + "@astrojs/node/astro/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], - "@jsx-email/cli/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.18.20", "", { "os": "linux", "cpu": "ppc64" }, "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA=="], + "@astrojs/node/astro/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], - "@jsx-email/cli/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A=="], + "@astrojs/node/astro/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], - "@jsx-email/cli/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.18.20", "", { "os": "linux", "cpu": "s390x" }, "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ=="], + "@astrojs/node/astro/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], - "@jsx-email/cli/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.18.20", "", { "os": "linux", "cpu": "x64" }, "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w=="], + "@astrojs/node/astro/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], - "@jsx-email/cli/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.18.20", "", { "os": "none", "cpu": "x64" }, "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A=="], + "@astrojs/node/astro/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], - "@jsx-email/cli/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.18.20", "", { "os": "openbsd", "cpu": "x64" }, "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg=="], + "@astrojs/node/astro/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], - "@jsx-email/cli/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.18.20", "", { "os": "sunos", "cpu": "x64" }, "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ=="], + "@astrojs/node/astro/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], - "@jsx-email/cli/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.18.20", "", { "os": "win32", "cpu": "arm64" }, "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg=="], + "@astrojs/node/astro/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], - "@jsx-email/cli/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.18.20", "", { "os": "win32", "cpu": "ia32" }, "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g=="], + "@astrojs/node/astro/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], - "@jsx-email/cli/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.18.20", "", { "os": "win32", "cpu": "x64" }, "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="], + "@astrojs/node/astro/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], - "@modelcontextprotocol/sdk/express/type-is/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + "@astrojs/node/astro/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], - "@modelcontextprotocol/sdk/express/type-is/media-typer": ["media-typer@1.1.0", "", {}, "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw=="], + "@astrojs/node/astro/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], - "@octokit/auth-app/@octokit/request-error/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + "@astrojs/node/astro/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], - "@octokit/auth-app/@octokit/request/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + "@astrojs/node/astro/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], - "@octokit/graphql/@octokit/request/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + "@astrojs/node/astro/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], - "@octokit/plugin-paginate-rest/@octokit/core/@octokit/request/@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], + "@astrojs/node/astro/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], - "@octokit/plugin-paginate-rest/@octokit/core/@octokit/request/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + "@astrojs/node/astro/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], - "@octokit/plugin-paginate-rest/@octokit/core/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + "@astrojs/node/astro/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], - "@octokit/plugin-rest-endpoint-methods/@octokit/core/@octokit/request/@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], + "@astrojs/node/astro/shiki/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], - "@octokit/plugin-rest-endpoint-methods/@octokit/core/@octokit/request/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + "@astrojs/node/astro/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ=="], - "@octokit/plugin-rest-endpoint-methods/@octokit/core/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + "@astrojs/node/astro/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg=="], - "@octokit/rest/@octokit/core/@octokit/request/@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], + "@astrojs/node/astro/shiki/@shikijs/langs": ["@shikijs/langs@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ=="], - "@octokit/rest/@octokit/core/@octokit/request/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + "@astrojs/node/astro/shiki/@shikijs/themes": ["@shikijs/themes@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA=="], - "@octokit/rest/@octokit/core/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + "@astrojs/node/astro/shiki/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], - "@opencode-ai/desktop/@actions/artifact/@actions/http-client/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + "@astrojs/node/astro/unifont/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], - "@sentry/bundler-plugin-core/glob/minimatch/brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], + "@astrojs/node/astro/unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], - "@sentry/bundler-plugin-core/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + "@astrojs/node/astro/unstorage/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], - "@sentry/bundler-plugin-core/glob/path-scurry/minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="], + "@astrojs/node/astro/unstorage/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], - "@slack/web-api/form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + "@astrojs/react/@astrojs/internal-helpers/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], + "@astrojs/react/@astrojs/internal-helpers/shiki/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], - "ai-gateway-provider/@ai-sdk/amazon-bedrock/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/react/@astrojs/internal-helpers/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ=="], - "ai-gateway-provider/@ai-sdk/anthropic/@ai-sdk/provider-utils/@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], + "@astrojs/react/@astrojs/internal-helpers/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg=="], - "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@astrojs/react/@astrojs/internal-helpers/shiki/@shikijs/langs": ["@shikijs/langs@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ=="], - "app-builder-lib/@electron/get/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], + "@astrojs/react/@astrojs/internal-helpers/shiki/@shikijs/themes": ["@shikijs/themes@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA=="], - "archiver-utils/glob/jackspeak/@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + "@astrojs/react/@astrojs/internal-helpers/shiki/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], - "archiver-utils/glob/minimatch/brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], + "@astrojs/react/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], - "archiver-utils/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + "@astrojs/react/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], - "astro/unstorage/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + "@astrojs/react/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], - "astro/unstorage/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], + "@astrojs/react/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], - "astro/unstorage/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + "@astrojs/react/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], - "babel-plugin-module-resolver/glob/minimatch/brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], + "@astrojs/react/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], - "babel-plugin-module-resolver/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + "@astrojs/react/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], - "babel-plugin-module-resolver/glob/path-scurry/minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="], + "@astrojs/react/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], - "dir-compare/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@astrojs/react/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], - "editorconfig/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@astrojs/react/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], - "electron-builder-squirrel-windows/app-builder-lib/@electron/get/env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], + "@astrojs/react/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], - "electron-builder-squirrel-windows/app-builder-lib/@electron/get/fs-extra": ["fs-extra@8.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g=="], + "@astrojs/react/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], - "electron-builder-squirrel-windows/app-builder-lib/@electron/get/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@astrojs/react/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], - "electron-builder-squirrel-windows/app-builder-lib/dmg-builder/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + "@astrojs/react/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], - "electron-builder-squirrel-windows/app-builder-lib/electron-publish/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "@astrojs/react/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], - "electron-builder-squirrel-windows/app-builder-lib/electron-publish/mime": ["mime@2.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg=="], + "@astrojs/react/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], - "electron-builder-squirrel-windows/app-builder-lib/hosted-git-info/lru-cache": ["lru-cache@6.0.0", "", { "dependencies": { "yallist": "^4.0.0" } }, "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA=="], + "@astrojs/react/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], - "electron-builder-squirrel-windows/app-builder-lib/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "@astrojs/react/vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], - "electron-builder-squirrel-windows/app-builder-lib/which/isexe": ["isexe@3.1.5", "", {}, "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w=="], + "@astrojs/react/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], - "electron-builder-squirrel-windows/builder-util/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + "@astrojs/react/vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], - "electron-builder/yargs/cliui/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@astrojs/react/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], - "electron-builder/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=="], + "@astrojs/react/vite/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], - "electron-builder/yargs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "@astrojs/react/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], - "electron-builder/yargs/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@astrojs/react/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], - "esbuild-plugin-copy/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "@astrojs/react/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], - "filelist/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@astrojs/react/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], - "iconv-corefoundation/cli-truncate/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], + "@astrojs/vercel/@astrojs/internal-helpers/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "iconv-corefoundation/cli-truncate/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "@astrojs/vercel/@astrojs/internal-helpers/shiki/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], - "js-beautify/glob/jackspeak/@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + "@astrojs/vercel/@astrojs/internal-helpers/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ=="], - "js-beautify/glob/minimatch/brace-expansion": ["brace-expansion@2.1.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA=="], + "@astrojs/vercel/@astrojs/internal-helpers/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg=="], - "js-beautify/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + "@astrojs/vercel/@astrojs/internal-helpers/shiki/@shikijs/langs": ["@shikijs/langs@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ=="], - "pkg-dir/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + "@astrojs/vercel/@astrojs/internal-helpers/shiki/@shikijs/themes": ["@shikijs/themes@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA=="], - "pkg-up/find-up/locate-path/p-locate": ["p-locate@3.0.0", "", { "dependencies": { "p-limit": "^2.0.0" } }, "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ=="], + "@astrojs/vercel/@astrojs/internal-helpers/shiki/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], - "pkg-up/find-up/locate-path/path-exists": ["path-exists@3.0.0", "", {}, "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="], + "@astrojs/vercel/astro/@astrojs/telemetry/is-docker": ["is-docker@4.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA=="], - "readdir-glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@astrojs/vercel/astro/@clack/prompts/@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], - "rimraf/glob/minimatch/brace-expansion": ["brace-expansion@1.1.15", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg=="], + "@astrojs/vercel/astro/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], - "tw-to-css/tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "@astrojs/vercel/astro/p-queue/p-timeout": ["p-timeout@7.0.1", "", {}, "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg=="], - "tw-to-css/tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + "@astrojs/vercel/astro/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], - "unplugin/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "@astrojs/vercel/astro/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], - "@astrojs/check/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@astrojs/vercel/astro/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], - "@astrojs/check/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@astrojs/vercel/astro/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], - "@aws-sdk/client-cognito-identity/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], - "@aws-sdk/client-lambda/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], - "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.782.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.775.0", "@aws-sdk/middleware-host-header": "3.775.0", "@aws-sdk/middleware-logger": "3.775.0", "@aws-sdk/middleware-recursion-detection": "3.775.0", "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/region-config-resolver": "3.775.0", "@aws-sdk/types": "3.775.0", "@aws-sdk/util-endpoints": "3.782.0", "@aws-sdk/util-user-agent-browser": "3.775.0", "@aws-sdk/util-user-agent-node": "3.782.0", "@smithy/config-resolver": "^4.1.0", "@smithy/core": "^3.2.0", "@smithy/fetch-http-handler": "^5.0.2", "@smithy/hash-node": "^4.0.2", "@smithy/invalid-dependency": "^4.0.2", "@smithy/middleware-content-length": "^4.0.2", "@smithy/middleware-endpoint": "^4.1.0", "@smithy/middleware-retry": "^4.1.0", "@smithy/middleware-serde": "^4.0.3", "@smithy/middleware-stack": "^4.0.2", "@smithy/node-config-provider": "^4.0.2", "@smithy/node-http-handler": "^4.0.4", "@smithy/protocol-http": "^5.1.0", "@smithy/smithy-client": "^4.2.0", "@smithy/types": "^4.2.0", "@smithy/url-parser": "^4.0.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", "@smithy/util-defaults-mode-browser": "^4.0.8", "@smithy/util-defaults-mode-node": "^4.0.8", "@smithy/util-endpoints": "^3.0.2", "@smithy/util-middleware": "^4.0.2", "@smithy/util-retry": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-QOYC8q7luzHFXrP0xYAqBctoPkynjfV0r9dqntFu4/IWMTyC1vlo1UTxFAjIPyclYw92XJyEkVCVg9v/nQnsUA=="], + "@astrojs/vercel/astro/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], - "@aws-sdk/credential-provider-env/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], - "@aws-sdk/credential-provider-http/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], - "@aws-sdk/credential-provider-ini/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], - "@aws-sdk/credential-provider-login/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], - "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers/@aws-sdk/nested-clients/@smithy/util-utf8": ["@smithy/util-utf8@4.2.2", "", { "dependencies": { "@smithy/util-buffer-from": "^4.2.2", "tslib": "^2.6.2" } }, "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw=="], + "@astrojs/vercel/astro/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], - "@aws-sdk/credential-provider-process/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], - "@aws-sdk/credential-provider-sso/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], - "@aws-sdk/credential-provider-web-identity/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], - "@aws-sdk/credential-providers/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], - "@aws-sdk/nested-clients/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], - "@aws-sdk/token-providers/@aws-sdk/core/@aws-sdk/xml-builder/fast-xml-parser/strnum": ["strnum@2.3.0", "", {}, "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q=="], + "@astrojs/vercel/astro/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], - "@jsx-email/cli/tailwindcss/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "@astrojs/vercel/astro/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], - "@sentry/bundler-plugin-core/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@astrojs/vercel/astro/shiki/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], - "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], + "@astrojs/vercel/astro/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ=="], - "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], + "@astrojs/vercel/astro/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg=="], - "archiver-utils/glob/jackspeak/@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + "@astrojs/vercel/astro/shiki/@shikijs/langs": ["@shikijs/langs@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ=="], - "archiver-utils/glob/jackspeak/@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + "@astrojs/vercel/astro/shiki/@shikijs/themes": ["@shikijs/themes@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA=="], - "archiver-utils/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@astrojs/vercel/astro/shiki/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], - "babel-plugin-module-resolver/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@astrojs/vercel/astro/unifont/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], - "electron-builder-squirrel-windows/app-builder-lib/@electron/get/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], + "@astrojs/vercel/astro/unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], - "electron-builder/yargs/cliui/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@astrojs/vercel/astro/unstorage/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], - "electron-builder/yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@astrojs/vercel/astro/unstorage/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], - "iconv-corefoundation/cli-truncate/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + "@aws-crypto/sha1-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=="], - "js-beautify/glob/jackspeak/@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + "@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=="], - "js-beautify/glob/jackspeak/@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + "@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=="], - "js-beautify/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-ini/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.782.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.775.0", "@aws-sdk/middleware-host-header": "3.775.0", "@aws-sdk/middleware-logger": "3.775.0", "@aws-sdk/middleware-recursion-detection": "3.775.0", "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/region-config-resolver": "3.775.0", "@aws-sdk/types": "3.775.0", "@aws-sdk/util-endpoints": "3.782.0", "@aws-sdk/util-user-agent-browser": "3.775.0", "@aws-sdk/util-user-agent-node": "3.782.0", "@smithy/config-resolver": "^4.1.0", "@smithy/core": "^3.2.0", "@smithy/fetch-http-handler": "^5.0.2", "@smithy/hash-node": "^4.0.2", "@smithy/invalid-dependency": "^4.0.2", "@smithy/middleware-content-length": "^4.0.2", "@smithy/middleware-endpoint": "^4.1.0", "@smithy/middleware-retry": "^4.1.0", "@smithy/middleware-serde": "^4.0.3", "@smithy/middleware-stack": "^4.0.2", "@smithy/node-config-provider": "^4.0.2", "@smithy/node-http-handler": "^4.0.4", "@smithy/protocol-http": "^5.1.0", "@smithy/smithy-client": "^4.2.0", "@smithy/types": "^4.2.0", "@smithy/url-parser": "^4.0.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", "@smithy/util-defaults-mode-browser": "^4.0.8", "@smithy/util-defaults-mode-node": "^4.0.8", "@smithy/util-endpoints": "^3.0.2", "@smithy/util-middleware": "^4.0.2", "@smithy/util-retry": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-QOYC8q7luzHFXrP0xYAqBctoPkynjfV0r9dqntFu4/IWMTyC1vlo1UTxFAjIPyclYw92XJyEkVCVg9v/nQnsUA=="], - "pkg-dir/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/client-sso": ["@aws-sdk/client-sso@3.782.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.775.0", "@aws-sdk/middleware-host-header": "3.775.0", "@aws-sdk/middleware-logger": "3.775.0", "@aws-sdk/middleware-recursion-detection": "3.775.0", "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/region-config-resolver": "3.775.0", "@aws-sdk/types": "3.775.0", "@aws-sdk/util-endpoints": "3.782.0", "@aws-sdk/util-user-agent-browser": "3.775.0", "@aws-sdk/util-user-agent-node": "3.782.0", "@smithy/config-resolver": "^4.1.0", "@smithy/core": "^3.2.0", "@smithy/fetch-http-handler": "^5.0.2", "@smithy/hash-node": "^4.0.2", "@smithy/invalid-dependency": "^4.0.2", "@smithy/middleware-content-length": "^4.0.2", "@smithy/middleware-endpoint": "^4.1.0", "@smithy/middleware-retry": "^4.1.0", "@smithy/middleware-serde": "^4.0.3", "@smithy/middleware-stack": "^4.0.2", "@smithy/node-config-provider": "^4.0.2", "@smithy/node-http-handler": "^4.0.4", "@smithy/protocol-http": "^5.1.0", "@smithy/smithy-client": "^4.2.0", "@smithy/types": "^4.2.0", "@smithy/url-parser": "^4.0.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", "@smithy/util-defaults-mode-browser": "^4.0.8", "@smithy/util-defaults-mode-node": "^4.0.8", "@smithy/util-endpoints": "^3.0.2", "@smithy/util-middleware": "^4.0.2", "@smithy/util-retry": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-5GlJBejo8wqMpSSEKb45WE82YxI2k73YuebjLH/eWDNQeE6VI5Bh9lA1YQ7xNkLLH8hIsb0pSfKVuwh0VEzVrg=="], - "pkg-up/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.782.0", "", { "dependencies": { "@aws-sdk/nested-clients": "3.782.0", "@aws-sdk/types": "3.775.0", "@smithy/property-provider": "^4.0.2", "@smithy/shared-ini-file-loader": "^4.0.2", "@smithy/types": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-4tPuk/3+THPrzKaXW4jE2R67UyGwHLFizZ47pcjJWbhb78IIJAy94vbeqEQ+veS84KF5TXcU7g5jGTXC0D70Wg=="], - "rimraf/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-web-identity/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.782.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.775.0", "@aws-sdk/middleware-host-header": "3.775.0", "@aws-sdk/middleware-logger": "3.775.0", "@aws-sdk/middleware-recursion-detection": "3.775.0", "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/region-config-resolver": "3.775.0", "@aws-sdk/types": "3.775.0", "@aws-sdk/util-endpoints": "3.782.0", "@aws-sdk/util-user-agent-browser": "3.775.0", "@aws-sdk/util-user-agent-node": "3.782.0", "@smithy/config-resolver": "^4.1.0", "@smithy/core": "^3.2.0", "@smithy/fetch-http-handler": "^5.0.2", "@smithy/hash-node": "^4.0.2", "@smithy/invalid-dependency": "^4.0.2", "@smithy/middleware-content-length": "^4.0.2", "@smithy/middleware-endpoint": "^4.1.0", "@smithy/middleware-retry": "^4.1.0", "@smithy/middleware-serde": "^4.0.3", "@smithy/middleware-stack": "^4.0.2", "@smithy/node-config-provider": "^4.0.2", "@smithy/node-http-handler": "^4.0.4", "@smithy/protocol-http": "^5.1.0", "@smithy/smithy-client": "^4.2.0", "@smithy/types": "^4.2.0", "@smithy/url-parser": "^4.0.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", "@smithy/util-defaults-mode-browser": "^4.0.8", "@smithy/util-defaults-mode-node": "^4.0.8", "@smithy/util-endpoints": "^3.0.2", "@smithy/util-middleware": "^4.0.2", "@smithy/util-retry": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-QOYC8q7luzHFXrP0xYAqBctoPkynjfV0r9dqntFu4/IWMTyC1vlo1UTxFAjIPyclYw92XJyEkVCVg9v/nQnsUA=="], - "tw-to-css/tailwindcss/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + "@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.933.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.932.0", "@aws-sdk/middleware-host-header": "3.930.0", "@aws-sdk/middleware-logger": "3.930.0", "@aws-sdk/middleware-recursion-detection": "3.933.0", "@aws-sdk/middleware-user-agent": "3.932.0", "@aws-sdk/region-config-resolver": "3.930.0", "@aws-sdk/types": "3.930.0", "@aws-sdk/util-endpoints": "3.930.0", "@aws-sdk/util-user-agent-browser": "3.930.0", "@aws-sdk/util-user-agent-node": "3.932.0", "@smithy/config-resolver": "^4.4.3", "@smithy/core": "^3.18.2", "@smithy/fetch-http-handler": "^5.3.6", "@smithy/hash-node": "^4.2.5", "@smithy/invalid-dependency": "^4.2.5", "@smithy/middleware-content-length": "^4.2.5", "@smithy/middleware-endpoint": "^4.3.9", "@smithy/middleware-retry": "^4.4.9", "@smithy/middleware-serde": "^4.2.5", "@smithy/middleware-stack": "^4.2.5", "@smithy/node-config-provider": "^4.3.5", "@smithy/node-http-handler": "^4.4.5", "@smithy/protocol-http": "^5.3.5", "@smithy/smithy-client": "^4.9.5", "@smithy/types": "^4.9.0", "@smithy/url-parser": "^4.2.5", "@smithy/util-base64": "^4.3.0", "@smithy/util-body-length-browser": "^4.2.0", "@smithy/util-body-length-node": "^4.2.1", "@smithy/util-defaults-mode-browser": "^4.3.8", "@smithy/util-defaults-mode-node": "^4.2.11", "@smithy/util-endpoints": "^3.2.5", "@smithy/util-middleware": "^4.2.5", "@smithy/util-retry": "^4.2.5", "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" } }, "sha512-o1GX0+IPlFi/D8ei9y/jj3yucJWNfPnbB5appVBWevAyUdZA5KzQ2nK/hDxiu9olTZlFEFpf1m1Rn3FaGxHqsw=="], - "archiver-utils/glob/jackspeak/@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + "@electron/asar/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "archiver-utils/glob/jackspeak/@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "@electron/universal/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], - "js-beautify/glob/jackspeak/@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + "@jsx-email/cli/tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], - "js-beautify/glob/jackspeak/@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "@jsx-email/cli/tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.18.20", "", { "os": "android", "cpu": "arm" }, "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.18.20", "", { "os": "android", "cpu": "arm64" }, "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.18.20", "", { "os": "android", "cpu": "x64" }, "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.18.20", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.18.20", "", { "os": "darwin", "cpu": "x64" }, "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.18.20", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.18.20", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.18.20", "", { "os": "linux", "cpu": "arm" }, "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.18.20", "", { "os": "linux", "cpu": "arm64" }, "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.18.20", "", { "os": "linux", "cpu": "ia32" }, "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.18.20", "", { "os": "linux", "cpu": "ppc64" }, "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.18.20", "", { "os": "linux", "cpu": "s390x" }, "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.18.20", "", { "os": "linux", "cpu": "x64" }, "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.18.20", "", { "os": "none", "cpu": "x64" }, "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.18.20", "", { "os": "openbsd", "cpu": "x64" }, "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.18.20", "", { "os": "sunos", "cpu": "x64" }, "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.18.20", "", { "os": "win32", "cpu": "arm64" }, "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.18.20", "", { "os": "win32", "cpu": "ia32" }, "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g=="], + + "@jsx-email/cli/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.18.20", "", { "os": "win32", "cpu": "x64" }, "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="], + + "@octokit/auth-app/@octokit/request-error/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + + "@octokit/auth-app/@octokit/request/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + + "@octokit/plugin-paginate-rest/@octokit/core/@octokit/request/@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], + + "@octokit/plugin-paginate-rest/@octokit/core/@octokit/request/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + + "@octokit/plugin-paginate-rest/@octokit/core/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + + "@octokit/plugin-rest-endpoint-methods/@octokit/core/@octokit/request/@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], + + "@octokit/plugin-rest-endpoint-methods/@octokit/core/@octokit/request/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + + "@octokit/plugin-rest-endpoint-methods/@octokit/core/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + + "@octokit/rest/@octokit/core/@octokit/request/@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], + + "@octokit/rest/@octokit/core/@octokit/request/content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + + "@octokit/rest/@octokit/core/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + + "@opencode-ai/desktop/@actions/artifact/@actions/core/@actions/exec": ["@actions/exec@1.1.1", "", { "dependencies": { "@actions/io": "^1.0.1" } }, "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w=="], + + "@opencode-ai/desktop/@actions/artifact/@actions/http-client/undici": ["undici@5.29.0", "", { "dependencies": { "@fastify/busboy": "^2.0.0" } }, "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@opencode-ai/updates/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + + "@opencode-ai/updates/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="], + + "@opencode-ai/updates/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="], + + "@opencode-ai/updates/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="], + + "@opencode-ai/updates/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="], + + "@opencode-ai/updates/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="], + + "@opencode-ai/updates/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers/js-yaml": ["js-yaml@4.3.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers/shiki": ["shiki@4.3.1", "", { "dependencies": { "@shikijs/core": "4.3.1", "@shikijs/engine-javascript": "4.3.1", "@shikijs/engine-oniguruma": "4.3.1", "@shikijs/langs": "4.3.1", "@shikijs/themes": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare": ["miniflare@4.20260714.0", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "sharp": "0.34.5", "undici": "7.28.0", "workerd": "1.20260714.1", "ws": "8.21.0", "youch": "4.1.0-beta.10" }, "bin": { "miniflare": "bootstrap.js" } }, "sha512-MYlTCLdWCPqvrYY2uLwOjXwmglXuiHE3TGGkbOW4BwjUPa1r07E0iuHwrNDIs/sxK21r+o90Jx58AV2KeNdJZw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/workerd": ["workerd@1.20260714.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260714.1", "@cloudflare/workerd-darwin-arm64": "1.20260714.1", "@cloudflare/workerd-linux-64": "1.20260714.1", "@cloudflare/workerd-linux-arm64": "1.20260714.1", "@cloudflare/workerd-windows-64": "1.20260714.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-oIbQzfdyl9UQUnG6XLegcSq0Mgt/7WKDbFOoqGgOWCS+/fhyGB460uKEgdAQQ9RHCO/ttcNCX/KiMIQzdoeu3Q=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler": ["wrangler@4.112.0", "", { "dependencies": { "@cloudflare/kv-asset-handler": "0.5.0", "@cloudflare/unenv-preset": "2.16.1", "blake3-wasm": "2.1.5", "esbuild": "0.28.1", "miniflare": "4.20260714.0", "path-to-regexp": "6.3.0", "unenv": "2.0.0-rc.24", "workerd": "1.20260714.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "peerDependencies": { "@cloudflare/workers-types": "^5.20260714.1" }, "optionalPeers": ["@cloudflare/workers-types"], "bin": { "wrangler": "bin/wrangler.js", "wrangler2": "bin/wrangler.js", "cf-wrangler": "bin/cf-wrangler.js" } }, "sha512-5H+XUD0TySCv1LuktFHDIEOkboH2nTfQs+35L+USt3MtntjDTMVIJprLgQcL2WBjulOyjxpd1vyTiSTJVW5MjQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + + "@opencode-ai/www/astro/@astrojs/telemetry/is-docker": ["is-docker@4.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA=="], + + "@opencode-ai/www/astro/@clack/prompts/@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@opencode-ai/www/astro/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "@opencode-ai/www/astro/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "@opencode-ai/www/astro/p-queue/p-timeout": ["p-timeout@7.0.1", "", {}, "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + + "@opencode-ai/www/astro/shiki/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], + + "@opencode-ai/www/astro/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ=="], + + "@opencode-ai/www/astro/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg=="], + + "@opencode-ai/www/astro/shiki/@shikijs/langs": ["@shikijs/langs@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ=="], + + "@opencode-ai/www/astro/shiki/@shikijs/themes": ["@shikijs/themes@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA=="], + + "@opencode-ai/www/astro/shiki/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], + + "@opencode-ai/www/astro/unifont/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], + + "@opencode-ai/www/astro/unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], + + "@opencode-ai/www/astro/unstorage/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], + + "@opencode-ai/www/astro/unstorage/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@opencode-ai/www/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "@opencode-ai/www/wrangler/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + + "@opencode-ai/www/wrangler/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="], + + "@opencode-ai/www/wrangler/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260708.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-HXFCvhS1wpg3uXO0CLUwmwC41i2loM5FSK69EUchOBpmYBAXxT1oHLm6EOA5lqhTk5Mu9kjRiQYxa1GwKPwfJg=="], + + "@opencode-ai/www/wrangler/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260708.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-JVlJaKDoRTVKSroHIlf8g3UCPjKj4iDbMZE2CNYht5qQ+2rL0FAUiVlV82G3BqKnnw9kHYnnsMzC08b9zVtdzA=="], + + "@opencode-ai/www/wrangler/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260708.1", "", { "os": "linux", "cpu": "x64" }, "sha512-3daE60YdD7YX0Jtuzc9DE/r/qMkmx8ZvHTkF8Mzmp3F5tbzlV0DAzmu5PFUPF2WuvtKbAhZKbvC2cHmWpQYxnA=="], + + "@opencode-ai/www/wrangler/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260708.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-VLdNYOx5Hj+9C6isy0ACWZsbMtSxex2DIJWEe7cZxUdlphZ58ZT8zxNXK8yunFiowd34hn3VwGMopdvdj8lvmA=="], + + "@opencode-ai/www/wrangler/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260708.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bC/aSAwLy16Vjo24i9XU3aWH+eRgz7NeR5xPKavGbembO18ZywYTQbXh14eXtY6fAqN3RzRG8psijTdhX4xydA=="], + + "@sentry/bundler-plugin-core/glob/minimatch/brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], + + "@sentry/bundler-plugin-core/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "@sentry/bundler-plugin-core/glob/path-scurry/minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="], + + "@slack/bolt/express/accepts/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "@slack/bolt/express/accepts/negotiator": ["negotiator@0.6.3", "", {}, "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg=="], + + "@slack/bolt/express/body-parser/iconv-lite": ["iconv-lite@0.4.24", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3" } }, "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA=="], + + "@slack/bolt/express/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="], + + "@slack/bolt/express/send/mime": ["mime@1.6.0", "", { "bin": { "mime": "cli.js" } }, "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="], + + "@slack/bolt/express/type-is/media-typer": ["media-typer@0.3.0", "", {}, "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="], + + "@slack/bolt/express/type-is/mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], + + "@slack/web-api/form-data/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es": ["oniguruma-to-es@2.3.0", "", { "dependencies": { "emoji-regex-xs": "^1.0.0", "regex": "^5.1.1", "regex-recursion": "^5.1.1" } }, "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g=="], + + "@vercel/cli-exec/execa/onetime/mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], + + "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "app-builder-lib/@electron/get/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], + + "archiver-utils/glob/jackspeak/@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + + "archiver-utils/glob/minimatch/brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], + + "archiver-utils/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "astro/unstorage/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + + "astro/unstorage/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], + + "astro/unstorage/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + + "babel-plugin-module-resolver/glob/minimatch/brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], + + "babel-plugin-module-resolver/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "babel-plugin-module-resolver/glob/path-scurry/minipass": ["minipass@7.1.3", "", {}, "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A=="], + + "blume/@astrojs/mdx/@astrojs/markdown-remark/@astrojs/prism": ["@astrojs/prism@4.0.2", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-KTivpmnz6lDsC6o9H4+DNm2SrE/GHzw8cNAvEJwAvUT+eoaEnn/4NtbDNfRRaxaJHdp15gf+tfHAWiXR4wB3BA=="], + + "blume/@shikijs/transformers/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "blume/@tailwindcss/vite/@tailwindcss/node/enhanced-resolve": ["enhanced-resolve@5.21.6", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-aNnGCvbJ/RIyWo1IuhNdVjnNF+EjH9wpzpNHt+ci/m9He9LJvUN8wrCcXjp9cWsGNAuvSpVFTx/vraAFQ8qGjQ=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.3.2", "", { "os": "android", "cpu": "arm64" }, "sha512-WHxqIuHpvZ5VtdX6GTl1Ik/Vp2YuN42Et+0CdeaVd/frQ9jAvGmvR8vLT+jk3e8/Q3x8kECB9+R17pgpp2BulA=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.3.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-GZypeUY/IDJW3877KeM+O67vbXr3MBnbtEL4aYhNErv/JWZhye2vGSWWG9tB6iiqR2MqRNkY8IOUy4NdSZV26w=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.3.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-UIIzmefR6KO1sDU7MzRqAxC8iBpft/VhkGjTjnhoS6k7Z3rQ9wEgA1ODSiyH/tcSYssulNm4Ci3hOeK1jH7ccQ=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.3.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-GN+uAmcI6DNspnCDwtOAZrTz6oukJnp337qZvxqCGLd3BHBzJpO0ZbTLRvJNdztOeAmTzewewGIMPb0tk2R4WA=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.3.2", "", { "os": "linux", "cpu": "arm" }, "sha512-4ABn7qSbdHRwTiDiuWNegCyb5+2FJ4vKIKc3DmKrvAFw7MU1Lm11dIkTPwUaFdTzc7IsOpDbqBrlh0x6y36U/w=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.3.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-wDgEIGwoM8w8pufh9LVt1PahDgNdKXrLC2qfAnV3vAmococ9RWbxeAw4pxPttd/TsJfwjyLf90Dg1y9y8I6Emw=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.3.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-J5Nuk0uZQIiMTJj3LEx4sAA9tMFUoXQZFv1J6An+QGYe53HKRJuFDi0rpq/tuouCZeAbOBY3kQ6g8qeD4TUjtA=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.3.2", "", { "os": "linux", "cpu": "x64" }, "sha512-kqCZpSKOBEJO4mz7OqWoofBZeXTAwaVGPj0ErAj7CojmhKpWVWVOnrt9dE8odoIraZq4oj3ausM37kXi+Tow8w=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.3.2", "", { "os": "linux", "cpu": "x64" }, "sha512-cixpqbh2toJDmkuCRI68nXA8ZxNmdK9Y+9v5h3MC3ZQKy/0BO8AWzlkWyRM7JAFSGBlfig4YVTPsK6MVgqz1uw=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.3.2", "", { "dependencies": { "@emnapi/core": "^1.11.1", "@emnapi/runtime": "^1.11.1", "@emnapi/wasi-threads": "^1.2.2", "@napi-rs/wasm-runtime": "^1.1.4", "@tybys/wasm-util": "^0.10.2", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-4ec2Z/LOmRsAgU23CS4xeJfcJlmRg94A/XrbGRCF1gyU/zdDfRLYDVsS+ynSZCmGNxQ1jQriQOKMQeQxBA3Isw=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.3.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-Zyr/M0+XcYZu3bZrUytc7TXvrk0ftWfl8gN2MwekNDzhqhKRUucMPSeOzM0o0wH5AWOU49BsKRrfKxI2atCPMQ=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.3.2", "", { "os": "win32", "cpu": "x64" }, "sha512-QI9BO7KlNZsp2GuO0jwAAj5jCDABOKXRkCk2XuKTSaNEFSdfzqswYVTtCHBNKHLsqyjFyFkqlDiwkNbTYSssMQ=="], + + "blume/ai/@ai-sdk/gateway/@vercel/oidc": ["@vercel/oidc@3.1.0", "", {}, "sha512-Fw28YZpRnA3cAHHDlkt7xQHiJ0fcL+NRcIqsocZQUSmbzeIKRpwttJjik5ZGanXP+vlA4SbTg+AbA3bP363l+w=="], + + "blume/astro/@astrojs/telemetry/is-docker": ["is-docker@4.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA=="], + + "blume/astro/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "blume/astro/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "blume/astro/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "blume/astro/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "blume/astro/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "blume/astro/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "blume/astro/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "blume/astro/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "blume/astro/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "blume/astro/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "blume/astro/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "blume/astro/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "blume/astro/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "blume/astro/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "blume/astro/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "blume/astro/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "blume/astro/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "blume/astro/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "blume/astro/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "blume/astro/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "blume/astro/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "blume/astro/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "blume/astro/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "blume/astro/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "blume/astro/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "blume/astro/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "blume/astro/p-queue/p-timeout": ["p-timeout@7.0.1", "", {}, "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg=="], + + "blume/astro/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + + "blume/astro/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + + "blume/astro/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + + "blume/astro/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + + "blume/astro/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + + "blume/astro/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + + "blume/astro/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + + "blume/astro/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + + "blume/astro/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + + "blume/astro/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + + "blume/astro/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + + "blume/astro/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + + "blume/astro/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + + "blume/astro/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + + "blume/astro/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + + "blume/astro/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + + "blume/astro/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "blume/astro/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "blume/astro/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + + "blume/astro/unifont/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], + + "blume/astro/unstorage/chokidar": ["chokidar@5.0.0", "", { "dependencies": { "readdirp": "^5.0.0" } }, "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw=="], + + "blume/astro/unstorage/h3": ["h3@1.15.11", "", { "dependencies": { "cookie-es": "^1.2.3", "crossws": "^0.3.5", "defu": "^6.1.6", "destr": "^2.0.5", "iron-webcrypto": "^1.2.1", "node-mock-http": "^1.0.4", "radix3": "^1.1.2", "ufo": "^1.6.3", "uncrypto": "^0.1.3" } }, "sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg=="], + + "blume/astro/unstorage/ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], + + "blume/shiki/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "dir-compare/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "editorconfig/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "esbuild-plugin-copy/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + + "filelist/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "js-beautify/glob/jackspeak/@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + + "js-beautify/glob/minimatch/brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], + + "js-beautify/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "pkg-dir/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], + + "pkg-up/find-up/locate-path/p-locate": ["p-locate@3.0.0", "", { "dependencies": { "p-limit": "^2.0.0" } }, "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ=="], + + "pkg-up/find-up/locate-path/path-exists": ["path-exists@3.0.0", "", {}, "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ=="], + + "readdir-glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "rimraf/glob/jackspeak/@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], + + "rimraf/glob/minimatch/brace-expansion": ["brace-expansion@2.1.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-w5JZcKgdhDOgOwm8H+KgbosopHMuGcl6qbulwjtz3SM7I7P3yW1eAjzMPLrIE+NQ9vjgANKHWeMHnrT0OXW1oA=="], + + "rimraf/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], + + "temp/rimraf/glob/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="], + + "tw-to-css/tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + + "tw-to-css/tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + + "unplugin/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + + "vitest/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "vitest/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "vitest/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "vitest/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "vitest/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "vitest/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "vitest/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "vitest/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "vitest/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "vitest/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "vitest/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "vitest/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "vitest/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "vitest/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "vitest/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "vitest/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "vitest/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "vitest/vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "vitest/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "vitest/vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "vitest/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "vitest/vite/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "vitest/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "vitest/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "vitest/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "vitest/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "yargs/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + + "@astrojs/markdown-satteri/@astrojs/internal-helpers/shiki/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "@astrojs/node/@astrojs/internal-helpers/shiki/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "@astrojs/node/astro/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], + + "@astrojs/node/astro/shiki/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "@astrojs/node/astro/unstorage/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + + "@astrojs/node/astro/unstorage/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], + + "@astrojs/node/astro/unstorage/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + + "@astrojs/react/@astrojs/internal-helpers/shiki/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "@astrojs/vercel/@astrojs/internal-helpers/shiki/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "@astrojs/vercel/astro/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], + + "@astrojs/vercel/astro/shiki/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "@astrojs/vercel/astro/unstorage/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + + "@astrojs/vercel/astro/unstorage/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], + + "@astrojs/vercel/astro/unstorage/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + + "@aws-sdk/client-sts/@aws-sdk/credential-provider-node/@aws-sdk/credential-provider-sso/@aws-sdk/token-providers/@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.782.0", "", { "dependencies": { "@aws-crypto/sha256-browser": "5.2.0", "@aws-crypto/sha256-js": "5.2.0", "@aws-sdk/core": "3.775.0", "@aws-sdk/middleware-host-header": "3.775.0", "@aws-sdk/middleware-logger": "3.775.0", "@aws-sdk/middleware-recursion-detection": "3.775.0", "@aws-sdk/middleware-user-agent": "3.782.0", "@aws-sdk/region-config-resolver": "3.775.0", "@aws-sdk/types": "3.775.0", "@aws-sdk/util-endpoints": "3.782.0", "@aws-sdk/util-user-agent-browser": "3.775.0", "@aws-sdk/util-user-agent-node": "3.782.0", "@smithy/config-resolver": "^4.1.0", "@smithy/core": "^3.2.0", "@smithy/fetch-http-handler": "^5.0.2", "@smithy/hash-node": "^4.0.2", "@smithy/invalid-dependency": "^4.0.2", "@smithy/middleware-content-length": "^4.0.2", "@smithy/middleware-endpoint": "^4.1.0", "@smithy/middleware-retry": "^4.1.0", "@smithy/middleware-serde": "^4.0.3", "@smithy/middleware-stack": "^4.0.2", "@smithy/node-config-provider": "^4.0.2", "@smithy/node-http-handler": "^4.0.4", "@smithy/protocol-http": "^5.1.0", "@smithy/smithy-client": "^4.2.0", "@smithy/types": "^4.2.0", "@smithy/url-parser": "^4.0.2", "@smithy/util-base64": "^4.0.0", "@smithy/util-body-length-browser": "^4.0.0", "@smithy/util-body-length-node": "^4.0.0", "@smithy/util-defaults-mode-browser": "^4.0.8", "@smithy/util-defaults-mode-node": "^4.0.8", "@smithy/util-endpoints": "^3.0.2", "@smithy/util-middleware": "^4.0.2", "@smithy/util-retry": "^4.0.2", "@smithy/util-utf8": "^4.0.0", "tslib": "^2.6.2" } }, "sha512-QOYC8q7luzHFXrP0xYAqBctoPkynjfV0r9dqntFu4/IWMTyC1vlo1UTxFAjIPyclYw92XJyEkVCVg9v/nQnsUA=="], + + "@jsx-email/cli/tailwindcss/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + + "@opencode-ai/desktop/@actions/artifact/@actions/core/@actions/exec/@actions/io": ["@actions/io@1.1.3", "", {}, "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers/js-yaml/argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers/shiki/@shikijs/core": ["@shikijs/core@4.3.1", "", { "dependencies": { "@shikijs/primitive": "4.3.1", "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers/shiki/@shikijs/engine-javascript": ["@shikijs/engine-javascript@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.6" } }, "sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers/shiki/@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers/shiki/@shikijs/langs": ["@shikijs/langs@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers/shiki/@shikijs/themes": ["@shikijs/themes@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1" } }, "sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers/shiki/@shikijs/types": ["@shikijs/types@4.3.1", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/workerd/@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260714.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-ZWXqAN8G7Cx9hMRQuk+59ziJhR3j1F4iO+Qs8aHdfKZ3Dq5Yi/57xvkJTgCGBnW1YU/L78r8f6HEy51bwbTpNw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/workerd/@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260714.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tueWxWC3wyCbMG6zRAxsMXX0YLgrRWbiAPYFQ2uJ7dUH8G+5E7UTWaQS9B1HdJ0bpKFW1NWxhs1o2noKVFSUYg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/workerd/@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260714.1", "", { "os": "linux", "cpu": "x64" }, "sha512-1VChTZRb0l0F7R4e1G5RtLKV4oFi6x+rQgxh2+yu887j3l/3TLgatuv1L8/5zhc9gKEhATTxOh0e52Rtd9dDWQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/workerd/@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260714.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-rMm3G+NirG2UdgHIRDdF1asNC6FqgIzZzkRG+VDhhDGcVxAQwvrMT1E38BivEvHr3G04MB4AfhcOczX0+GtRkQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/workerd/@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260714.1", "", { "os": "win32", "cpu": "x64" }, "sha512-cGqnU3Hg2YZS/k3SAqrMp1DjpdsyFde72tWltdl6ZT9+SFz/Zrk/8gyTU1TcxC4YApXeNVH5TyU5cOGPgUJ0pg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/@cloudflare/kv-asset-handler": ["@cloudflare/kv-asset-handler@0.5.0", "", {}, "sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@opencode-ai/www/@astrojs/cloudflare/vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "@opencode-ai/www/astro/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], + + "@opencode-ai/www/astro/shiki/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "@opencode-ai/www/astro/unstorage/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + + "@opencode-ai/www/astro/unstorage/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], + + "@opencode-ai/www/astro/unstorage/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + + "@sentry/bundler-plugin-core/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "@slack/bolt/express/accepts/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "@slack/bolt/express/type-is/mime-types/mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], + + "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex": ["regex@5.1.1", "", { "dependencies": { "regex-utilities": "^2.3.0" } }, "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw=="], + + "@solidjs/start/shiki/@shikijs/engine-javascript/oniguruma-to-es/regex-recursion": ["regex-recursion@5.1.1", "", { "dependencies": { "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w=="], + + "archiver-utils/glob/jackspeak/@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + + "archiver-utils/glob/jackspeak/@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + + "archiver-utils/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "babel-plugin-module-resolver/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.2", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" }, "bundled": true }, "sha512-TC8MkTuZUtcTSiFeuC0ksCh9QIJ5+F21MvZ4Wn4ORfYaFJ/0dsiudv5tVkejgwZlwQ39jL9WWDe2lz8x0WglOA=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.6", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" }, "bundled": true }, "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], + + "blume/@tailwindcss/vite/@tailwindcss/oxide/@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + + "blume/astro/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], + + "blume/astro/unstorage/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], + + "blume/astro/unstorage/h3/cookie-es": ["cookie-es@1.2.3", "", {}, "sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw=="], + + "blume/astro/unstorage/h3/crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + + "js-beautify/glob/jackspeak/@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + + "js-beautify/glob/jackspeak/@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + + "js-beautify/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "pkg-dir/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + + "pkg-up/find-up/locate-path/p-locate/p-limit": ["p-limit@2.3.0", "", { "dependencies": { "p-try": "^2.0.0" } }, "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="], + + "rimraf/glob/jackspeak/@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], + + "rimraf/glob/jackspeak/@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], + + "rimraf/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "temp/rimraf/glob/minimatch/brace-expansion": ["brace-expansion@1.1.16", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw=="], + + "tw-to-css/tailwindcss/chokidar/readdirp/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + + "@astrojs/cloudflare/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], + + "@opencode-ai/updates/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], + + "@opencode-ai/www/@astrojs/cloudflare/@astrojs/internal-helpers/shiki/@shikijs/core/@shikijs/primitive": ["@shikijs/primitive@4.3.1", "", { "dependencies": { "@shikijs/types": "4.3.1", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/wrangler/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "@opencode-ai/www/wrangler/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], + + "archiver-utils/glob/jackspeak/@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + + "archiver-utils/glob/jackspeak/@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "js-beautify/glob/jackspeak/@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + + "js-beautify/glob/jackspeak/@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "rimraf/glob/jackspeak/@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], + + "rimraf/glob/jackspeak/@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + + "temp/rimraf/glob/minimatch/brace-expansion/balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], + + "@opencode-ai/www/@astrojs/cloudflare/@cloudflare/vite-plugin/miniflare/sharp/@img/sharp-wasm32/@emnapi/runtime": ["@emnapi/runtime@1.11.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kyOl3X0DuTiT1h2ft8r2fYO8JYtU9a9Xis/zBSiGArNaagCOWx90N1k2wxp18czFDH+OgcWGb5ZP/XMt3dcyPA=="], } } diff --git a/bunfig.toml b/bunfig.toml index c506ff57c4bf..8393dd5093f8 100644 --- a/bunfig.toml +++ b/bunfig.toml @@ -2,7 +2,7 @@ exact = true # Only install newly resolved package versions published at least 3 days ago. minimumReleaseAge = 259200 -minimumReleaseAgeExcludes = ["@ai-sdk/amazon-bedrock", "@ai-sdk/anthropic", "@opentui/core", "@opentui/core-darwin-arm64", "@opentui/core-darwin-x64", "@opentui/core-linux-arm64", "@opentui/core-linux-arm64-musl", "@opentui/core-linux-x64", "@opentui/core-linux-x64-musl", "@opentui/core-win32-arm64", "@opentui/core-win32-x64", "@opentui/keymap", "@opentui/solid", "opentui-spinner", "gitlab-ai-provider", "opencode-gitlab-auth", "@ff-labs/fff-node", "@ff-labs/fff-bun", "@ff-labs/fff-bin-darwin-arm64", "@ff-labs/fff-bin-darwin-x64", "@ff-labs/fff-bin-linux-arm64-gnu", "@ff-labs/fff-bin-linux-arm64-musl", "@ff-labs/fff-bin-linux-x64-gnu", "@ff-labs/fff-bin-linux-x64-musl", "@ff-labs/fff-bin-win32-arm64", "@ff-labs/fff-bin-win32-x64", "@pierre/diffs", "@pierre/theming", "app-builder-lib", "dmg-builder", "electron-builder", "electron-publish"] +minimumReleaseAgeExcludes = ["@ai-sdk/amazon-bedrock", "@ai-sdk/anthropic", "@opencode-ai/sdk", "@opentui/core", "@opentui/core-darwin-arm64", "@opentui/core-darwin-x64", "@opentui/core-linux-arm64", "@opentui/core-linux-arm64-musl", "@opentui/core-linux-x64", "@opentui/core-linux-x64-musl", "@opentui/core-win32-arm64", "@opentui/core-win32-x64", "@opentui/keymap", "@opentui/solid", "opentui-spinner", "gitlab-ai-provider", "opencode-gitlab-auth", "@ff-labs/fff-node", "@ff-labs/fff-bun", "@ff-labs/fff-bin-darwin-arm64", "@ff-labs/fff-bin-darwin-x64", "@ff-labs/fff-bin-linux-arm64-gnu", "@ff-labs/fff-bin-linux-arm64-musl", "@ff-labs/fff-bin-linux-x64-gnu", "@ff-labs/fff-bin-linux-x64-musl", "@ff-labs/fff-bin-win32-arm64", "@ff-labs/fff-bin-win32-x64", "@pierre/diffs", "@pierre/theming", "app-builder-lib", "dmg-builder", "electron-builder", "electron-publish"] [test] root = "./do-not-run-tests-from-root" diff --git a/docs/design/service-lifecycle.md b/docs/design/service-lifecycle.md new file mode 100644 index 000000000000..e32a6cb441f3 --- /dev/null +++ b/docs/design/service-lifecycle.md @@ -0,0 +1,685 @@ +# Service Lifecycle: Election, Restart, and Reconnect + +Status: in progress + +Incident: [#36688](https://github.com/anomalyco/opencode/issues/36688) + +## Summary + +The managed V2 service keeps its current update policy: the background updater +may install a new package, but only a freshly launched TUI activates that update +after finding an older running service. Existing TUIs never replace a service; +they only reconnect. + +The restart path changes in three places: + +1. A process-held OS lock, not the HTTP port or registration file, elects + exactly one server owner for its lifetime. +2. The elected process binds and registers a minimal lifecycle surface before + it initializes the application, so clients can distinguish a slow winner + from an absent server. +3. TUIs rediscover and reconnect indefinitely. Transport loss is never a + terminal error by itself. + +Several clients may spawn small contenders during a restart. This is safe and +intentional: one contender acquires the lock and initializes, while every loser +exits before expensive server boot. The design does not require clients to +agree on a single initiator. + +This proposal does not introduce a supervisor process, warm candidate server, +protocol negotiation, idle background restart, or general execution-recovery +framework. + +## Architecture at a Glance + +```text + ╭───────────────────╮ + │ CLI ServiceConfig │ + ╰─────────┬─────────╯ + │ + ▼ + ╭──────────────────────╮ + │ CLI ServerConnection │ + ╰───────────┬──────────╯ + ╭──────────────────╰───────────────────╮ + ▼ ▼ +╭──────────────────────────╮ ╭─────────────────────────╮ +│ Client Service lifecycle │ │ CLI runPromiseWith seam │ +╰─────────────┬────────────╯ ╰─────────────┬───────────╯ + ╰─────╮ │ + ▼ ▼ + ╭────────────────────────────╮ ╭─────────────╮ + │ Background service process │ │ TUI / Solid │ + ╰──────────────┬─────────────╯ ╰──────┬──────╯ + │ │ + ╰────────────◀────────────────────╯ + ╭───────────────────────╮ + │ Server HTTP transport │ + ╰───────────┬───────────╯ + │ + ▼ + ╭──────────────────╮ + │ Core application │ + ╰──────────────────╯ +``` + +| Owner | Responsibility | +| ------------------------------------------------ | --------------------------------------------------------------------------------------------------- | +| `packages/client/src/effect/service.ts` | Effect-native discovery, start, and stop lifecycle operations | +| `packages/cli/src/services/service-config.ts` | CLI registration path, installed version, and daemon command | +| `packages/cli/src/services/server-connection.ts` | Resolve an endpoint and, only for the shared service, grouped reconnect and restart Effects | +| `packages/cli/src/server-process.ts` | Daemon election, registration, and server process boot | +| `packages/server/src/process.ts` | HTTP lifecycle shell and application transport | +| `packages/core` | Application behavior behind the transport | +| CLI default handler | Convert lifecycle Effects with the outer `FileSystem` context and pass grouped Promise capabilities | +| `packages/tui` Solid client context | Own event-stream reconnect, endpoint replacement, status, and user-triggered restart UI | + +## Implementation Status + +| Area | State | +| ------------------------- | --------------------------------------------------------------------- | +| Lifetime ownership | Implemented on this branch with a scoped OS lock | +| Contender behavior | Implemented; losers exit before the server module is imported | +| Registration repair | Implemented; the owner reasserts deleted or corrupt discovery | +| Channel isolation | Implemented with no-clobber migration for legacy preview discovery | +| Client startup waiting | Implemented; slow winners are not killed and waiting is indefinite | +| Lifecycle shell | Implemented; the owner binds and registers before application boot | +| Failed-state latching | Implemented; deterministic boot failure stays bound and actionable | +| Recovery diagnostics | Implemented; the TUI shows status instead of transport internals | +| Cross-platform validation | macOS runtime verified; Linux and Windows run in the unit-test matrix | + +## Context + +The V2 CLI runs a shared managed service that owns Sessions, location graphs, +plugins, permissions, and tool execution. The service updater can replace the +installed package while the current process continues running the old image. +A later TUI launch then detects the version mismatch and replaces the service. + +Incident #36688 showed four failures in that replacement path: + +- Multiple TUIs spawned heavyweight server contenders. +- A winner remained unobservable while it cold-booted, so another wave treated + it as absent and displaced it. +- A fresh TUI exhausted its reconnect budget and crashed with an unhandled + transport defect. +- A losing contender remained alive and consumed about 1 GB of RSS. + +The `origin/v2` baseline serializes service startup with `EffectFlock`. A +contender acquires a three-second heartbeat lease, checks whether another +service became discoverable, and only the winner crosses the application-boot +boundary. This already prevents simultaneous heavy boots and makes startup +losers exit. + +The lease is released immediately after registration, however, so it is not +lifetime ownership. Registration then reverts to last-writer-wins authority: a +deleted or corrupt registration can admit a second boot, a displaced server +terminates itself through its 10-second registration self-check, and a stalled +lease holder can be displaced after the three-second service staleness timeout. + +`Flock` and `EffectFlock` live in `packages/core/src/util` and are also used for +config writes, MCP auth, npm installs, and repository caching. Despite the +name, the primitive is an atomic-mkdir lease with heartbeat and staleness +takeover, not an OS-held lock. It remains appropriate for bounded critical +sections, including today's startup fence, but is not lifetime service +ownership. + +The current implementation also mixes three different concepts: + +- **Ownership:** which process is allowed to be the managed server. +- **Discovery:** where clients can reach that process. +- **Lifecycle:** whether that process is starting, ready, stopping, or failed. + +This design gives each concept one authority. + +```definitions +[ + { + "term": "Owner", + "definition": "The one process holding the process-held OS service lock." + }, + { + "term": "Contender", + "definition": "A small serve process attempting to acquire the service lock. It must not initialize the application before winning." + }, + { + "term": "Registration", + "definition": "An atomic discovery record containing the elected owner's identity and endpoint. Registration never grants ownership." + }, + { + "term": "Lifecycle shell", + "definition": "The minimal HTTP surface bound by the elected process before application initialization. It serves health and retryable startup responses." + }, + { + "term": "Application", + "definition": "The full server routes and global or location-scoped modules used for normal OpenCode work." + } +] +``` + +## Goals + +- At most one process initializes and serves the managed application. +- Losing contenders exit before database, route, plugin, MCP, or location boot. +- A slow winner becomes observable before expensive initialization. +- Existing and freshly launched TUIs survive retryable service unavailability. +- Reconnect follows service state instead of displaying retry counts or raw + transport failures. +- Version-mismatch replacement remains triggered by a fresh TUI launch. +- A stale or malformed registration cannot create a second owner. +- An unresponsive owner is never killed automatically by an arbitrary TUI. +- Every spawned contender has a bounded path to ownership or exit. + +## Non-goals + +- Restarting automatically when a background update finds an idle window. +- Running old and candidate application servers concurrently. +- Adding a permanent steward, proxy, or supervisor process. +- Zero-downtime worker handoff or automatic rollback. +- Application protocol negotiation or automatic TUI self-restart. +- General hard-crash recovery for active Sessions. +- Defining recovery semantics for provider attempts, tools, shells, sub-agents, + permissions, questions, or background jobs. +- Automatically killing a frozen owner. +- Bounding concurrent location cold boots after clients reconnect. +- Multi-machine or clustered service placement. + +## Invariants + +1. **The service lock is ownership.** Exactly one process may hold the OS lock + for one installation channel and service profile. +2. **Ownership precedes boot.** A contender performs no expensive application + initialization before it acquires the lock. +3. **Ownership lasts for the process lifetime.** The owner holds an open lock + handle until the managed server exits. The OS releases it on process death + without a cleanup callback. +4. **The port is transport, not election.** The owner may select a dynamic port + after acquiring the lock. +5. **Registration is discovery, not election.** Deleting, corrupting, or + replacing registration does not invalidate a live owner's lock. +6. **Only a fresh launch enforces package version.** Existing TUIs reconnect to + the current owner without initiating version replacement. +7. **Transport loss is retryable.** It never terminates a TUI without a separate + diagnosed, non-retryable cause. +8. **Clients do not kill an unresponsive owner automatically.** Destructive + recovery requires the explicit `service restart` command. +9. **Lifecycle does not promise execution semantics.** Graceful replacement + invokes Session suspension and resumption hooks, but tool-level continuity + belongs to a separate design. + +## System Model + +```text +╭───────────────────────╮ ╭──────────────────────────────╮ +│ Fresh or existing TUI │ │ Process-held OS service lock │ +╰───────────┬───────────╯ ╰───────────────┬──────────────╯ + ╰─────┬ normal requests observe ───────────────────────╮ │ + │ discover │ ├──╯ authorizes one owner + ▼ │ ▼ + ╭───────────────────╮ │ ╭─────────────────╮ + │ Registration file │ │ │ Lifecycle shell │ + ╰───────────────────╯ │ ╰────────┬────────╯ + │ │ + ├────────────────────────╯ + ▼ + ╭──────────────────────╮ + │ OpenCode application │ + ╰──────────────────────╯ +``` + +The lifecycle shell and application run in the same process. The distinction is +initialization order and responsibility, not process topology. + +## Service Status + +The server reports one small status value: + +```typescript +type ServiceStatus = + | { + type: "starting" + } + | { + type: "ready" + } + | { + type: "stopping" + targetVersion?: string + } + | { + type: "failed" + message: string + action: string + } +``` + +The client adds only the discovery states needed by callers: + +```typescript +type Status = { type: "missing" } | { type: "unreachable" } | { type: "unresponsive" } | ServiceStatus +``` + +The health response retains the existing fields for old clients and adds the +status discriminant: + +```typescript +type ServiceHealth = { + healthy: true + version: string + pid: number + instanceID: string + status: ServiceStatus +} +``` + +`healthy: true` means the registered lifecycle shell is responding and its +identity matches registration. New clients use `status.type === "ready"` as +the application-readiness signal. + +During `starting` or `stopping`, application requests are not held in memory. +They receive an immediate retryable response: + +```http +HTTP/1.1 503 Service Unavailable +Retry-After: 1 +Content-Type: application/json + +{"code":"service_starting"} +``` + +`stopping` uses `service_stopping`. A failed application boot uses +`service_failed` and includes a safe diagnostic message. + +A failed owner remains bound and keeps holding the service lock. Exiting on +failure would let every waiting client's `ensureRunning` loop elect a new +contender that repeats the same heavy failing boot, so staying bound turns a +deterministic boot failure into one observable `failed` state instead of a +client-driven respawn loop. Recovery still works: a fresh launch observes the +failed instance through the stop path, and explicit `service restart` replaces +it. + +## Registration Contract + +Registration contains only discovery identity: + +```typescript +type ServiceRegistration = { + schema: 1 + instanceID: string + version: string + url: string + pid: number +} +``` + +Authentication continues to use the existing private service credential +storage. The registration schema does not change that policy. + +The owner writes registration only after the lifecycle shell has bound: + +1. Bind the lifecycle shell. +2. Write a temporary registration file with mode `0600`. +3. Atomically rename it over the old registration. +4. Serve lifecycle health as `starting`. + +On shutdown, the owner removes registration only if the current file still has +its `instanceID`. An old finalizer can never remove a successor's registration. + +While running, the owner periodically asserts its registration. Because the +lock guarantees exactly one live owner, any registration that does not name the +owner is stale or corrupt, and the owner rewrites it. A deleted or clobbered +registration therefore heals within one assertion interval instead of leaving +clients waiting on absent discovery. This inverts today's self-check loop, +which terminates the displaced process instead of repairing discovery. + +Legacy registration shapes are decoded by a compatibility adapter. The new +domain type does not make fields optional to represent old formats. + +## Election + +This design promotes today's startup fence into lifetime ownership. +Last-writer-wins registration is replaced by a process-held OS lock that is +acquired before any expensive boot work and held for the entire service +lifetime. + +A heartbeat-and-staleness lease, including the existing `Flock` utility, is not +sufficient for service ownership: the service configures a three-second stale +timeout, after which its lock can be broken and recreated. An event-loop stall, +a suspended machine, or a debugger pause can therefore make a live owner appear +stale and allow a contender to displace it. Service ownership requires a +process-held OS lock: `flock` on Unix and an exclusively bound named pipe on +Windows. It cannot be broken because a heartbeat exceeded a timeout. Process +death releases the lock through the OS. + +Neither Bun nor Node exposes `flock` directly, the existing `Flock` utility is +an mkdir-plus-heartbeat lease rather than an OS-held lock, and the common +lockfile packages are staleness-based leases as well. The platform layer uses +`bun:ffi` to call `flock` on POSIX and Node's named-pipe server support on +Windows, where Bun FFI is not available on every shipped architecture. It lives +alongside the existing utility in `packages/core/src/util`. This primitive is +the foundation of the design, so the delivery sequence spikes it first. + +```text +Contender Lock Lifecycle Application + │ │ │ │ + ├─ try acquire ───▶ │ │ + │ │ │ │ + ╭─ alt: lock held ────────────────────────────────────────────────╮ + │ │ │ │ │ │ + │ ◀─ busy ──────────┤ │ │ │ + │ │ │ │ │ │ + │ ├─────────╮ │ │ │ │ + │ │ exit │ │ │ │ │ + │ ◀─────────╯ │ │ │ │ + │ │ │ │ │ │ + ├─ else: lock acquired ───────────────────────────────────────────┤ + │ │ │ │ │ │ + │ ◀─ owner ─────────┤ │ │ │ + │ │ │ │ │ │ + │ ├─ bind, register, starting ────────▶ │ │ + │ │ │ │ │ │ + │ ├─ initialize ──────────────────────────────────────────────▶ │ + │ │ │ │ │ │ + │╭─ alt: boot succeeds ──────────────────────────────────────────╮│ + ││ │ │ │ │ ││ + ││ │ │ ◀─ ready ───────────────┤ ││ + ││ │ │ │ │ ││ + │├─ else: boot fails ────────────────────────────────────────────┤│ + ││ │ │ │ │ ││ + ││ │ │ ◀─ failed, stay bound ──┤ ││ + ││ │ │ │ │ ││ + │╰───────────────────────────────────────────────────────────────╯│ + │ │ │ │ │ │ + ╰─────────────────────────────────────────────────────────────────╯ + │ │ │ │ +``` + +Lock acquisition by a contender is nonblocking or tightly bounded. A loser +must exit before constructing application routes or importing startup-heavy +modules. + +Several clients may spawn contenders concurrently. The design guarantees one +heavy winner, not one process spawn. If the winner crashes during startup, the +OS releases the lock and a later client retry starts another election. + +The lock is scoped by installation channel and service profile. Local, preview, +and stable installations cannot displace one another. + +## Update Activation + +Background update behavior remains unchanged: + +1. The running service checks for an update. +2. The updater installs the package in the background. +3. The running process continues using its existing process image. +4. No idle check or automatic restart occurs. + +A fresh TUI launch activates the installed update: + +1. Read registration and authenticate the responding service. +2. If its package version matches the fresh client, attach normally. +3. If the version differs, request graceful stop of that exact registered + instance using the existing authenticated stop path. +4. Re-check instance identity before every signal or escalation in that path. +5. Wait for the old process to exit and release the service lock. +6. Call `ensureRunning` until a compatible service becomes ready. + +Concurrent fresh launchers may all observe the same old instance. Stopping that +exact instance must be idempotent. Once registration names a different instance, +a stale launcher stops signaling and returns to discovery. + +No durable restart-transition record is introduced. The initiating fresh TUI +already knows the source and target versions and can display its update +preflight. Existing TUIs may display `Updating...` if they observed `stopping`; +otherwise `Waiting for background service...` is the honest fallback. + +## Fresh Launch Versus Reconnect + +Fresh launch and reconnect deliberately have different version policies: + +```typescript +type ManagedConnection = + | { + type: "launch" + requiredVersion: string + } + | { + type: "reconnect" + } +``` + +- `launch` requires the installed package version and may activate replacement. +- `reconnect` accepts the current owner and never activates replacement. + +This preserves today's permissive reconnect behavior. Explicit application +protocol negotiation and automatic TUI re-exec remain follow-ups. + +## Client Reconnect + +Fresh and existing TUIs use the same status loop after startup: + +1. Read registration on every attempt. Do not retry a stale URL indefinitely. +2. If registration is absent, call `ensureRunning` and continue waiting. +3. If registration is unreachable, call `ensureRunning`. A live owner prevents + contenders from acquiring the lock; a dead owner does not. +4. If status is `starting` or `stopping`, wait. +5. If status is `failed`, show its actionable message. +6. If status is `ready`, rebuild HTTP and event-stream clients for the new + endpoint and perform authoritative state reconciliation. + +Retry cadence is internal policy. Retry counts are telemetry, not user-facing +state. The TUI waits until the service is ready or the user exits. + +Transport failures are handled at the TUI run boundary. A raw client transport +error or Effect defect must not escape to the terminal. Hard exit is reserved +for diagnosed causes such as invalid local configuration, failed authentication, +or a foreign process occupying an explicitly configured port. + +The UI derives text from status: + +| Status | User-facing state | +| ------------------------ | ----------------------------------- | +| No registration | `Starting background service...` | +| Registration unreachable | `Waiting for background service...` | +| `starting` | `Starting OpenCode vX...` | +| `stopping` | `Updating to vX...` | +| `failed` | Actionable failure message | +| `ready` | Normal TUI | + +## Graceful Session Continuity + +Version-mismatch replacement uses the existing graceful Session suspension and +resumption hooks: + +1. The old server snapshots active Session IDs during graceful teardown. +2. The successor schedules those Sessions for continuation. +3. The runner reloads durable Session history before continuing. + +This lifecycle design does not define what an interrupted physical provider +attempt or tool invocation means. It does not promise that external side effects +did not occur, replay the exact interrupted tool, preserve an in-memory form, or +recover process-local background work. + +Those concerns require a separate execution-continuity design covering tools, +shells, sub-agents, permissions, questions, provider attempts, and hard-crash +recovery. + +## Unresponsive Owner + +An unreachable registration does not prove that the owner is dead. A contender +attempts the service lock: + +- If the lock is free, the contender starts a replacement. +- If the lock is held, the contender exits and the client keeps waiting. + +After a bounded diagnostic threshold, the client may show: + +```text +The background service owns the service lock but is not responding. +Run `opencode service restart` to recover it. +``` + +Only explicit `service restart` may perform destructive recovery. It verifies +the complete registration and process instance before signaling, waits for +graceful exit, re-checks identity before escalation, and refuses to kill a +process it cannot positively identify. + +Automatic frozen-owner recovery is deferred. + +## Failure Walkthroughs + +### Update with open TUIs + +1. The old service installs vNext but keeps running. +2. A fresh vNext TUI finds the healthy vOld service and requests graceful stop. +3. The old service reports `stopping`, suspends active Sessions, and exits. +4. Open TUIs enter their indefinite status loops. +5. One or more clients spawn contenders. +6. One contender acquires the service lock. Losers exit before heavy boot. +7. The winner binds and registers the lifecycle shell as `starting`. +8. Clients stop spawning and wait on the observable winner. +9. The winner initializes the application and reports `ready`. +10. TUIs rebuild clients, reconcile state, and resume. + +### Server crashes while ready + +1. The endpoint becomes unreachable and registration may remain stale. +2. Clients call `ensureRunning`. +3. Process death has released the service lock. +4. One contender wins, replaces registration, and starts normally. +5. Detailed active-execution recovery is outside this design. + +### Winner crashes during startup + +1. Clients observed `starting` and remain alive. +2. Process death releases the service lock. +3. A later reconnect attempt starts another election. +4. One new contender wins; all other contenders exit. + +### Registration is deleted while the owner is healthy + +1. Clients may call `ensureRunning` because discovery is absent. +2. Every contender fails to acquire the owner's lock and exits. +3. No second application initializes. +4. The owner's next registration assertion republishes discovery. + +### Owner is alive but unresponsive + +1. Health fails, but the process still holds the service lock. +2. Contenders fail lock acquisition and exit. +3. Clients wait and eventually show explicit recovery guidance. +4. No TUI kills the owner automatically. + +## TDD Verification + +Implementation should proceed test-first with real subprocesses and real locks. +Mocks cannot establish process death, lock release, loser cleanup, or port +behavior. + +### Election tests + +| Scenario | Required result | +| ----------------------------------------------------- | ------------------------------------------------------- | +| Ten contenders start simultaneously | Exactly one crosses the application-boot boundary | +| Winner pauses after lock acquisition | No loser initializes or remains alive | +| Winner event loop pauses beyond the old stale timeout | Ownership is not displaced | +| Winner crashes before bind | Lock releases; a later attempt wins | +| Winner crashes after bind but before registration | Lock releases; a later attempt replaces stale discovery | +| Registration is deleted while owner runs | No second owner initializes | +| Registration is malformed | Lock still prevents a second owner | +| Registration names a dead PID | New contender can acquire the released lock | +| Two installation channels start | Each elects an independent owner | +| Explicit configured port is foreign-owned | Fail diagnostically; do not kill the foreign process | + +The fixture records a marker immediately before application initialization. The +tests assert that only one process writes that marker and that every loser exits +within a bounded interval. The harness should also assert that a loser's peak +RSS stays an order of magnitude below an application boot, since import weight +was the observed incident cost. + +### Lifecycle tests + +| Scenario | Required result | +| ----------------------------------------------- | ---------------------------------------------------------------- | +| Winner owns lock but application boot is paused | Health reports `starting` | +| Application request arrives during startup | Immediate retryable `503` | +| Application becomes ready | Status changes once from `starting` to `ready` | +| Graceful replacement begins | Status reports `stopping` before disconnect | +| Application initialization fails | Actionable `failed` status; owner stays bound and holds the lock | +| Registration is deleted while owner runs | Owner republishes it within one assertion interval | +| Owner exits | Registration is removed only if it still names that owner | + +### Update tests + +| Scenario | Required result | +| -------------------------------------- | -------------------------------------------------------- | +| Background update installs vNext | Running vOld service does not restart | +| Fresh vNext launch finds vOld | Exact old instance stops; vNext eventually becomes ready | +| Two fresh vNext launches race | One heavy successor; both clients attach | +| Existing vOld TUI reconnects to vNext | It never requests replacement | +| Stale launcher observes a new instance | It does not signal the new instance | + +### Reconnect tests + +| Scenario | Required result | +| --------------------------------------------------- | -------------------------------------------------- | +| Endpoint disappears and changes port | TUI rediscovers and rebuilds clients | +| Service remains unavailable beyond old retry budget | TUI remains alive | +| Event stream reconnects | Client performs authoritative state reconciliation | +| Transport returns an unexpected defect | TUI formats it; no raw stack escapes | +| Owner remains unresponsive | TUI waits and shows explicit restart guidance | + +## Delivery Sequence + +1. **Spike the lock primitive.** Prove a nonblocking, process-held OS lock + under Bun on macOS, Linux, and Windows (`bun:ffi` to `flock` on POSIX and a + named pipe on Windows), including release on hard kill and behavior across + containers and network filesystems used in CI. +2. **Expand the subprocess test harness.** Begin from the baseline + two-contender test and cover ten contenders, lock release on crash, a paused + winner, deleted or corrupt registration, and bounded loser exit before + changing ownership. +3. **Contain client failure.** Make transport loss nonterminal, rediscover on + every cycle, and format unexpected failures at the TUI boundary. +4. **Promote the startup fence to process-held ownership.** Preserve the + existing pre-boot acquisition seam, replace its lease with the OS lock, hold + it until process exit, and invert the registration self-check from + self-termination to reassertion. +5. **Bind the lifecycle shell first.** Publish registration and `starting`, + return retryable `503` for application requests, then initialize the app. + The health contract change is public API: regenerate clients from + `packages/client` with `bun run generate`. +6. **Codify launch versus reconnect.** Fresh launch enforces installed version; + reconnect never activates replacement. +7. **Integrate graceful replacement.** Preserve current background-install and + fresh-launch activation behavior while invoking Session continuity hooks. +8. **Harden explicit recovery.** Verify exact process identity during explicit + `service restart`; never automatically kill an unresponsive owner. +9. **Run the full multi-process suite.** Include repeated restart cycles and + assert that no contender or child process remains afterward. + +## Acceptance Criteria + +- Ten concurrent restart observers produce one application initialization. +- No losing contender survives or builds a location graph. +- A 30-second application boot remains continuously observable as `starting`. +- A TUI remains alive through a service outage longer than the previous retry + budget. +- A service endpoint change does not require restarting an existing TUI. +- Background installation alone does not restart the service. +- A fresh mismatched TUI eventually attaches to the installed service version. +- Existing reconnecting TUIs never replace the current owner. +- Registration corruption cannot produce two owners. +- A deleted registration heals without restarting the owner or any client. +- An unresponsive owner is not killed without an explicit recovery command. +- Raw transport defects never escape to the terminal. + +## Follow-ups + +- Idle background update activation with an admission fence. +- Application protocol compatibility and automatic local TUI re-exec. +- Durable execution recovery for provider attempts and tools. +- Shell, sub-agent, permission, question, and background-job continuity. +- Automatic recovery for a positively identified frozen owner. +- Cold-boot concurrency limits and interaction-prioritized location loading. +- A steward or socket-handoff architecture if zero-downtime replacement becomes + a real requirement. diff --git a/github/index.ts b/github/index.ts index 4e1af9cf55f4..e8acd9a9cef3 100644 --- a/github/index.ts +++ b/github/index.ts @@ -495,7 +495,6 @@ async function subscribeSessionEvents() { console.log("Subscribing to session events...") const TOOL: Record = { - todowrite: ["Todo", "\x1b[33m\x1b[1m"], bash: ["Bash", "\x1b[31m\x1b[1m"], edit: ["Edit", "\x1b[32m\x1b[1m"], glob: ["Glob", "\x1b[34m\x1b[1m"], diff --git a/github/package.json b/github/package.json index e1b913abedcc..a7af1d253284 100644 --- a/github/package.json +++ b/github/package.json @@ -15,6 +15,6 @@ "@actions/github": "6.0.1", "@octokit/graphql": "9.0.1", "@octokit/rest": "catalog:", - "@opencode-ai/sdk": "workspace:*" + "@opencode-ai/sdk": "1.18.5" } } diff --git a/infra/lake.ts b/infra/lake.ts index dd11ca38f977..d4e46168e366 100644 --- a/infra/lake.ts +++ b/infra/lake.ts @@ -67,6 +67,10 @@ const athenaWorkgroup = new aws.athena.Workgroup("LakeAthenaWorkgroup", { configuration: { enforceWorkgroupConfiguration: true, publishCloudwatchMetricsEnabled: true, + // Athena bills $5/TB scanned; kill any query that would scan more than 2 TB + // so a regression cannot silently burn money. Stats sync full passes scan + // ~250 GB as of 2026-07. + bytesScannedCutoffPerQuery: 2 * 1024 ** 4, resultConfiguration: { outputLocation: $interpolate`s3://${athenaResultsBucket.bucket}/`, }, diff --git a/infra/stage.ts b/infra/stage.ts index 8d80eefed880..f0db79744851 100644 --- a/infra/stage.ts +++ b/infra/stage.ts @@ -8,6 +8,25 @@ export const zoneID = "430ba34c138cfb5360826c4909f99be8" export const awsStage = $app.stage === "production" ? "production" : "dev" export const deployAws = $app.stage === awsStage +if ($app.stage === "production") { + new cloudflare.DnsRecord("TrustCenter", { + zoneId: zoneID, + name: "trust.opencode.ai", + type: "CNAME", + content: "3a69a5bb27875189.vercel-dns-016.com", + proxied: false, + ttl: 60, + }) + + new cloudflare.DnsRecord("TrustCenterVerification", { + zoneId: zoneID, + name: "opencode.ai", + type: "TXT", + content: "compai-domain-verification=org_6993a99c6200a2d642bb115d", + ttl: 60, + }) +} + new cloudflare.RegionalHostname("RegionalHostname", { hostname: domain, regionKey: "us", diff --git a/infra/stats.ts b/infra/stats.ts index b5b0e1c600e5..10d37119f0d7 100644 --- a/infra/stats.ts +++ b/infra/stats.ts @@ -185,7 +185,9 @@ export const statSync = new sst.aws.Service("StatsSyncService", { cluster: lakeCluster, architecture: "arm64", cpu: "0.25 vCPU", - memory: "0.5 GB", + // 0.5 GB caused an OOM crash loop: every restart immediately re-ran the 4 Athena + // stats queries (~$5/pass) every ~5 minutes instead of hourly. + memory: "2 GB", image: { context: ".", dockerfile: "packages/stats/server/Dockerfile", diff --git a/nix/desktop.nix b/nix/desktop.nix index d0d7fa7eca1f..2df62f7a1c76 100644 --- a/nix/desktop.nix +++ b/nix/desktop.nix @@ -8,6 +8,8 @@ makeWrapper, writableTmpDirAsHomeHook, autoPatchelfHook, + copyDesktopItems, + makeDesktopItem, opencode, }: let @@ -27,9 +29,12 @@ stdenv.mkDerivation (finalAttrs: { nodejs makeWrapper writableTmpDirAsHomeHook - ] ++ lib.optionals stdenv.hostPlatform.isLinux [ + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook - ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ + copyDesktopItems + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ # Ad-hoc sign the .app: --config.mac.identity=null below skips signing. darwin.autoSignDarwinBinariesHook ]; @@ -38,20 +43,37 @@ stdenv.mkDerivation (finalAttrs: { (lib.getLib stdenv.cc.cc) ]; + desktopItems = lib.optional stdenv.hostPlatform.isLinux (makeDesktopItem { + name = "ai.opencode.desktop"; + desktopName = "OpenCode"; + exec = "opencode-desktop %U"; + icon = "ai.opencode.desktop"; + # Electron 41 derives X11 WM_CLASS from app.name. + startupWMClass = "OpenCode"; + categories = [ "Development" ]; + }); + env = opencode.env // { ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; }; - # https://github.com/electron/electron/issues/31121 - # mac builds use a .app bundle which doesnt have this issue - postPatch = lib.optionalString stdenv.isLinux '' - BASE_PATH=packages/desktop - FILES=(src/main/windows.ts) - for file in "''${FILES[@]}"; do - substituteInPlace $BASE_PATH/$file \ - --replace-fail "process.resourcesPath" "'$out/opt/opencode-desktop/resources'" - done - ''; + postPatch = + # NOTE: Relax Bun version check to be a warning instead of an error + '' + substituteInPlace packages/script/src/index.ts \ + --replace-fail 'throw new Error(`This script requires bun@''${expectedBunVersionRange}' \ + 'console.warn(`Warning: This script requires bun@''${expectedBunVersionRange}' + '' + # https://github.com/electron/electron/issues/31121 + # mac builds use a .app bundle which doesnt have this issue + + lib.optionalString stdenv.isLinux '' + BASE_PATH=packages/desktop + FILES=(src/main/windows.ts) + for file in "''${FILES[@]}"; do + substituteInPlace $BASE_PATH/$file \ + --replace-fail "process.resourcesPath" "'$out/opt/opencode-desktop/resources'" + done + ''; preBuild = '' cp -r "${electron.dist}" $HOME/.electron-dist @@ -76,27 +98,38 @@ stdenv.mkDerivation (finalAttrs: { runHook postBuild ''; - installPhase = - '' - runHook preInstall - '' - + lib.optionalString stdenv.hostPlatform.isDarwin '' - mkdir -p $out/Applications - mv dist/mac*/*.app $out/Applications - makeWrapper "$out/Applications/OpenCode.app/Contents/MacOS/OpenCode" $out/bin/opencode-desktop - '' - + lib.optionalString stdenv.hostPlatform.isLinux '' - mkdir -p $out/opt/opencode-desktop - cp -r dist/linux*-unpacked/{resources,LICENSE*} $out/opt/opencode-desktop - makeWrapper ${lib.getExe electron} $out/bin/opencode-desktop \ - --inherit-argv0 \ - --set ELECTRON_FORCE_IS_PACKAGED 1 \ - --add-flags $out/opt/opencode-desktop/resources/app.asar \ - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" - '' - + '' - runHook postInstall - ''; + installPhase = '' + runHook preInstall + '' + + lib.optionalString stdenv.hostPlatform.isDarwin '' + mkdir -p $out/Applications + mv dist/mac*/*.app $out/Applications + makeWrapper "$out/Applications/OpenCode.app/Contents/MacOS/OpenCode" $out/bin/opencode-desktop + '' + + lib.optionalString stdenv.hostPlatform.isLinux '' + mkdir -p $out/opt/opencode-desktop + cp -r dist/linux*-unpacked/{resources,LICENSE*} $out/opt/opencode-desktop + install -Dm644 resources/icons/32x32.png \ + "$out/share/icons/hicolor/32x32/apps/ai.opencode.desktop.png" + install -Dm644 resources/icons/64x64.png \ + "$out/share/icons/hicolor/64x64/apps/ai.opencode.desktop.png" + install -Dm644 resources/icons/128x128.png \ + "$out/share/icons/hicolor/128x128/apps/ai.opencode.desktop.png" + install -Dm644 resources/icons/128x128@2x.png \ + "$out/share/icons/hicolor/256x256/apps/ai.opencode.desktop.png" + install -Dm644 resources/icons/icon.png \ + "$out/share/icons/hicolor/512x512/apps/ai.opencode.desktop.png" + install -Dm644 resources/ai.opencode.desktop.metainfo.xml \ + "$out/share/metainfo/ai.opencode.desktop.metainfo.xml" + makeWrapper ${lib.getExe electron} $out/bin/opencode-desktop \ + --inherit-argv0 \ + --set ELECTRON_FORCE_IS_PACKAGED 1 \ + --add-flags $out/opt/opencode-desktop/resources/app.asar \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" + '' + + '' + runHook postInstall + ''; autoPatchelfIgnoreMissingDeps = [ "libc.musl-x86_64.so.1" diff --git a/nix/hashes.json b/nix/hashes.json index 3b57bf2269d5..407d7812fb22 100644 --- a/nix/hashes.json +++ b/nix/hashes.json @@ -1,8 +1,8 @@ { "nodeModules": { - "x86_64-linux": "sha256-OiWvZ57vuyHwiIKNtW1n1KX+MLmOXVG3x4fLKvUoGQw=", - "aarch64-linux": "sha256-RnPLxVEg/UsL5IeIFWmXMSLUOG6rVrajYxhyDYj1vTA=", - "aarch64-darwin": "sha256-KPIgcBA0pTFBPrCTSZgIbvEorbtWcMgXvyX9bFAypVs=", - "x86_64-darwin": "sha256-6jVU7/uVId0VD24MVQ8s8Ill5b6PsKdlBgHg+oceKRg=" + "x86_64-linux": "sha256-0kcwV34P2C3yKg2eG9W2nW+OedrSBb+1TdpuUeYtauY=", + "aarch64-linux": "sha256-yHVygApQchAB34wrtFR4GU0CkmZOlLsl3wsp15u0xzs=", + "aarch64-darwin": "sha256-DyalcwyK2Wn5R6249keFcNVECbgtjYNjscOFqTi88FI=", + "x86_64-darwin": "sha256-BkGw0GWN9W9q+/g4FYR0MqxUuFP80BPoERO+ypz/arQ=" } } diff --git a/package.json b/package.json index 49507128d60c..de344eac2781 100644 --- a/package.json +++ b/package.json @@ -2,23 +2,30 @@ "$schema": "https://json.schemastore.org/package.json", "name": "opencode", "description": "AI-powered development tool", + "version": "0.0.0", "private": true, "type": "module", "packageManager": "bun@1.3.14", "scripts": { - "dev": "bun run --cwd packages/opencode --conditions=browser src/index.ts", + "dev": "bun run --cwd packages/cli --conditions=browser src/index.ts", "dev:desktop": "bun --cwd packages/desktop dev", "dev:web": "bun --cwd packages/app dev", "dev:console": "ulimit -n 10240 2>/dev/null; bun run --cwd packages/console/app dev", "dev:stats": "bun sst shell --stage=production -- bun run --cwd packages/stats/app dev", + "dev:www": "bun run --cwd packages/www dev", "dev:storybook": "bun --cwd packages/storybook storybook", "lint": "oxlint", - "typecheck": "bun turbo typecheck", + "lint:effect-patterns": "ast-grep scan -c script/ast-grep/sgconfig.yml packages/util/src packages/core/src packages/server/src packages/protocol/src packages/cli/src", + "test:lint-rules": "ast-grep test -c script/ast-grep/sgconfig.yml", + "typecheck": "bun turbo typecheck --concurrency=3", + "typecheck:profile": "bun script/profile-typecheck.ts", + "typecheck:profile:packages": "bun script/profile-typecheck-packages.ts", "upgrade-opentui": "bun run script/upgrade-opentui.ts", "postinstall": "bun run --cwd packages/core fix-node-pty", "prepare": "husky", "random": "echo 'Random script'", "sso": "aws sso login --sso-session=opencode --no-browser", + "translate:app": "bun run script/translate-app.ts", "test": "echo 'do not run tests from root' && exit 1" }, "workspaces": { @@ -26,26 +33,27 @@ "packages/*", "packages/console/*", "packages/stats/*", - "packages/sdk/js", "packages/slack" ], "catalog": { - "@effect/opentelemetry": "4.0.0-beta.83", - "@effect/platform-node": "4.0.0-beta.83", - "@effect/sql-sqlite-bun": "4.0.0-beta.83", + "@effect/opentelemetry": "4.0.0-beta.101", + "@effect/platform-node": "4.0.0-beta.101", + "@effect/sql-sqlite-bun": "4.0.0-beta.101", "@npmcli/arborist": "9.4.0", "@types/bun": "1.3.13", "@types/cross-spawn": "6.0.6", "@octokit/rest": "22.0.0", "@hono/standard-validator": "0.2.0", "@hono/zod-validator": "0.4.2", - "@opentui/core": "0.3.4", - "@opentui/keymap": "0.3.4", - "@opentui/solid": "0.3.4", - "@tanstack/solid-virtual": "3.13.28", + "@opentui/core": "0.4.5", + "@opentui/keymap": "0.4.5", + "@opentui/solid": "0.4.5", + "@tanstack/solid-virtual": "3.13.32", "@shikijs/stream": "4.2.0", + "@standard-schema/spec": "1.1.0", "ulid": "3.0.1", "@kobalte/core": "0.13.11", + "@corvu/drawer": "0.2.4", "@types/luxon": "3.7.1", "@types/node": "24.12.2", "@types/semver": "7.7.1", @@ -61,14 +69,15 @@ "dompurify": "3.3.1", "drizzle-kit": "1.0.0-rc.2", "drizzle-orm": "1.0.0-rc.2", - "effect": "4.0.0-beta.83", + "effect": "4.0.0-beta.101", "ai": "6.0.168", "cross-spawn": "7.0.6", "hono": "4.10.7", "hono-openapi": "1.1.2", "fuzzysort": "3.1.0", + "get-east-asian-width": "1.6.0", "luxon": "3.6.1", - "marked": "17.0.1", + "marked": "17.0.6", "marked-shiki": "1.2.1", "remend": "1.3.0", "@playwright/test": "1.59.1", @@ -77,9 +86,11 @@ "@typescript/native-preview": "7.0.0-dev.20251207.1", "zod": "4.1.8", "remeda": "2.26.0", + "resolve.exports": "2.0.3", "sst": "4.13.1", "shiki": "4.2.0", "solid-list": "0.3.0", + "string-width": "7.2.0", "tailwindcss": "4.1.11", "vite": "7.1.4", "@solidjs/meta": "0.29.4", @@ -94,6 +105,9 @@ }, "devDependencies": { "@actions/artifact": "5.0.1", + "@ast-grep/cli": "0.44.0", + "@types/react": "19.2.17", + "@types/react-dom": "19.2.3", "@tsconfig/bun": "catalog:", "@types/mime-types": "3.0.1", "@typescript/native-preview": "catalog:", @@ -104,13 +118,13 @@ "prettier": "3.6.2", "semver": "^7.6.0", "sst": "catalog:", - "turbo": "2.8.13" + "turbo": "2.10.2" }, "dependencies": { "@aws-sdk/client-s3": "3.933.0", "@opencode-ai/plugin": "workspace:*", "@opencode-ai/script": "workspace:*", - "@opencode-ai/sdk": "workspace:*", + "@opencode-ai/sdk": "1.18.5", "heap-snapshot-toolkit": "1.1.3", "typescript": "catalog:" }, @@ -138,21 +152,22 @@ "@opentui/keymap": "catalog:", "@opentui/solid": "catalog:", "@types/bun": "catalog:", - "@types/node": "catalog:" + "@types/node": "catalog:", + "effect": "catalog:" }, "patchedDependencies": { - "@ff-labs/fff-bun@0.9.3": "patches/@ff-labs%2Ffff-bun@0.9.3.patch", "@npmcli/agent@4.0.2": "patches/@npmcli%2Fagent@4.0.2.patch", "@silvia-odwyer/photon-node@0.3.4": "patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch", "@standard-community/standard-openapi@0.2.9": "patches/@standard-community%2Fstandard-openapi@0.2.9.patch", "solid-js@1.9.10": "patches/solid-js@1.9.10.patch", - "@ai-sdk/xai@3.0.82": "patches/@ai-sdk%2Fxai@3.0.82.patch", + "@ai-sdk/xai@3.0.102": "patches/@ai-sdk%2Fxai@3.0.102.patch", + "@ai-sdk/mistral@3.0.51": "patches/@ai-sdk%2Fmistral@3.0.51.patch", "gcp-metadata@8.1.2": "patches/gcp-metadata@8.1.2.patch", "pacote@21.5.0": "patches/pacote@21.5.0.patch", "@ai-sdk/google@3.0.73": "patches/@ai-sdk%2Fgoogle@3.0.73.patch", - "@tanstack/solid-virtual@3.13.28": "patches/@tanstack%2Fsolid-virtual@3.13.28.patch", "@pierre/trees@1.0.0-beta.4": "patches/@pierre%2Ftrees@1.0.0-beta.4.patch", "@modelcontextprotocol/sdk@1.29.0": "patches/@modelcontextprotocol%2Fsdk@1.29.0.patch", - "@tanstack/virtual-core@3.17.0": "patches/@tanstack%2Fvirtual-core@3.17.0.patch" + "effect@4.0.0-beta.101": "patches/effect@4.0.0-beta.101.patch", + "@tanstack/virtual-core@3.17.3": "patches/@tanstack%2Fvirtual-core@3.17.3.patch" } } diff --git a/packages/ai/AGENTS.md b/packages/ai/AGENTS.md new file mode 100644 index 000000000000..6c35cafc344c --- /dev/null +++ b/packages/ai/AGENTS.md @@ -0,0 +1,341 @@ +# AI Package Guide + +## Effect + +- Prefer `HttpClient.HttpClient` / `HttpClientResponse.HttpClientResponse` over web `fetch` / `Response` at package boundaries. +- Use `Stream.Stream` for streaming data flow. Avoid ad hoc async generators or manual web reader loops unless an Effect `Stream` API cannot model the behavior. +- Use Effect Schema codecs for JSON encode/decode (`Schema.fromJsonString(...)`) instead of direct `JSON.parse` / `JSON.stringify` in implementation code. +- In `Effect.gen`, yield yieldable errors directly (`return yield* new MyError(...)`) instead of `Effect.fail(new MyError(...))`. +- Use `Effect.void` instead of `Effect.succeed(undefined)` when the successful value is intentionally void. + +## Conventions + +Per-type constructors live on the type, not as top-level re-exports. Use `Message.system(...)`, `Message.user(...)`, `Message.assistant(...)`, `Message.tool(...)`, `Model.make(...)`, `ToolDefinition.make(...)`, `ToolCallPart.make(...)`, `ToolResultPart.make(...)`, `ToolChoice.make(...)`, `ToolChoice.named(...)`, `SystemPart.make(...)`, and `GenerationOptions.make(...)` directly. The top-level `LLM` namespace is reserved for request-shaped call APIs: `LLM.request`, `LLM.generate`, `LLM.stream`, `LLM.updateRequest`, and `LLM.generateObject`. Two ways to construct the same thing is one too many. + +## Tests + +- Use `testEffect(...)` from `test/lib/effect.ts` for tests requiring Effect layers. +- Keep provider tests fixture-first. Live provider calls must stay behind `RECORD=true` and required API-key checks. + +## Architecture + +This package is an Effect Schema-first LLM core. The Schema classes in `src/schema/` are the canonical runtime data model. Convenience functions in `src/llm.ts` are thin constructors that return those same Schema class instances; they should improve callsites without creating a second model. + +Primary in-repo integration point: + +- `packages/opencode/src/session/llm.ts` is the session-owned orchestration layer that decides whether a request uses AI SDK or this package's native route runtime. +- `packages/opencode/src/session/llm/native-request.ts` is the lowering adapter from opencode's session/AI SDK-shaped data into this package's `LLMRequest` model. +- `packages/opencode/src/session/llm/native-runtime.ts` is the execution adapter that calls raw `LLMClient.stream(request)` and bridges one provider turn of opencode tool calls through this package's typed dispatcher. +- `packages/opencode/src/session/llm/ai-sdk.ts` keeps the default AI SDK path compatible by converting AI SDK stream parts into this package's shared `LLMEvent`s. + +Keep this package independent of session concerns. Session auth, permissions, plugins, telemetry headers, and runtime selection belong in `packages/opencode/src/session/llm.ts` and its local adapters. + +### Request Flow + +The intended callsite is: + +```ts +const request = LLM.request({ + model: OpenAI.configure({ apiKey }).responses("gpt-4o-mini"), + system: "You are concise.", + prompt: "Say hello.", +}) + +const response = yield * LLMClient.generate(request) +``` + +`LLM.request(...)` builds an `LLMRequest`. `LLMClient.generate(...)` reads the executable route carried by `request.model.route`, builds the provider-native body, asks the route's transport for a real `HttpClientRequest.HttpClientRequest`, sends it through `RequestExecutor.Service`, parses the provider stream into common `LLMEvent`s, and finally returns an `LLMResponse`. + +Use `LLMClient.stream(request)` when callers want incremental `LLMEvent`s. Use `LLMClient.generate(request)` when callers want those same events collected into an `LLMResponse`. Use `LLMClient.prepare(request)` to compile a request through the route pipeline without sending it — the optional `Body` type argument narrows `.body` to the route's native shape (e.g. `prepare(...)` returns a `PreparedRequestOf`). The runtime body is identical; the generic is a type-level assertion. + +Filter or narrow `LLMEvent` streams with `LLMEvent.is.*` (camelCase guards, e.g. `events.filter(LLMEvent.is.toolCall)`). The kebab-case `LLMEvent.guards["tool-call"]` form also works but prefer `is.*` in new code. + +### Routes + +A route is the registered, runnable composition of four orthogonal pieces: + +- **`Protocol`** (`src/route/protocol.ts`) — semantic API contract. Owns request body construction (`body.from`), the body schema (`body.schema`), the streaming-event schema (`stream.event`), and the event-to-`LLMEvent` state machine (`stream.step`). `Route.make(...)` validates and JSON-encodes the body from `body.schema` and decodes frames with `stream.event`. Examples: `OpenAIChat.protocol`, `OpenResponses.protocol`, `OpenAIResponses.protocol`, `AnthropicMessages.protocol`, `Gemini.protocol`, `BedrockConverse.protocol`. +- **`Endpoint`** (`src/route/endpoint.ts`) — URL construction. The host, path, and route query live on the endpoint. `Endpoint.path("/chat/completions", { baseURL })` is the common case; pass a function for paths that embed the model id or a body field (e.g. `Endpoint.path(({ body }) => `/model/${body.modelId}/converse-stream`)`). +- **`Auth`** (`src/route/auth.ts`) — per-request transport authentication. Provider facades configure credentials onto the route before model selection, usually via `Auth.bearer(apiKey)` or `Auth.header(name, apiKey)`. Routes that need per-request signing (Bedrock SigV4, future Vertex IAM, Azure AAD) implement `Auth` as a function that signs the body and merges signed headers into the result. +- **`Framing`** (`src/route/framing.ts`) — bytes → frames. SSE (`Framing.sse`) is shared; Bedrock keeps its AWS event-stream framing as a typed `Framing` value alongside its protocol. + +Compose them via `Route.make(...)`: + +```ts +export const route = Route.make({ + id: "openai-chat", + provider: "openai", + protocol: OpenAIChat.protocol, + endpoint: Endpoint.path("/chat/completions", { + baseURL: "https://api.openai.com/v1", + }), + auth: Auth.bearer(), + framing: Framing.sse, +}) +``` + +Route defaults are request-shaping defaults such as `headers`, `limits`, `generation`, `providerOptions`, and `http`. Endpoint host/query belongs on the route endpoint. Selected `Model` values carry only model id, provider id, and the configured route value. Model capability/catalog metadata lives outside this package; protocol support is enforced by request lowering and typed `LLMError`s. + +The four-axis decomposition is the reason DeepSeek, TogetherAI, Cerebras, Baseten, Fireworks, and DeepInfra all reuse `OpenAIChat.protocol` verbatim — each provider deployment is a 5-15 line `Route.make(...)` call instead of a 300-400 line route clone. Bug fixes in one protocol propagate to every consumer of that protocol in a single commit. + +When a provider ships a non-HTTP transport (OpenAI's WebSocket Responses backend, hypothetical bidirectional streaming APIs), the seam is `Transport` — `WebSocketTransport.jsonTransport.with(...)` constructs an IO template whose `prepare` receives the route endpoint/auth at compile time, builds a WebSocket URL and message, and whose `frames` yields decoded text from the socket. Same protocol and endpoint source, different transport. + +### URL Construction + +`Endpoint` owns `{ baseURL, path, query }`. Each protocol route includes a canonical endpoint when the provider has one (e.g. `https://api.openai.com/v1`); provider helpers override endpoint fields by configuring the route before selecting a model. Routes that have no canonical URL (OpenAI-compatible Chat, GitHub Copilot) require configuration before execution. + +For providers where the URL is derived from typed inputs (Azure resource name, Bedrock region), the provider helper configures the route endpoint before calling `.model(...)`. Use `AtLeastOne` from `route/auth-options.ts` for inputs that accept either of two derivation paths (Azure: `resourceName` or `baseURL`). + +### Provider Facades + +Provider-facing APIs are configured facades over route values. Endpoint/auth/resource/API-version setup happens before model selection, and model selectors accept only a model or deployment id: + +```ts +const openai = OpenAI.configure({ apiKey, baseURL }) +const model = openai.responses("gpt-4o-mini") + +const azure = Azure.configure({ resourceName, apiKey, apiVersion: "v1" }) +const deployment = azure.responses("my-deployment") + +const gateway = CloudflareAIGateway.configure({ accountId, gatewayId, gatewayApiKey, apiKey }) +const proxied = gateway.model("openai/gpt-4o-mini") +``` + +Keep provider facades small and explicit: + +- Use branded `ProviderID.make(...)` and `ModelID.make(...)` where ids are constructed directly. +- Use `model` for the default API path and named methods for provider-native alternatives such as OpenAI `responses`, `responsesWebSocket`, and `chat`. +- Put provider-specific setup on `.configure(...)`; do not add `model(id, overrides)` as a duplicate construction path. +- Export lower-level `routes` arrays separately only when advanced internal wiring needs them. +- Prefer `apiKey` as provider-specific sugar and `auth` as the explicit override; keep them mutually exclusive in provider option types with `ProviderAuthOption`. +- Resolve `apiKey` → `Auth` with `AuthOptions.bearer(options, "_API_KEY")` (it honors an explicit `auth` override and falls back to `Auth.config(envVar)` so missing keys surface a typed `Authentication` error rather than a runtime crash). +- Use separate top-level facades for products with different required setup, such as `CloudflareAIGateway` and `CloudflareWorkersAI`. + +`Provider.make(...)` remains available for simple static provider definitions, but new built-in providers should prefer plain configured facades unless a helper removes real duplication without adding runtime behavior. + +### Provider Package Entrypoints + +Catalog-selected native providers use package-like export paths from `@opencode-ai/ai`. They are internal entrypoints in one npm package, not separately published provider packages. Every entrypoint implements `ProviderPackage.Definition` and exposes `model(modelID, settings)`, where settings are serializable provider configuration plus common `headers`, `body`, and `limits` overlays. + +```ts +import { model } from "@opencode-ai/ai/providers/openai/responses" + +const selected = model("gpt-5", { + apiKey, + transport: "websocket", +}) +``` + +Keep semantic APIs as separate entrypoints, such as OpenAI `chat` and `responses`. Keep transport choices inside the semantic entrypoint settings, so OpenAI Responses HTTP and WebSocket share one entrypoint. Provider facades may still expose named selectors such as `responsesWebSocket` for direct typed call sites; the package-like contract maps its settings to those selectors before returning an executable `Model`. + +Do not expose `Route` in provider package settings. Route composition stays an implementation detail behind `model(...)`. + +### Folder layout + +``` +packages/ai/src/ + schema/ canonical Schema model, split by concern + ids.ts branded IDs, literal types, ProviderMetadata + options.ts Generation/Provider/Http options, Limits, Model, cache policy + messages.ts content parts, Message, ToolDefinition, LLMRequest + events.ts Usage, individual events, LLMEvent, PreparedRequest, LLMResponse + errors.ts error reasons, LLMError, ToolFailure + index.ts barrel + llm.ts request constructors and convenience helpers + route/ + index.ts @opencode-ai/ai/route advanced barrel + client.ts Route.make + LLMClient.prepare/stream/generate + executor.ts RequestExecutor service + transport error mapping + protocol.ts Protocol type + Protocol.make + endpoint.ts Endpoint type + Endpoint.path + auth.ts Auth type + Auth.bearer / Auth.apiKeyHeader / Auth.passthrough + auth-options.ts ProviderAuthOption shape, AuthOptions.bearer, AtLeastOne helper + framing.ts Framing type + Framing.sse + transport/ transport implementations + index.ts Transport type + HttpTransport / WebSocketTransport namespaces + http.ts HttpTransport.httpJson — POST + framing + websocket.ts WebSocketTransport.json + WebSocketExecutor service + protocols/ + shared.ts ProviderShared toolkit used inside protocol impls + openai-chat.ts protocol + route (compose OpenAIChat.protocol) + open-responses.ts provider-neutral Responses protocol baseline + openai-responses.ts OpenAI tools/events/transports composed over OpenResponses + anthropic-messages.ts + gemini.ts + bedrock-converse.ts + bedrock-event-stream.ts framing for AWS event-stream binary frames + openai-compatible-chat.ts route that reuses OpenAIChat.protocol, no canonical URL + openai-compatible-responses.ts deployment adapter that reuses OpenResponses.protocol, no canonical URL + utils/ per-protocol helpers (auth, cache, media, tool-stream, ...) + providers/ + openai-compatible.ts generic Chat helper + family model helpers + openai-compatible-responses.ts generic Responses helper + openai-compatible-profile.ts family defaults (deepseek, togetherai, ...) + azure.ts / amazon-bedrock.ts / cloudflare.ts / github-copilot.ts / google.ts / xai.ts / openai.ts / anthropic.ts / openrouter.ts + tool.ts typed tool() helper + tool-runtime.ts narrow one-call typed tool dispatcher +``` + +The dependency arrow points down: `providers/*.ts` files import protocol routes and auth-option utilities; protocol modules import `endpoint`, `auth`, `framing`, and transport pieces. Protocols do not import provider facades. Lower-level modules know nothing about provider catalog metadata. `OpenAIResponses` composes the provider-neutral `OpenResponses` protocol; the baseline never imports the OpenAI extension. + +### Shared protocol helpers + +`ProviderShared` exports a small toolkit used inside protocol implementations to keep them focused on provider-native shapes: + +- `joinText(parts)` — joins an array of `TextPart` (or anything with a `.text`) with newlines. Use this anywhere a protocol flattens text content into a single string for a provider field. +- `parseToolInput(route, name, raw)` — Schema-decodes a tool-call argument string with the canonical "Invalid JSON input for `` tool call ``" error message. Treats empty input as `{}`. +- `parseJson(route, raw, message)` — generic JSON-via-Schema decode for non-tool bodies. +- `eventError(route, message, ...)` — typed `InvalidProviderOutput` constructor for stream-time decode failures. +- `validateWith(decoder)` — maps Schema decode errors to `InvalidRequest`. `Route.make(...)` uses this for body validation; lower-level routes can reuse it. +- `matchToolChoice(provider, choice, branches)` — branches over `LLMRequest["toolChoice"]` for provider-specific lowering. + +If you find yourself copying a 3-to-5-line snippet between two protocols, lift it into `ProviderShared` next to these helpers rather than duplicating. + +### Chronological System Updates + +`LLMRequest.system` is the initial privileged prompt that applies ahead of the conversation. `Message.system(...)` is a separate, provider-neutral chronological operator update inside `LLMRequest.messages`; it applies only from its position in history onward and accepts text content only. + +Native chronological system messages are route/model-specific. Anthropic Messages lowers them natively for Claude Opus 4.8 (`claude-opus-4-8`). Other routes and models intentionally lower the update in place into ordinary user-compatible text using this stable escaped representation: + +```text + +... + +``` + +The wrapped-user fallback preserves ordering while visibly lowering authority. Never silently pass a raw chronological `role: "system"` through a route that might reject it. Do not insert raw retrieved documents, tool output, or web content into privileged chronological system updates; keep untrusted content in ordinary user/tool channels. + +### Tools + +Tool loops are represented in common messages and events: + +```ts +const call = ToolCallPart.make({ id: "call_1", name: "lookup", input: { query: "weather" } }) +const result = Message.tool({ id: "call_1", name: "lookup", result: { forecast: "sunny" } }) + +const followUp = LLM.request({ + model, + messages: [Message.user("Weather?"), Message.assistant([call]), result], +}) +``` + +Routes lower these into provider-native assistant tool-call messages and tool-result messages. Streaming providers should emit `tool-input-delta` events while arguments arrive, then a final `tool-call` event with parsed input. + +### Tool dispatch + +`LLM.stream(request)` and `LLM.generate(request)` each run exactly one provider turn. Add tool schemas to `request.tools` with `Tool.toDefinitions(tools)`. When a caller wants the package's typed one-call execution behavior, pass each canonical local `tool-call` event to `ToolRuntime.dispatch(tools, call)`. + +```ts +const get_weather = tool({ + description: "Get current weather for a city", + parameters: Schema.Struct({ city: Schema.String }), + success: Schema.Struct({ temperature: Schema.Number, condition: Schema.String }), + execute: ({ city }) => + Effect.gen(function* () { + // city: string — typed from parameters Schema + const data = yield* WeatherApi.fetch(city) + return { temperature: data.temp, condition: data.cond } + // return type checked against success Schema + }), +}) + +const tools = { get_weather, get_time, ... } +const events = yield* LLM.stream( + LLMRequest.update(request, { tools: Tool.toDefinitions(tools) }), +).pipe(Stream.runCollect) + +const call = Array.from(events).find(LLMEvent.is.toolCall) +if (call && !call.providerExecuted) { + const dispatched = yield* ToolRuntime.dispatch(tools, call) + // Persist call + dispatched.result, then construct the next request explicitly. +} +``` + +The dispatcher: + +- On `tool-call`: looks up the named tool, decodes input against `parameters` Schema, dispatches to the typed `execute`, encodes the result against `success` Schema, and returns canonical `tool-result` events. +- Does not stream providers, construct Session events, schedule fibers, append history, count steps, or continue model rounds. +- Leaves persistence and continuation to the enclosing product flow. + +Handler dependencies (services, permissions, plugin hooks, abort handling) are closed over by the consumer at tool-construction time. Build the tools record inside an `Effect.gen` once and reuse it across many dispatches. + +Errors must be expressed as `ToolFailure`. The runtime catches it and emits a `tool-error` event, then a `tool-result` of `type: "error"`, so the model can self-correct on the next step. Anything that is not a `ToolFailure` is treated as a defect and fails the stream. Three recoverable error paths produce `tool-error` events: + +- The model called an unknown tool name. +- Input failed the `parameters` Schema. +- The handler returned a `ToolFailure`. + +Provider-defined / hosted tools (Anthropic `web_search` / `code_execution` / `web_fetch`, OpenAI Responses `web_search_call` / `file_search_call` / `code_interpreter_call` / `mcp_call` / `local_shell_call` / `image_generation_call` / `computer_use_call`) pass through the runtime untouched: + +- Routes surface the model's call as a `tool-call` event with `providerExecuted: true`, and the provider's result as a matching `tool-result` event with `providerExecuted: true`. +- Callers detect `providerExecuted` on `tool-call` and **skip local dispatch** — no handler is invoked and no `tool-error` is raised for "unknown tool". The provider already executed it. +- Callers that continue should retain both events in explicit history when the protocol requires it. Anthropic encodes them back as `server_tool_use` + `web_search_tool_result` (or `code_execution_tool_result` / `web_fetch_tool_result`) blocks; OpenAI Responses callers typically use `previous_response_id` instead of resending hosted-tool items. + +Add provider-defined tools to `request.tools` (no runtime entry needed). The matching route must know how to lower the tool definition into the provider-native shape; right now Anthropic accepts `web_search` / `code_execution` / `web_fetch` and OpenAI Responses accepts the hosted tool names listed above. + +## Protocol File Style + +Protocol files should look self-similar. Provider quirks belong behind named helpers so a new route can be reviewed by comparing the same sections across files. + +### Section order + +Use this order for every protocol module: + +1. Public model input +2. Request body schema +3. Streaming event schema +4. Parser state +5. Request body construction (`fromRequest`) +6. Stream parsing (`step` and per-event handlers) +7. Protocol and route +8. Protocol route export + +### Rules + +- Keep protocol files focused on the protocol. Move provider-specific projection, signing, media normalization, or other bulky transformations into `src/protocols/utils/*`. +- Use `Effect.fn("Provider.fromRequest")` for request body construction entrypoints. Use `Effect.fn(...)` for event handlers that yield effects; keep purely synchronous handlers as plain functions returning a `StepResult` that the dispatcher lifts via `Effect.succeed(...)`. +- Parser state owns terminal information. The state machine records finish reason, usage, and pending tool calls; emit one terminal `finish` event (or `provider-error`) for each completed response. If a provider splits reason and usage across events, merge them in parser state before flushing. +- Emit exactly one terminal `finish` event for a completed response, normally after a matching `step-finish`. Use `stream.terminal` to stop reading when the provider has a completion sentinel; use `stream.onHalt` when the final event must be flushed after the framed stream ends. +- Use shared helpers for repeated protocol policy such as text joining, usage totals, JSON parsing, and tool-call accumulation. `ToolStream` (`protocols/utils/tool-stream.ts`) accumulates streamed tool-call arguments uniformly. +- Make intentional provider differences explicit in helper names or comments. If two protocol files differ visually, the reason should be obvious from the names. +- Prefer dispatched per-event handlers (`onMessageStart`, `onContentBlockDelta`, ...) called from a small top-level `step` switch over a long if-chain. The dispatcher keeps the event surface visible at a glance. +- Keep tests in the same conceptual order as the protocol: basic prepare, tools prepare, unsupported lowering, text/usage parsing, tool streaming, finish reasons, provider errors. + +### Review checklist + +- Can the file be skimmed side-by-side with `openai-chat.ts` without hunting for equivalent sections? +- Are provider quirks named, isolated, and covered by focused tests? +- Does request body construction validate unsupported common content at the protocol boundary? +- Does stream parsing emit stable common events without leaking provider event order to callers? +- Does `toolChoice: "none"` behavior read as intentional? + +## Recording Tests + +Recorded tests use one cassette file per scenario. A cassette holds an ordered array of `{ request, response }` interactions, so multi-step flows (tool loops, retries, polling) record into a single file. Use `recordedTests({ prefix, requires })` and let the helper derive cassette names from test names: + +```ts +const recorded = recordedTests({ prefix: "openai-chat", requires: ["OPENAI_API_KEY"] }) + +recorded.effect("streams text", () => + Effect.gen(function* () { + // test body + }), +) +``` + +Replay is the default. `RECORD=true` records fresh cassettes locally and requires the listed env vars; unset `CI` before recording because CI always forces replay. Cassettes are written as pretty-printed JSON so multi-interaction diffs stay reviewable. + +Pass `provider`, `protocol`, and optional `tags` to `recordedTests(...)` / `recorded.effect.with(...)` so cassettes carry searchable metadata. Use recorded-test filters to replay or record a narrow subset without rewriting a whole file: + +- `RECORDED_PROVIDER=openai` matches tests tagged with `provider:openai`; comma-separated values are allowed. +- `RECORDED_PREFIX=openai-chat` matches cassette groups by `recordedTests({ prefix })`; comma-separated values are allowed. +- `RECORDED_TAGS=tool` requires all listed tags to be present, e.g. `RECORDED_TAGS=provider:togetherai,tool`. +- `RECORDED_TEST="streams text"` matches by test name, kebab-case test id, or cassette path. + +Filters apply in replay and record mode. Combine them with `RECORD=true` when refreshing only one provider or scenario. + +**Binary response bodies.** Most providers stream text (SSE, JSON). The recorder treats known textual media types (`text/*`, JSON/XML structured types, JavaScript, forms, YAML, and SVG) as text and stores every other response as base64 with `bodyEncoding: "base64"`. This preserves binary formats such as AWS event-stream frames without a lossy UTF-8 round trip. + +**Matching strategy.** A runtime request atomically claims the first unused recorded interaction that matches its method, URL, allow-listed headers, and canonical JSON body. Distinct requests may replay in any order or concurrently. Repeated identical requests consume their matching responses in cassette order, preserving deterministic retry and polling behavior. `scriptedResponses` (in `test/lib/http.ts`) is the deterministic counterpart for tests that don't need a live provider; it scripts response bodies in order without reading from disk. + +Do not blanket re-record an entire test file when adding one cassette. `RECORD=true` rewrites every recorded case that runs, and provider streams contain volatile IDs, timestamps, fingerprints, and obfuscation fields. Prefer deleting the one cassette you intend to refresh, or run a focused test pattern that only registers the scenario you want to record. Keep stable existing cassettes unchanged unless their request shape or expected behavior changed. diff --git a/packages/llm/DESIGN.md b/packages/ai/DESIGN.md similarity index 98% rename from packages/llm/DESIGN.md rename to packages/ai/DESIGN.md index 22e76969a4cb..5629c13408da 100644 --- a/packages/llm/DESIGN.md +++ b/packages/ai/DESIGN.md @@ -1,7 +1,7 @@ # AI Library Design -> Discussion draft. This document describes the intended replacement for the -> current private `@opencode-ai/llm` API. Names and exact TypeScript signatures +> Discussion draft. This document describes an intended clean-break redesign of +> the current private `@opencode-ai/ai` API. Names and exact TypeScript signatures > are illustrative until implementation, but the domain boundaries and defaults > are deliberate. @@ -315,7 +315,8 @@ const longer = { } ``` -There is no `LLM.updateRequest(...)` helper and no request Schema class. +There is no `LLM.updateRequest(...)` helper. The current Schema-backed implementation +uses `LLMRequest.update(...)` when canonical request data must be derived. ### Conversation history @@ -436,7 +437,7 @@ const call = Array.from(events).find(LLMEvent.is.toolCall) if (call && !call.providerExecuted) { const dispatched = yield * ToolRuntime.dispatch(tools, call) - const followUp = LLM.updateRequest(request, { + const followUp = LLMRequest.update(request, { messages: [...request.messages, Message.assistant([call]), Message.tool({ ...call, result: dispatched.result })], }) // Caller must invoke the provider again and repeat the loop. @@ -1074,7 +1075,6 @@ The redesign intentionally removes or changes these current concepts: | Current | Proposed | | --------------------------------------- | ----------------------------------------------------------- | -| `@opencode-ai/llm` | `@opencode-ai/ai` | | Mandatory `LLM.request({ model, ... })` | Inline calls or model-free portable requests | | `LLM.generate` means one turn | `LLM.generate` means complete run | | `LLMClient.generate/stream` | `LLM.generateTurn/streamTurn` for one turn | diff --git a/packages/ai/README.md b/packages/ai/README.md new file mode 100644 index 000000000000..377e09306fde --- /dev/null +++ b/packages/ai/README.md @@ -0,0 +1,362 @@ +# @opencode-ai/ai + +Schema-first AI primitives for opencode. Provider quirks live in adapters, not in calling code. + +```ts +import { Effect } from "effect" +import { LLM, LLMClient } from "@opencode-ai/ai" +import { OpenAI } from "@opencode-ai/ai/providers" + +const model = OpenAI.configure({ apiKey: process.env.OPENAI_API_KEY }).responses("gpt-4o-mini") + +const request = LLM.request({ + model, + system: "You are concise.", + prompt: "Say hello in one short sentence.", + generation: { maxTokens: 40 }, +}) + +const program = Effect.gen(function* () { + const response = yield* LLMClient.generate(request) + console.log(response.text) +}) +``` + +Run `LLMClient.stream(request)` instead of `generate` when you want incremental `LLMEvent`s. The event stream is provider-neutral — same shape across OpenAI Chat, OpenAI Responses, Anthropic Messages, Gemini, Bedrock Converse, and any OpenAI-compatible deployment. + +## Image generation + +Use `Image.generate` with an image model for direct asset generation: + +```ts +import { Image, ImageInput } from "@opencode-ai/ai" +import { OpenAI } from "@opencode-ai/ai/providers" + +const program = Effect.gen(function* () { + const response = yield* Image.generate({ + model: OpenAI.configure({ apiKey: process.env.OPENAI_API_KEY }).image("gpt-image-2"), + prompt: "A robot tending a rooftop garden", + options: { + n: 2, + size: "1024x1024", + quality: "high", // inferred from the OpenAI image model + outputFormat: "webp", + future_option: true, // unknown native options pass through unchanged + }, + }) + + return response.images // GeneratedImage[] with owned bytes or a provider URL +}) +``` + +Pass ordered image inputs to the same method for editing, composition, or image-conditioned generation: + +```ts +const response = + yield * + Image.generate({ + model, + prompt: "Combine these product photos into one studio scene", + images: [ + ImageInput.bytes(firstBytes, "image/png"), + ImageInput.url("https://example.com/second.webp"), + ImageInput.file("file_123"), + ], + options, + http, + }) +``` + +`ImageInput.fileUri(uri, mediaType)` represents provider file URIs such as Gemini Files. Raw strings are not +accepted as image inputs, avoiding ambiguity between base64, URLs, and provider IDs. Empty or omitted `images` +uses text-to-image generation; a non-empty array selects the provider's edit behavior without enforcing provider +image-count limits locally. `images` is the only common image-editing field. OpenAI uses multipart for byte/data-URL +edits and its JSON reference body for URL or file-ID edits. Its provider-specific `options.mask` accepts an +`ImageInput` for inpainting: + +```ts +yield * + Image.generate({ + model: OpenAI.configure({ apiKey }).image("gpt-image-2"), + prompt, + images: [ImageInput.bytes(sourceBytes, "image/png")], + options: { mask: ImageInput.bytes(maskBytes, "image/png") }, + }) +``` + +The OpenAI adapter extracts this helper value into the edit request's native `mask` field rather than passing the +tagged `ImageInput` object through as an ordinary option. On multipart requests, `http.body` can override option +fields but not structural `model`, `prompt`, `image[]`, or `mask` fields, and the transport owns the multipart +`Content-Type` boundary. For JSON requests, `http.body` remains the final raw-native overlay. Gemini does not fetch +public HTTP URLs, and hosted Z.ai image generation does not accept image inputs. These cases fail with +`InvalidRequest` before network I/O. + +Provider-native image options belong to each request. Raw `http.body` fields have final precedence over them: + +```ts +const model = OpenAI.configure({ apiKey }).image("gpt-image-2") + +yield * + Image.generate({ + model, + prompt, + options: { quality: "medium" }, + http, + }) +``` + +xAI image models use the same request API with xAI-native controls: + +```ts +yield * + Image.generate({ + model: XAI.configure({ apiKey }).image("any-model-id"), + prompt, + options: { + n: 2, + aspectRatio: "16:9", + resolution: "1k", + responseFormat: "b64_json", + future_option: true, + }, + http, + }) +``` + +Google's current Gemini image models use the same direct API: + +```ts +import { Google } from "@opencode-ai/ai/providers" + +const googleProgram = Effect.gen(function* () { + const response = yield* Image.generate({ + model: Google.configure({ apiKey }).image("any-model-id"), + prompt: "A robot tending a rooftop garden", + options: { + aspectRatio: "16:9", + imageSize: "2K", + seed: 42, + thinkingLevel: "HIGH", + includeThoughts: true, + futureOption: true, + }, + http, + }) + + return response.images +}) +``` + +Google image options are request-scoped and inferred from the selected model. Known fields autocomplete while +future string values and arbitrary native Gemini `generationConfig` fields remain available. Native fields override +their mapped aliases, and `http.body` is the final deep overlay. The selected model ID is sent to Gemini +`generateContent` without a local allowlist. + +Z.ai image models infer open Z.ai-native options from the selected model: + +```ts +yield * + Image.generate({ + model: ZAI.configure({ apiKey }).image("any-model-id"), + prompt, + options: { + quality: "hd", + userID: "user-123", + future_option: true, + }, + http, + }) +``` + +Z.ai does not include trustworthy MIME metadata for output URLs, so generated images use +`application/octet-stream`. Output URLs expire after 30 days; download and persist them promptly if they must +remain available. + +Conversational image generation remains part of the LLM interaction. OpenAI Responses exposes it through its hosted image tool: + +```ts +const program = Effect.gen(function* () { + const response = yield* LLM.generate( + LLM.request({ + model: OpenAI.configure({ apiKey }).responses("gpt-5"), + prompt: "Design a solarpunk rooftop garden, then show me.", + tools: [OpenAI.imageGeneration({ quality: "high" })], + }), + ) + + return response.message +}) +``` + +The hosted result is represented as a provider-executed tool call and tool result. Its image is a `file` content item with a data URI, so retaining `response.message` preserves the generated image for continuation. + +## Public API + +- **`LLM.request({...})`** — build a provider-neutral `LLMRequest`. Accepts ergonomic inputs (`system: string`, `prompt: string`) that normalize into the canonical Schema classes. +- **`LLM.generate` / `LLM.stream`** — re-exported from `LLMClient` for one-import use. +- **`Message.user(...)` / `Message.assistant(...)` / `Message.tool(...)`** — message constructors from the canonical schema model. +- **`Model.make(...)` / `ToolCallPart.make(...)` / `ToolResultPart.make(...)` / `ToolDefinition.make(...)`** — model and tool-related constructors from the canonical schema model. +- **`LLMClient.prepare(request)`** — compile a request through protocol body construction, validation, and HTTP preparation without sending. Useful for inspection and testing. +- **`LLMEvent.is.*`** — typed guards (`is.textDelta`, `is.toolCall`, `is.finish`, …) for filtering streams. +- **`Image.generate({...})`** — generate images through a provider-neutral image request and response model. +- **`ImageClient`** — Effect service and layer for image execution, parallel to `LLMClient`. + +## Caching + +Prompt caching is **on by default**. Every `LLMRequest` resolves to `cache: "auto"` unless the caller opts out with `cache: "none"`. Each protocol translates `CacheHint`s to its wire format (`cache_control` on Anthropic, `cachePoint` on Bedrock; OpenAI and Gemini do implicit caching server-side and don't need inline markers — auto is a no-op there). + +### Auto placement + +`"auto"` places up to four breakpoints — the last tool definition, the first system part, the last system part when distinct, and the final message boundary. These expose successively larger reusable prefixes for tools, the base agent, project instructions, and the active conversation. The rolling final-message boundary is the load-bearing detail in tool loops: it advances on every request so the previous cache entry stays within Anthropic's 20-block lookback. + +Tools precede every system and conversation block in the provider prefix, so tool definitions must remain byte-stable and deterministically ordered for downstream breakpoints to remain reusable. + +The math justifies the default: Anthropic's 5-minute cache write is 1.25× base, read is 0.1×, so a single reuse within 5 minutes already wins. One-shot completions below the per-model minimum-cacheable-token threshold silently no-op on the wire, so the worst case is harmless. + +### Opting out + +```ts +LLM.request({ + model, + system, + prompt: "one-off question", + cache: "none", +}) +``` + +### Granular policy + +```ts +cache: { + tools?: boolean, + system?: boolean, + messages?: "latest-user-message" | "latest-assistant" | { tail: number }, + ttlSeconds?: number, // ≥ 3600 → 1h on Anthropic/Bedrock; else 5m +} +``` + +### Manual hints + +Inline `CacheHint` on any text / system / tool / tool-result part overrides automatic placement. The auto policy preserves manual hints, counts them against Anthropic and Bedrock's four-breakpoint limit, and only fills the remaining slots. + +```ts +LLM.request({ + model, + system: [ + { type: "text", text: "stable system prompt", cache: { type: "ephemeral" } }, + ], + ... +}) +``` + +### Provider behavior table + +| Protocol | `cache: "auto"` | +| ----------------------- | ------------------------------------------------------------------------- | +| Anthropic Messages | emits up to 4 `cache_control` markers (4-breakpoint cap enforced) | +| Bedrock Converse | emits up to 4 `cachePoint` blocks (4-breakpoint cap enforced) | +| OpenAI Chat / Responses | no-op (implicit caching above 1024 tokens) | +| Gemini | no-op (implicit caching on 2.5+; explicit `CachedContent` is out-of-band) | + +Normalized cache usage is read back into `response.usage.cacheReadInputTokens` and `cacheWriteInputTokens` across every provider. + +## Providers + +Provider facades configure endpoint/auth/deployment details first, then expose model selectors that take only a model or deployment id. The selected model carries the executable route value used at runtime. + +```ts +import { OpenAI, CloudflareAIGateway } from "@opencode-ai/ai/providers" + +const openai = OpenAI.configure({ apiKey: process.env.OPENAI_API_KEY }).responses("gpt-4o-mini") +const gateway = CloudflareAIGateway.configure({ + accountId: process.env.CLOUDFLARE_ACCOUNT_ID, + gatewayApiKey: process.env.CLOUDFLARE_API_TOKEN, +}).model("workers-ai/@cf/meta/llama-3.1-8b-instruct") +``` + +Included providers: OpenAI, Anthropic, Google (Gemini), Google Vertex Gemini and Anthropic, Amazon Bedrock, Azure OpenAI, Cloudflare AI Gateway, Cloudflare Workers AI, GitHub Copilot, OpenRouter, xAI, Z.ai, plus generic OpenAI-compatible Chat and Responses entrypoints and an Anthropic Messages-compatible entrypoint. + +### Package-like entrypoints + +Native catalog integrations load provider behavior through package-like entrypoints. These are export paths from the same `@opencode-ai/ai` npm package, not independently published packages. Each entrypoint exports the same `model(modelID, settings)` contract, and `settings` contains serializable provider configuration plus common `headers`, `body`, and `limits` overlays. + +```ts +import { model } from "@opencode-ai/ai/providers/openai/responses" + +const selected = model("gpt-5", { + apiKey: process.env.OPENAI_API_KEY, + transport: "websocket", + headers: { "x-application": "opencode" }, + limits: { context: 200_000, output: 64_000 }, +}) +``` + +OpenAI Chat and OpenAI Responses are separate semantic entrypoints: + +- `@opencode-ai/ai/providers/openai/chat` +- `@opencode-ai/ai/providers/openai/responses` +- `@opencode-ai/ai/providers/openai-compatible/responses` +- `@opencode-ai/ai/providers/anthropic-compatible` +- `@opencode-ai/ai/providers/google-vertex/gemini` +- `@opencode-ai/ai/providers/google-vertex/chat` +- `@opencode-ai/ai/providers/google-vertex/responses` +- `@opencode-ai/ai/providers/google-vertex/messages` + +Responses HTTP versus WebSocket is a scoped `transport` setting on the OpenAI Responses entrypoint, not another entrypoint. Azure follows the same Chat/Responses split at `providers/azure/chat` and `providers/azure/responses`. Generic OpenAI-compatible Chat remains at `providers/openai-compatible`; the Responses adapter at `providers/openai-compatible/responses` uses the provider-neutral Open Responses protocol. OpenAI Responses extends that baseline with OpenAI tools, event variants, metadata, defaults, and transports. Generic Anthropic Messages-compatible providers use `providers/anthropic-compatible`, which the named Anthropic provider composes. Google Gemini and Amazon Bedrock expose their single native API through their existing provider paths. + +Vertex Gemini, Vertex Chat, Vertex Responses, and Vertex Messages are separate API entrypoints. All accept `project`, `location`, and an optional `accessToken`; when no explicit token or auth override is supplied they lazily use Google Application Default Credentials. Vertex Gemini instead selects express mode when `apiKey` or `GOOGLE_VERTEX_API_KEY` is present. Vertex Chat targets MaaS models through the OpenAI-compatible Chat Completions endpoint, while Vertex Responses targets Grok models and defaults `store` to `false` as required by Vertex. `providers/google-vertex` remains the default alias for `providers/google-vertex/gemini`. + +Tuned Vertex Gemini deployments use model ids shaped like `endpoints/1234567890` and require OAuth or ADC; Vertex express-mode API keys support publisher models only. + +```ts +import { model } from "@opencode-ai/ai/providers/google-vertex/gemini" + +model("gemini-3.5-flash", { project: "my-project", location: "global" }) +``` + +```ts +import { model } from "@opencode-ai/ai/providers/google-vertex/chat" + +model("deepseek-ai/deepseek-v3.2-maas", { project: "my-project", location: "global" }) +``` + +```ts +import { model } from "@opencode-ai/ai/providers/google-vertex/responses" + +model("xai/grok-4.20-reasoning", { project: "my-project", location: "global" }) +``` + +```ts +import { model } from "@opencode-ai/ai/providers/google-vertex/messages" + +model("claude-sonnet-4-6", { project: "my-project", location: "global" }) +``` + +Provider facades such as `OpenAI.configure(...).responses(...)` remain the direct application API. Package-like entrypoints are the self-similar loading contract used when a catalog selects behavior by export path. + +Other provider exports listed above remain direct facades until they explicitly implement the package-like contract. Exporting a provider facade does not implicitly make it a catalog-loadable provider package. + +## Provider options & HTTP overlays + +Three escape hatches in order of stability: + +1. **`generation`** — portable knobs (`maxTokens`, `temperature`, `topP`, `topK`, penalties, seed, stop). +2. **`providerOptions: { : {...} }`** — typed-at-the-facade provider-specific knobs (OpenAI `promptCacheKey`, Anthropic `thinking`, Gemini `thinkingConfig`, OpenRouter routing). +3. **`http: { body, headers, query }`** — last-resort serializable overlays merged into the final HTTP request. Reach for this only when a stable typed path doesn't yet exist. + +Route/provider defaults are overridden by request-level values for each axis. + +## Routes + +Adding a new model or deployment is usually 5-15 lines using `Route.make({ protocol, endpoint, auth, framing, ... })`. The route owns endpoint/auth/framing and the protocol owns body construction plus stream parsing. Transports are reusable IO templates that receive route endpoint/auth at compile time. Capability/catalog metadata lives outside this low-level package; unsupported request shapes fail during protocol lowering. See `AGENTS.md` for the architectural detail. + +## Effect + +This package is built on Effect. Public methods return `Effect` or `Stream`; provide `LLMClient.layer` for LLM dispatch and `ImageClient.layer` for image dispatch, then import the provider/protocol modules for the routes you use. The example at `example/tutorial.ts` is a runnable walkthrough. + +## See also + +- `AGENTS.md` — architecture, route construction, contributor guide +- `STATUS.md` — native provider parity status and AI SDK migration gaps +- `example/tutorial.ts` — runnable end-to-end walkthrough +- `test/provider/*.test.ts` — fixture-first protocol tests; `*.recorded.test.ts` files cover live cassettes diff --git a/packages/ai/STATUS.md b/packages/ai/STATUS.md new file mode 100644 index 000000000000..0e25ca2e3fb9 --- /dev/null +++ b/packages/ai/STATUS.md @@ -0,0 +1,108 @@ +# LLM Provider Parity Status + +Last reviewed: 2026-07-24 + +This file tracks the gap between the native `@opencode-ai/ai` package and the AI SDK provider packages that opencode still depends on for many catalog/runtime paths. + +## Existing Status Sources + +| File | What it tracks | Limitation | +| ----------------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------- | +| `packages/ai/DESIGN.md` | Future clean-break API proposal for `@opencode-ai/ai`. | Not a provider parity tracker. | +| `packages/ai/example/call-sites.md` | Route/value/provider-facade migration checklist and call-site sketches. | Architecture migration only; not AI SDK package parity. | + +## Current Implementation Snapshot + +| Native slice | Source | Current state | Main gaps | +| ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| OpenAI Chat | `src/protocols/openai-chat.ts`, `src/providers/openai.ts` | Usable. Streams text, reasoning deltas, tool calls, usage, images, and common generation controls. | No typed structured-output / `response_format` path. Limited typed OpenAI option surface compared with SDK escape hatches. | +| OpenAI Responses HTTP | `src/protocols/open-responses.ts`, `src/protocols/openai-responses.ts`, `src/providers/openai.ts` | Usable. Extends the Open Responses baseline with hosted-tool event surfacing, reasoning replay metadata, GPT-5 defaults, and cache usage. | No explicit `previous_response_id` path. Typed options cover only a subset of Responses fields. Structured output is still mostly synthetic-tool based. | +| OpenAI Responses WebSocket | `src/protocols/openai-responses.ts`, `src/route/transport/websocket.ts` | Present as `OpenAI.responsesWebSocket(...)`. | Runner/catalog support explicitly must not downgrade WebSocket routes; broader runtime selection is not complete. | +| OpenAI-compatible Chat | `src/protocols/openai-compatible-chat.ts`, `src/providers/openai-compatible.ts` | Usable for generic Chat and several profiles: Baseten, Cerebras, DeepInfra, DeepSeek, Fireworks, Groq, TogetherAI. | Family quirks are mostly endpoint defaults, not full typed behavior. | +| Open Responses-compatible | `src/protocols/open-responses.ts`, `src/protocols/openai-compatible-responses.ts`, `src/providers/openai-compatible-responses.ts` | Usable for deployments that implement the provider-neutral Open Responses protocol. The deployment adapter does not inherit OpenAI tools, events, metadata, or defaults. | No named family profiles or recorded deployment coverage yet. | +| Anthropic-compatible Messages | `src/protocols/anthropic-messages.ts`, `src/providers/anthropic-compatible.ts` | Usable for deployments that implement the Anthropic Messages wire protocol. Named Anthropic composes this base; MiniMax M3 has recorded text and tool-loop coverage. | No named compatible family profiles yet. | +| Anthropic Messages | `src/protocols/anthropic-messages.ts`, `src/providers/anthropic.ts` | Usable. Supports tools, thinking, cache control, images, server-hosted tool events, and usage. | Provider option surface is small. Beta/header handling, metadata, and newer Messages fields need a typed parity pass. | +| Gemini Developer API | `src/protocols/gemini.ts`, `src/providers/google.ts` | Usable for Google API key flow. Supports text, images, tools, thinking signatures, and cache usage. | This is not Vertex. Typed provider options are narrow; many Gemini request fields currently require raw `http.body` overlays. | +| Vertex Gemini | `src/protocols/gemini.ts`, `src/providers/google-vertex.ts` | Usable through API-key express mode, explicit OAuth tokens, or ADC with project/location endpoint derivation, including tuned `endpoints/...` deployments. | Core runner/catalog mapping and recorded provider coverage are missing. | +| Vertex Chat | `src/protocols/openai-chat.ts`, `src/providers/google-vertex-chat.ts` | Usable for MaaS models through OpenAI-compatible Chat Completions with explicit OAuth tokens or ADC and project/location endpoint derivation. | Core runner/catalog mapping and recorded provider coverage are missing; MaaS family-specific request parity needs review. | +| Vertex Responses | `src/protocols/open-responses.ts`, `src/providers/google-vertex-responses.ts` | Usable for Grok models through Open Responses with explicit OAuth tokens or ADC, project/location endpoint derivation, and an explicit `store: false` Vertex default. | Core runner/catalog mapping and recorded provider coverage are missing; stateful continuation is not supported by Vertex. | +| Vertex Messages | `src/protocols/anthropic-messages.ts`, `src/providers/google-vertex-messages.ts` | Usable through explicit OAuth tokens or ADC, including global, regional, and `eu`/`us` multi-region endpoints. | Core runner/catalog mapping and recorded provider coverage are missing; Vertex-specific hosted-tool parity needs review. | +| Bedrock Converse | `src/protocols/bedrock-converse.ts`, `src/providers/amazon-bedrock.ts` | Partial but real. Supports AWS event-stream framing, SigV4 with supplied credentials, bearer auth, tools, reasoning signatures, media, cache points, and recorded tests. | Native facade does not mirror the AI SDK plugin's default AWS credential chain/profile behavior. Runner/catalog mapping is missing. Guardrails, inference profiles, region-specific model ID fixes, and model-specific request fields need a parity pass. | +| Azure OpenAI | `src/providers/azure.ts` using OpenAI Chat/Responses protocols | Partial. Supports resource/base URL setup, API key auth, API version query, Chat, and Responses selectors. | Core runner does not map `@ai-sdk/azure` to this native facade. AAD/token auth and Azure-specific endpoint variants need review. | +| Cloudflare AI Gateway / Workers AI | `src/providers/cloudflare.ts` | Present via OpenAI-compatible Chat routes. | Useful but not part of the critical AI SDK replacement set yet. Needs per-product recorded coverage before relying on it broadly. | +| OpenRouter | `src/providers/openrouter.ts` | Present with OpenRouter-specific usage/reasoning/prompt-cache options over Chat. | Responses-style OpenRouter support is absent. | +| xAI | `src/providers/xai.ts` | Present with Responses and Chat selectors. | Needs package-parity review against the AI SDK xAI provider. | +| GitHub Copilot | `src/providers/github-copilot.ts` | Present as explicit-base-URL OpenAI Chat/Responses facade. | Runtime/catalog integration remains specialized and should stay separate from public OpenAI-compatible defaults. | + +## V2 Runner Status + +`packages/core/src/session/runner/model.ts` currently resolves only this native subset from catalog `aisdk` metadata: + +| Catalog API | Native route used today | +| --------------------------------------------------- | ---------------------------- | +| `aisdk:@ai-sdk/openai` | `OpenAIResponses.route` | +| `aisdk:@ai-sdk/anthropic` | `AnthropicMessages.route` | +| `aisdk:@ai-sdk/openai-compatible` with explicit URL | `OpenAICompatibleChat.route` | + +Other `aisdk:` packages, including Google Vertex, Azure, and Bedrock, currently fall back through the AI SDK loader in the production runner. The dependency-free resolver seam rejects them with `SessionRunnerModel.UnsupportedPackageError`; they are not native route mappings yet. + +## AI SDK Package Parity Matrix + +| AI SDK package | Intended native target | Status | Biggest gaps | +| --------------------------------- | -------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `@ai-sdk/openai` | `OpenAI.chat`, `OpenAI.responses`, `OpenAI.responsesWebSocket` | Partial / usable | Add complete typed option coverage, structured output strategy, explicit Responses continuation support, and runner route selection between Chat/Responses/WebSocket. | +| `@ai-sdk/openai-compatible` | Generic OpenAI-compatible Chat and Responses | Partial / usable | Decide per-family namespace/profile behavior and runner API selection for providers that support Responses versus Chat only. | +| `@ai-sdk/anthropic` | `AnthropicMessages` | Partial / usable | Finish Messages API parity for headers/betas/metadata/newer fields and document hosted-tool continuation expectations. | +| `@ai-sdk/google` | Gemini Developer API | Partial / usable | Add typed options for safety, response schema/modalities, cached content, grounding/search/code execution, and non-text output modes where supported. | +| `@ai-sdk/google-vertex` | Vertex Gemini namespace/facade | Partial / usable | Add runner/catalog mapping, recorded coverage, and broader provider-option parity. | +| `@ai-sdk/google-vertex/anthropic` | Anthropic Messages over Vertex namespace/facade | Partial / usable | Add runner/catalog mapping, recorded coverage, and Vertex-specific hosted-tool parity. | +| `@ai-sdk/google-vertex/maas` | Vertex Chat | Partial / usable | Add runner/catalog mapping, recorded coverage, and MaaS family-specific request parity. | +| `@ai-sdk/google-vertex/xai` | Vertex Chat / Responses | Partial / usable | Decide Chat/Responses selection for catalog models, add runner mapping and recorded coverage, and review xAI-specific request options. | +| `@ai-sdk/azure` | Azure OpenAI Chat/Responses facade | Partial | Map runner/catalog metadata to native Azure, handle resourceName/baseURL/apiVersion variants, add AAD/token auth story, and verify Chat vs Responses deployment selection. | +| `@ai-sdk/amazon-bedrock` | Bedrock Converse | Partial | Add default AWS credential chain/profile support, region/inference-profile model ID handling, provider option parity via `additionalModelRequestFields`, guardrails/performance config, and runner/catalog mapping. | +| `@ai-sdk/amazon-bedrock/mantle` | Bedrock Mantle OpenAI-compatible Chat/Responses namespace | Missing | Decide native Mantle shape, likely separate from Converse because it uses OpenAI-compatible Chat/Responses semantics over Bedrock. Add package mapping and tests. | + +## Highest-Risk Gaps + +1. Runner support is narrower than the LLM package. The package has native provider facades for Google, Azure, and Bedrock, but the V2 Session runner only maps OpenAI, Anthropic, and explicit OpenAI-compatible Chat from `aisdk` catalog metadata. +2. The Open Responses adapter is available through a separate package entrypoint, but the V2 runner still maps `@ai-sdk/openai-compatible` to Chat only. Catalog selection must become API-aware before Responses deployments can use it. +3. Bedrock native auth is not AI SDK parity. The AI SDK plugin uses the default AWS provider chain, profile, container credentials, and Bedrock bearer token env behavior. Native Bedrock currently expects explicit credentials or bearer auth on the facade. +4. Vertex Gemini, Vertex Chat, Vertex Responses, and Vertex Messages now have native package entrypoints, but the core runner does not map catalog metadata to them yet and recorded provider coverage is still missing. +5. Azure is only a provider facade, not a full runtime replacement. Native Azure exists, but the catalog runner does not select it, and token auth/resource variants need review. +6. Provider option typing is uneven. OpenAI, Anthropic, Gemini, Bedrock, and OpenRouter each expose a small typed subset plus raw HTTP overlays; this is useful but not equivalent to AI SDK provider option coverage. +7. Structured output is not provider-native yet. `LLM.generateObject` still uses a synthetic tool strategy, while the future design expects native structured output where reliable and tool fallback where needed. +8. Package/namespace boundaries for the current native loading set are explicit in docs and exports. Other exported provider facades are not catalog package entrypoints until they implement the contract. Vertex xAI still needs catalog API selection; the missing native boundary is Bedrock Mantle. +9. Recorded coverage is uneven. OpenAI, Anthropic, Gemini, Bedrock Converse, Cloudflare, OpenRouter, and several OpenAI-compatible Chat providers have cassettes. Azure, Vertex, and Mantle need first-class recorded scenarios before switching defaults. + +## Native Namespace Shape + +These are implementation/API slices, not separate npm packages. + +| API slice | Package-like entrypoint | Purpose | +| ----------------------------- | ------------------------------------------------------- | ---------------------------------------------------------------------------- | +| OpenAI Chat | `@opencode-ai/ai/providers/openai/chat` | OpenAI `/chat/completions` semantics. | +| OpenAI Responses | `@opencode-ai/ai/providers/openai/responses` | OpenAI `/responses` semantics with HTTP/WebSocket selected through settings. | +| OpenAI-compatible Chat | `@opencode-ai/ai/providers/openai-compatible` | Generic OpenAI-compatible `/chat/completions`. | +| Open Responses-compatible | `@opencode-ai/ai/providers/openai-compatible/responses` | Generic provider-neutral `/responses`. | +| Anthropic-compatible Messages | `@opencode-ai/ai/providers/anthropic-compatible` | Generic Anthropic-compatible `/messages`. | +| Anthropic Messages | `@opencode-ai/ai/providers/anthropic` | Anthropic Messages API. | +| Gemini Developer API | `@opencode-ai/ai/providers/google` | Google AI Studio Gemini API. | +| Vertex Gemini | `@opencode-ai/ai/providers/google-vertex/gemini` | Vertex Gemini API; `providers/google-vertex` is the default alias. | +| Vertex Chat | `@opencode-ai/ai/providers/google-vertex/chat` | Vertex OpenAI-compatible Chat Completions for MaaS models. | +| Vertex Responses | `@opencode-ai/ai/providers/google-vertex/responses` | Vertex Open Responses for Grok models. | +| Vertex Messages | `@opencode-ai/ai/providers/google-vertex/messages` | Vertex-hosted Anthropic Messages API. | +| Bedrock Converse | `@opencode-ai/ai/providers/amazon-bedrock` | AWS Bedrock Converse API. | +| Bedrock Mantle | Missing | AWS Bedrock Mantle OpenAI-compatible APIs. | +| Azure OpenAI Chat | `@opencode-ai/ai/providers/azure/chat` | Azure specialization of OpenAI Chat. | +| Azure OpenAI Responses | `@opencode-ai/ai/providers/azure/responses` | Azure specialization of OpenAI Responses. | + +## Suggested Next Work Slices + +1. Add native runner/catalog mappings for `@ai-sdk/azure`, `@ai-sdk/google`, and `@ai-sdk/amazon-bedrock` where the existing native facades are already close. +2. Add API-aware runner/catalog selection between OpenAI-compatible Chat and Responses. +3. Bring Bedrock native auth/config to AI SDK parity: region, profile, default AWS credential chain, bearer token env, endpoint override, and cross-region inference profile handling. +4. Add runner/catalog mappings and recorded scenarios for the native Vertex Gemini, Chat, Responses, and Messages entrypoints. +5. Decide Chat/Responses selection for `@ai-sdk/google-vertex/xai` catalog models. +6. Add Bedrock Mantle as a separate OpenAI-compatible Bedrock namespace after deciding whether it uses Chat, Responses, or both by model. +7. Expand typed provider options from the existing V1 lowerer knowledge in `packages/core/src/v1/config/provider-options.ts` before adding more raw overlay examples. +8. Add recorded provider tests for Azure, Vertex Gemini, Vertex Chat, Vertex Responses, Vertex Messages, Bedrock credential-chain behavior, and Mantle before making native runtime the default for those packages. diff --git a/packages/llm/example/call-sites.md b/packages/ai/example/call-sites.md similarity index 91% rename from packages/llm/example/call-sites.md rename to packages/ai/example/call-sites.md index 093f74e51de5..0b33d28c480b 100644 --- a/packages/llm/example/call-sites.md +++ b/packages/ai/example/call-sites.md @@ -7,7 +7,7 @@ values directly. ## Conversation Summary Kit and Aidan want provider-specific LLM behavior to move out of opencode's AI -SDK transform path and into `packages/llm` where possible. The goal is not a big +SDK transform path and into `packages/ai` where possible. The goal is not a big generic transform layer; the goal is small composable route definitions backed by recorded golden tests. @@ -342,14 +342,51 @@ const response = ) ``` -HTTP versus WebSocket is represented as named route selectors, not as model or -request overrides. Same protocol, different transport, different route: +For direct provider-facade calls, HTTP versus WebSocket is represented as named +route selectors, not as model or request overrides. Same protocol, different +transport, different route: ```ts OpenAI.responses("gpt-4o") OpenAI.responsesWebSocket("gpt-4o") ``` +The package-like OpenAI Responses entrypoint instead keeps transport scoped to +Responses settings while preserving the same `model(...)` contract: + +```ts +import { model } from "@opencode-ai/ai/providers/openai/responses" + +model("gpt-4o", { apiKey, transport: "websocket" }) +``` + +Vertex keeps Gemini, Chat, Responses, and Messages as separate package-like entrypoints, +while sharing project/location resolution and ADC authentication internally: + +```ts +import { model } from "@opencode-ai/ai/providers/google-vertex/gemini" + +model("gemini-3.5-flash", { project, location: "global" }) +``` + +```ts +import { model } from "@opencode-ai/ai/providers/google-vertex/chat" + +model("deepseek-ai/deepseek-v3.2-maas", { project, location: "global" }) +``` + +```ts +import { model } from "@opencode-ai/ai/providers/google-vertex/responses" + +model("xai/grok-4.20-reasoning", { project, location: "global" }) +``` + +```ts +import { model } from "@opencode-ai/ai/providers/google-vertex/messages" + +model("claude-sonnet-4-6", { project, location: "global" }) +``` + The client should not require a different public layer just because a selected route uses WebSocket. Use one `LLMClient.layer` with HTTP and WebSocket runtime capabilities available; routes that do not need WebSocket simply never touch it. @@ -468,10 +505,10 @@ const model = ``` That boundary can branch on durable config/catalog metadata and call typed -provider APIs directly. Transport selection belongs there too: map metadata like -`endpoint.websocket` to `OpenAI.responsesWebSocket(apiModelID)`; otherwise use -the normal `OpenAI.responses(apiModelID)` route. The client runtime only executes -the route carried by the model. +provider APIs directly. A direct provider-facade boundary maps metadata like +`endpoint.websocket` to `OpenAI.responsesWebSocket(apiModelID)`. A package-loading +boundary passes `transport: "websocket"` to the OpenAI Responses entrypoint. +The client runtime only executes the route carried by the resulting model. ## Competitive Shape @@ -507,8 +544,9 @@ App boundary = explicit durable-config -> typed-provider call id. - No `model(id, overrides)` escape hatch. Model selection takes the model id; endpoint/auth/deployment customization happens by configuring the route first. -- No transport override on model/request. HTTP SSE versus WebSocket is a named - route selector such as `responses` versus `responsesWebSocket`. +- No transport override on an executable model or request. Direct provider + facades use `responses` versus `responsesWebSocket`; the package-like Responses + entrypoint maps its scoped `transport` setting before constructing the model. - No separate public `LLMClient.layerWithWebSocket`. The runtime should expose one client layer with the available transport capabilities. - No executable `ModelRef`. The executable handle is `Model`; durable model diff --git a/packages/llm/example/tutorial.ts b/packages/ai/example/tutorial.ts similarity index 93% rename from packages/llm/example/tutorial.ts rename to packages/ai/example/tutorial.ts index 407e2a555ec6..7ee4abb1463b 100644 --- a/packages/llm/example/tutorial.ts +++ b/packages/ai/example/tutorial.ts @@ -1,12 +1,12 @@ import { Config, Effect, Formatter, Layer, Schema, Stream } from "effect" -import { LLM, LLMClient, Message, ProviderID, Tool, ToolRuntime } from "@opencode-ai/llm" -import { Route, Auth, Endpoint, Framing, Protocol, RequestExecutor, WebSocketExecutor } from "@opencode-ai/llm/route" -import { OpenAI } from "@opencode-ai/llm/providers" +import { LLM, LLMClient, LLMRequest, Message, ProviderID, Tool, ToolRuntime } from "@opencode-ai/ai" +import { Route, Auth, Endpoint, Framing, Protocol, RequestExecutor, WebSocketExecutor } from "@opencode-ai/ai/route" +import { OpenAI } from "@opencode-ai/ai/providers" /** * A runnable walkthrough of the LLM package use-site API. * - * Run from `packages/llm` with an OpenAI key in the environment: + * Run from `packages/ai` with an OpenAI key in the environment: * * OPENAI_API_KEY=... bun example/tutorial.ts * @@ -78,7 +78,10 @@ const streamText = LLM.stream(request).pipe( Stream.tap((event) => Effect.sync(() => { if (event.type === "text-delta") process.stdout.write(`\ntext: ${event.text}`) - if (event.type === "finish") process.stdout.write(`\nfinish: ${event.reason}\n`) + if (event.type === "finish") + process.stdout.write( + `\nfinish: ${event.reason.normalized}${event.reason.raw ? ` (${event.reason.raw})` : ""}\n`, + ) }), ), Stream.runDrain, @@ -113,7 +116,7 @@ const streamWithTools = Effect.gen(function* () { // A durable agent would persist these messages before starting another // raw model turn. This tutorial keeps the boundary visible instead. - const followUp = LLM.updateRequest(request, { + const followUp = LLMRequest.update(request, { messages: [ ...request.messages, Message.assistant([event]), @@ -194,7 +197,7 @@ const FakeProtocol = Protocol.make({ event: Schema.String, initial: () => undefined, step: (_, frame) => Effect.succeed([undefined, [{ type: "text-delta", id: "text-0", text: frame }]] as const), - onHalt: () => [{ type: "finish", reason: "stop" }], + onHalt: () => [{ type: "finish", reason: { normalized: "stop" } }], }, }) @@ -238,7 +241,7 @@ const inspectFakeProvider = Effect.gen(function* () { // Provide the LLM runtime and the HTTP request executor once. Keep one path // enabled at a time so the tutorial can demonstrate generate, prepare, stream, // or tool-loop behavior without spending tokens on every example. -const requestExecutorLayer = RequestExecutor.defaultLayer +const requestExecutorLayer = RequestExecutor.fetchLayer const llmDeps = Layer.mergeAll(requestExecutorLayer, WebSocketExecutor.layer) const llmClientLayer = LLMClient.layer.pipe(Layer.provide(llmDeps)) diff --git a/packages/ai/package.json b/packages/ai/package.json new file mode 100644 index 000000000000..f83d89430f41 --- /dev/null +++ b/packages/ai/package.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://json.schemastore.org/package.json", + "version": "1.17.20", + "name": "@opencode-ai/ai", + "type": "module", + "license": "MIT", + "scripts": { + "setup:recording-env": "bun run script/setup-recording-env.ts", + "test": "bun test --timeout 30000 --only-failures", + "typecheck": "tsgo --noEmit && tsgo --noEmit -p tsconfig.types.json", + "build": "tsc -p tsconfig.build.json" + }, + "files": [ + "dist" + ], + "exports": { + ".": "./src/index.ts", + "./*": "./src/*.ts" + }, + "devDependencies": { + "@clack/prompts": "1.0.0-alpha.1", + "@effect/platform-node": "catalog:", + "@opencode-ai/http-recorder": "workspace:*", + "@tsconfig/bun": "catalog:", + "@types/bun": "catalog:", + "@typescript/native-preview": "catalog:", + "typescript": "catalog:" + }, + "dependencies": { + "@smithy/eventstream-codec": "4.2.14", + "@smithy/util-utf8": "4.2.2", + "@opencode-ai/schema": "workspace:*", + "aws4fetch": "1.0.20", + "effect": "catalog:", + "google-auth-library": "10.5.0" + } +} diff --git a/packages/ai/script/publish.ts b/packages/ai/script/publish.ts new file mode 100644 index 000000000000..f03dd084b02c --- /dev/null +++ b/packages/ai/script/publish.ts @@ -0,0 +1,38 @@ +#!/usr/bin/env bun +import { Script } from "@opencode-ai/script" +import { $ } from "bun" +import { fileURLToPath } from "url" + +const dir = fileURLToPath(new URL("..", import.meta.url)) +process.chdir(dir) + +async function published(name: string, version: string) { + return (await $`npm view ${name}@${version} version`.nothrow()).exitCode === 0 +} + +await $`bun run build` +const originalText = await Bun.file("package.json").text() +const pkg = JSON.parse(originalText) as { + name: string + version: string + exports: Record +} +if (await published(pkg.name, pkg.version)) { + console.log(`already published ${pkg.name}@${pkg.version}`) +} else { + for (const [key, value] of Object.entries(pkg.exports)) { + const file = value.replace("./src/", "./dist/").replace(".ts", "") + // @ts-ignore + pkg.exports[key] = { + import: file + ".js", + types: file + ".d.ts", + } + } + await Bun.write("package.json", JSON.stringify(pkg, null, 2)) + try { + await $`bun pm pack` + await $`npm publish *.tgz --tag ${Script.channel} --access public` + } finally { + await Bun.write("package.json", originalText) + } +} diff --git a/packages/llm/script/recording-cost-report.ts b/packages/ai/script/recording-cost-report.ts similarity index 100% rename from packages/llm/script/recording-cost-report.ts rename to packages/ai/script/recording-cost-report.ts diff --git a/packages/llm/script/setup-recording-env.ts b/packages/ai/script/setup-recording-env.ts similarity index 97% rename from packages/llm/script/setup-recording-env.ts rename to packages/ai/script/setup-recording-env.ts index d32769b3cea5..281c9b8a8de5 100644 --- a/packages/llm/script/setup-recording-env.ts +++ b/packages/ai/script/setup-recording-env.ts @@ -161,6 +161,18 @@ const PROVIDERS: ReadonlyArray = [ vars: [{ name: "TOGETHER_AI_API_KEY" }], validate: (env) => validateBearer("https://api.together.xyz/v1/models", Redacted.make(env.TOGETHER_AI_API_KEY)), }, + { + id: "minimax", + label: "MiniMax", + tier: "compatible", + note: "Anthropic-compatible Messages text/tool recorded tests", + vars: [{ name: "MINIMAX_API_KEY" }], + validate: (env) => + HttpClientRequest.get("https://api.minimax.io/anthropic/v1/models").pipe( + HttpClientRequest.setHeader("x-api-key", Redacted.value(Redacted.make(env.MINIMAX_API_KEY))), + executeRequest, + ), + }, { id: "mistral", label: "Mistral", diff --git a/packages/ai/src/cache-policy.ts b/packages/ai/src/cache-policy.ts new file mode 100644 index 000000000000..7679c7cf5437 --- /dev/null +++ b/packages/ai/src/cache-policy.ts @@ -0,0 +1,147 @@ +// Apply an `LLMRequest.cache` policy by injecting `CacheHint`s onto the parts +// the policy designates. Runs once at compile time, before the per-protocol +// body builder, so the existing inline-hint lowering path handles the rest. +// +// The default `"auto"` shape places breakpoints at the last tool definition, +// the first and last distinct system parts, and the conversation tail. This +// exposes reusable tool, base-agent, project, and session prefixes while +// advancing the tail after each tool result keeps the previous cache entry +// within Anthropic's 20-block lookback during long agent turns. +// +// Manual `cache: CacheHint` placements on individual parts are preserved and +// count against the four-breakpoint budget; auto only fills remaining slots. +import { CacheHint, type CachePolicy, type CachePolicyObject } from "./schema/options" +import { LLMRequest, Message, ToolDefinition, type ContentPart } from "./schema/messages" + +const AUTO: CachePolicyObject = { + tools: true, + system: true, + messages: { tail: 1 }, +} + +const NONE: CachePolicyObject = {} +const BREAKPOINT_CAP = 4 + +// Resolution rules: +// - undefined → "auto" — caching is on by default. The math favors it: +// Anthropic 5m-cache write is 1.25x base, read is 0.1x, +// so a single reuse within 5 minutes already wins. +// - "auto" → tools + first/last system + final message boundary. +// - "none" → no auto placement; manual `CacheHint`s still flow. +// - object form → exactly what the caller asked for. +const resolve = (policy: CachePolicy | undefined): CachePolicyObject => { + if (policy === undefined || policy === "auto") return AUTO + if (policy === "none") return NONE + return policy +} + +// Protocols whose wire format ignores inline cache markers (OpenAI's implicit +// prefix caching, Gemini's implicit + out-of-band CachedContent). Skip the +// whole policy pass for these — emitting hints would be harmless but pointless. +const RESPECTS_INLINE_HINTS = new Set(["anthropic-messages", "bedrock-converse"]) + +const makeHint = (ttlSeconds: number | undefined): CacheHint => + ttlSeconds !== undefined ? new CacheHint({ type: "ephemeral", ttlSeconds }) : new CacheHint({ type: "ephemeral" }) + +interface Budget { + remaining: number +} + +const markLastTool = ( + tools: ReadonlyArray, + hint: CacheHint, + budget: Budget, +): ReadonlyArray => { + if (tools.length === 0) return tools + const last = tools.length - 1 + if (tools[last]!.cache || budget.remaining === 0) return tools + budget.remaining -= 1 + return tools.map((tool, i) => (i === last ? new ToolDefinition({ ...tool, cache: hint }) : tool)) +} + +const markSystemBoundaries = (system: LLMRequest["system"], hint: CacheHint, budget: Budget): LLMRequest["system"] => { + if (system.length === 0) return system + let changed = false + const next = system.map((part, index) => { + if ((index !== 0 && index !== system.length - 1) || part.cache || budget.remaining === 0) return part + budget.remaining -= 1 + changed = true + return { ...part, cache: hint } + }) + return changed ? next : system +} + +const lastIndexOfRole = (messages: ReadonlyArray, role: Message["role"]): number => + messages.findLastIndex((m) => m.role === role) + +// Mark the last text part of `messages[index]`. If no text part exists, mark +// the last content part regardless of type — that's the breakpoint position +// in tool-result-only messages too. +const markMessageAt = ( + messages: ReadonlyArray, + index: number, + hint: CacheHint, + budget: Budget, +): ReadonlyArray => { + if (index < 0 || index >= messages.length) return messages + const target = messages[index]! + if (target.content.length === 0) return messages + const lastTextIndex = target.content.findLastIndex((part) => part.type === "text") + const markAt = lastTextIndex >= 0 ? lastTextIndex : target.content.length - 1 + const existing = target.content[markAt]! + if (("cache" in existing && existing.cache) || budget.remaining === 0) return messages + budget.remaining -= 1 + const nextContent = target.content.map((part, i) => (i === markAt ? ({ ...part, cache: hint } as ContentPart) : part)) + const next = new Message({ ...target, content: nextContent }) + // Single pass over `messages`, substituting the one updated entry. Long + // conversations call this on every request, so avoid `.map()` here — its + // closure dispatch and identity copies show up in profiling. + const result = messages.slice() + result[index] = next + return result +} + +const markMessages = ( + messages: ReadonlyArray, + strategy: NonNullable, + hint: CacheHint, + budget: Budget, +): ReadonlyArray => { + if (messages.length === 0) return messages + if (strategy === "latest-user-message") + return markMessageAt(messages, lastIndexOfRole(messages, "user"), hint, budget) + if (strategy === "latest-assistant") + return markMessageAt(messages, lastIndexOfRole(messages, "assistant"), hint, budget) + const start = Math.max(0, messages.length - strategy.tail) + let next = messages + for (let i = start; i < messages.length; i++) next = markMessageAt(next, i, hint, budget) + return next +} + +const countHints = (request: LLMRequest) => + request.tools.reduce((count, tool) => count + (tool.cache === undefined ? 0 : 1), 0) + + request.system.reduce((count, part) => count + (part.cache === undefined ? 0 : 1), 0) + + request.messages.reduce( + (count, message) => + count + + message.content.reduce( + (contentCount, part) => contentCount + ("cache" in part && part.cache !== undefined ? 1 : 0), + 0, + ), + 0, + ) + +export const applyCachePolicy = (request: LLMRequest): LLMRequest => { + if (!RESPECTS_INLINE_HINTS.has(request.model.route.id)) return request + const policy = resolve(request.cache) + if (!policy.tools && !policy.system && !policy.messages) return request + + const hint = makeHint(policy.ttlSeconds) + const budget = { remaining: Math.max(0, BREAKPOINT_CAP - countHints(request)) } + const tools = policy.tools ? markLastTool(request.tools, hint, budget) : request.tools + const system = policy.system ? markSystemBoundaries(request.system, hint, budget) : request.system + const messages = policy.messages ? markMessages(request.messages, policy.messages, hint, budget) : request.messages + + if (tools === request.tools && system === request.system && messages === request.messages) return request + return LLMRequest.update(request, { tools, system, messages }) +} diff --git a/packages/ai/src/image-client.ts b/packages/ai/src/image-client.ts new file mode 100644 index 000000000000..79db227725ea --- /dev/null +++ b/packages/ai/src/image-client.ts @@ -0,0 +1,38 @@ +import { Context, Effect, Layer } from "effect" +import { RequestExecutor } from "./route/executor" +import type { ImageOptions, ImageRequest, ImageRequestFor, ImageResponse } from "./image" +import type { LLMError } from "./schema" + +export type Execute = RequestExecutor.Interface["execute"] + +export interface Interface { + readonly generate: ( + request: ImageRequestFor, + ) => Effect.Effect +} + +export class Service extends Context.Service()("@opencode/ImageClient") {} + +export const generate = ( + request: ImageRequestFor, +): Effect.Effect => + Effect.gen(function* () { + const client = yield* Service + return yield* client.generate(request) + }) as Effect.Effect + +export const layer: Layer.Layer = Layer.effect( + Service, + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + return Service.of({ + generate: (request) => request.model.route.generate(request, executor.execute), + }) + }), +) + +export const ImageClient = { + Service, + layer, + generate, +} as const diff --git a/packages/ai/src/image.ts b/packages/ai/src/image.ts new file mode 100644 index 000000000000..ee3ab6202ad7 --- /dev/null +++ b/packages/ai/src/image.ts @@ -0,0 +1,166 @@ +import { Effect, Schema } from "effect" +import { HttpOptions, InvalidRequestReason, LLMError, ModelID, ProviderID, ProviderMetadata, Usage } from "./schema" +import { ImageClient, Service, type Execute as ImageExecute } from "./image-client" + +export interface ImageRoute { + readonly id: string + readonly generate: ( + request: ImageRequestFor, + execute: ImageExecute, + ) => Effect.Effect +} + +export type ImageOptions = Record + +export class ImageModel { + declare protected readonly _Options: (options: Options) => Options + readonly id: ModelID + readonly provider: ProviderID + readonly route: ImageRoute + readonly http?: HttpOptions + + constructor(input: ImageModel.Input) { + this.id = input.id + this.provider = input.provider + this.route = input.route + this.http = input.http + } + + static make(input: ImageModel.MakeInput) { + return new ImageModel({ + id: ModelID.make(input.id), + provider: ProviderID.make(input.provider), + route: input.route, + http: input.http, + }) + } +} + +export namespace ImageModel { + export interface Input { + readonly id: ModelID + readonly provider: ProviderID + readonly route: ImageRoute + readonly http?: HttpOptions + } + + export interface MakeInput + extends Omit, "id" | "provider"> { + readonly id: string | ModelID + readonly provider: string | ProviderID + } +} + +export const ImageModelSchema = Schema.declare((value): value is ImageModel => value instanceof ImageModel, { + expected: "Image.Model", +}) + +const ImageBytesInput = Schema.Struct({ + type: Schema.Literal("bytes"), + data: Schema.Uint8Array, + mediaType: Schema.String, +}) +const ImageUrlInput = Schema.Struct({ + type: Schema.Literal("url"), + url: Schema.String, +}) +const ImageFileIDInput = Schema.Struct({ + type: Schema.Literal("file-id"), + id: Schema.String, +}) +const ImageFileURIInput = Schema.Struct({ + type: Schema.Literal("file-uri"), + uri: Schema.String, + mediaType: Schema.String, +}) + +export const ImageInputSchema = Schema.Union([ + ImageBytesInput, + ImageUrlInput, + ImageFileIDInput, + ImageFileURIInput, +]).pipe(Schema.toTaggedUnion("type")) +export type ImageInput = Schema.Schema.Type + +export const ImageInput = { + bytes: (data: Uint8Array, mediaType: string): ImageInput => ({ type: "bytes", data, mediaType }), + url: (url: string): ImageInput => ({ type: "url", url }), + file: (id: string): ImageInput => ({ type: "file-id", id }), + fileUri: (uri: string, mediaType: string): ImageInput => ({ type: "file-uri", uri, mediaType }), +} as const + +export class ImageRequest extends Schema.Class("Image.Request")({ + model: ImageModelSchema, + prompt: Schema.String, + images: Schema.optional(Schema.Array(ImageInputSchema)), + options: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), + http: Schema.optional(HttpOptions), +}) { + declare protected readonly _ImageRequest: void +} + +export type ImageRequestFor = Omit & { + readonly model: ImageModel + readonly options?: Options +} + +export type ImageModelOptions = Model extends ImageModel ? Options : never + +export type ImageRequestInput = Omit< + ConstructorParameters[0], + "model" | "options" | "http" +> & { + readonly model: Model + readonly options?: NoInfer> + readonly http?: HttpOptions.Input +} & (Model extends ImageModel> ? unknown : never) + +export class GeneratedImage extends Schema.Class("Image.Generated")({ + mediaType: Schema.String, + data: Schema.Union([Schema.String, Schema.Uint8Array]), + providerMetadata: Schema.optional(ProviderMetadata), +}) {} + +export class ImageResponse extends Schema.Class("Image.Response")({ + images: Schema.Array(GeneratedImage), + usage: Schema.optional(Usage), + providerMetadata: Schema.optional(ProviderMetadata), +}) { + get image() { + return this.images[0] + } +} + +export function request( + input: ImageRequestInput, +): ImageRequestFor> +export function request(input: ImageRequest): ImageRequest +export function request(input: ImageRequest | ImageRequestInput) { + if (input instanceof ImageRequest) return input + return new ImageRequest({ + ...input, + model: input.model as unknown as ImageModel, + http: input.http === undefined ? undefined : HttpOptions.make(input.http), + }) +} + +export function generate( + input: ImageRequestInput, +): Effect.Effect +export function generate(input: ImageRequest): Effect.Effect +export function generate(input: ImageRequest | ImageRequestInput) { + return Effect.try({ + try: () => (input instanceof ImageRequest ? input : request(input)), + catch: (error) => + new LLMError({ + module: "Image", + method: "generate", + reason: new InvalidRequestReason({ message: error instanceof Error ? error.message : String(error) }), + }), + }).pipe(Effect.flatMap((request) => ImageClient.generate(request as unknown as ImageRequestFor))) +} + +export const Image = { + request, + generate, +} as const diff --git a/packages/ai/src/index.ts b/packages/ai/src/index.ts new file mode 100644 index 000000000000..c6c30f76c3ad --- /dev/null +++ b/packages/ai/src/index.ts @@ -0,0 +1,39 @@ +export { LLMClient } from "./route/client" +export { ImageClient } from "./image-client" +export { Auth } from "./route/auth" +export { Provider } from "./provider" +export { ProviderPackage } from "./provider-package" +export { isContextOverflow, isContextOverflowFailure } from "./provider-error" +export type { + RouteModelInput, + RouteRoutedModelInput, + Interface as LLMClientShape, + Service as LLMClientService, +} from "./route/client" +export * from "./schema" +export { GeneratedImage, ImageInput, ImageInputSchema, ImageModel, ImageRequest, ImageResponse } from "./image" +export type { ImageModelOptions, ImageOptions, ImageRequestFor, ImageRequestInput, ImageRoute } from "./image" +export { Image } from "./image" +export { Tool, ToolFailure, toDefinitions } from "./tool" +export { ToolRuntime } from "./tool-runtime" +export type { DispatchResult as ToolDispatchResult, ToolSettlement } from "./tool-runtime" +export type { + AnyExecutableTool, + AnyTool, + ExecutableTool, + ExecutableTools, + Definition as ToolShape, + ToolExecute, + ToolExecuteContext, + ToolModelOutputInput, + Tools, + ToolSchema, + ToolToModelOutput, +} from "./tool" +export * as LLM from "./llm" +export type { + Definition as ProviderDefinition, + ModelFactory as ProviderModelFactory, + ModelOptions as ProviderModelOptions, +} from "./provider" +export type { Definition as ProviderPackageDefinition, Settings as ProviderPackageSettings } from "./provider-package" diff --git a/packages/ai/src/llm.ts b/packages/ai/src/llm.ts new file mode 100644 index 000000000000..8b6f904a5b49 --- /dev/null +++ b/packages/ai/src/llm.ts @@ -0,0 +1,168 @@ +import { Effect, JsonSchema, Schema } from "effect" +import { LLMClient } from "./route/client" +import { + GenerationOptions, + HttpOptions, + InvalidProviderOutputReason, + LLMError, + LLMEvent, + LLMRequest, + LLMResponse, + Message, + SystemPart, + ToolChoice, + ToolDefinition, + type ContentPart, +} from "./schema" +import { make as makeTool, toDefinitions, type ToolSchema } from "./tool" + +/** Input accepted by `LLM.request`, normalized into the canonical `LLMRequest` class. */ +export type RequestInput = Omit< + ConstructorParameters[0], + "system" | "messages" | "tools" | "toolChoice" | "generation" | "http" | "providerOptions" +> & { + readonly system?: string | SystemPart | ReadonlyArray + readonly prompt?: string | ContentPart | ReadonlyArray + readonly messages?: ReadonlyArray + readonly tools?: ReadonlyArray + readonly toolChoice?: ToolChoice.Input + readonly generation?: GenerationOptions.Input + readonly providerOptions?: ConstructorParameters[0]["providerOptions"] + readonly http?: HttpOptions.Input +} + +export const generate = LLMClient.generate + +export const stream = LLMClient.stream + +export const request = (input: RequestInput) => { + const { + system: requestSystem, + prompt, + messages, + tools, + toolChoice: requestToolChoice, + generation: requestGeneration, + providerOptions: requestProviderOptions, + http: requestHttp, + ...rest + } = input + return new LLMRequest({ + ...rest, + system: SystemPart.content(requestSystem), + messages: [...(messages?.map(Message.make) ?? []), ...(prompt === undefined ? [] : [Message.user(prompt)])], + tools: tools?.map(ToolDefinition.make) ?? [], + toolChoice: requestToolChoice ? ToolChoice.make(requestToolChoice) : undefined, + generation: requestGeneration === undefined ? undefined : GenerationOptions.make(requestGeneration), + providerOptions: requestProviderOptions, + http: requestHttp === undefined ? undefined : HttpOptions.make(requestHttp), + }) +} + +const GENERATE_OBJECT_TOOL_NAME = "generate_object" + +const GENERATE_OBJECT_TOOL_DESCRIPTION = "Return the structured result by calling this tool." + +type GenerateObjectBase = Omit + +export class GenerateObjectResponse { + constructor( + readonly object: T, + readonly response: LLMResponse, + ) {} + + get events() { + return this.response.events + } + + get usage() { + return this.response.usage + } +} + +export interface GenerateObjectOptions> extends GenerateObjectBase { + readonly schema: S +} + +export interface GenerateObjectDynamicOptions extends GenerateObjectBase { + /** Raw JSON Schema object describing the expected output shape. */ + readonly jsonSchema: JsonSchema.JsonSchema +} + +const runGenerateObject = Effect.fn("LLM.generateObject")(function* ( + options: GenerateObjectBase, + tool: ReturnType, +) { + const baseRequest = request(options) + const generateRequest = LLMRequest.update(baseRequest, { + tools: toDefinitions({ [GENERATE_OBJECT_TOOL_NAME]: tool }), + toolChoice: ToolChoice.named(GENERATE_OBJECT_TOOL_NAME), + }) + const response = yield* LLMClient.generate(generateRequest) + const call = response.toolCalls.find( + (event) => LLMEvent.is.toolCall(event) && event.name === GENERATE_OBJECT_TOOL_NAME, + ) + if (!call || !LLMEvent.is.toolCall(call)) + return yield* new LLMError({ + module: "LLM", + method: "generateObject", + reason: new InvalidProviderOutputReason({ + message: `generateObject: model did not call the forced \`${GENERATE_OBJECT_TOOL_NAME}\` tool`, + }), + }) + const object = yield* tool._decode(call.input).pipe( + Effect.mapError( + (error) => + new LLMError({ + module: "LLM", + method: "generateObject", + reason: new InvalidProviderOutputReason({ + message: `generateObject: tool input failed schema decode: ${error.message}`, + }), + }), + ), + ) + return new GenerateObjectResponse(object, response) +}) + +/** + * Run a model and decode its output against `schema`. Works on every protocol + * because it forces a synthetic tool call internally — provider-native JSON + * modes are intentionally avoided so behaviour is uniform. + * + * Two input modes: + * + * 1. `schema: EffectSchema` — `.object` is decoded and typed as `T`. + * Decode failures surface as `LLMError`. + * 2. `jsonSchema: JsonSchema.JsonSchema` — `.object` is `unknown`. Use when + * the schema is only available at runtime (MCP, plugin manifests). Caller validates. + */ +export function generateObject>( + options: GenerateObjectOptions, +): Effect.Effect>, LLMError> +export function generateObject( + options: GenerateObjectDynamicOptions, +): Effect.Effect, LLMError> +export function generateObject(options: GenerateObjectOptions> | GenerateObjectDynamicOptions) { + if ("schema" in options) { + const { schema, ...rest } = options + return runGenerateObject( + rest, + makeTool({ + description: GENERATE_OBJECT_TOOL_DESCRIPTION, + parameters: schema, + success: Schema.Unknown as ToolSchema, + execute: () => Effect.void, + }), + ) + } + const { jsonSchema, ...rest } = options + return runGenerateObject( + rest, + makeTool({ + description: GENERATE_OBJECT_TOOL_DESCRIPTION, + jsonSchema, + execute: () => Effect.void, + }), + ) +} diff --git a/packages/ai/src/protocols.ts b/packages/ai/src/protocols.ts new file mode 100644 index 000000000000..96aa6ee43d31 --- /dev/null +++ b/packages/ai/src/protocols.ts @@ -0,0 +1 @@ +export * from "./protocols/index" diff --git a/packages/ai/src/protocols/anthropic-messages.ts b/packages/ai/src/protocols/anthropic-messages.ts new file mode 100644 index 000000000000..6041500be64a --- /dev/null +++ b/packages/ai/src/protocols/anthropic-messages.ts @@ -0,0 +1,1036 @@ +import { Effect, Schema } from "effect" +import { Tool } from "@opencode-ai/schema/tool" +import { Route } from "../route/client" +import { Auth } from "../route/auth" +import { Endpoint } from "../route/endpoint" +import { Framing } from "../route/framing" +import { Protocol } from "../route/protocol" +import { + LLMError, + LLMEvent, + mergeJsonRecords, + Usage, + type CacheHint, + type FinishReasonDetails, + type FinishReason, + type JsonSchema, + type LLMRequest, + type MediaPart, + type ProviderOptions, + type ProviderMetadata, + type ToolCallPart, + type ToolDefinition, + type ToolResultPart, +} from "../schema" +import { JsonObject, optionalArray, optionalNull, ProviderShared } from "./shared" +import { classifyProviderFailure } from "../provider-error" +import * as Cache from "./utils/cache" +import { Lifecycle } from "./utils/lifecycle" +import { ToolSchemaProjection } from "./utils/tool-schema" +import { ToolStream } from "./utils/tool-stream" + +const ADAPTER = "anthropic-messages" +const MEDIA_MIMES = new Set([...ProviderShared.IMAGE_MIMES, ...ProviderShared.PDF_MIMES]) +export const DEFAULT_BASE_URL = "https://api.anthropic.com/v1" +export const PATH = "/messages" + +export type ThinkingInput = + | { + readonly type: "adaptive" + readonly display?: "summarized" | "omitted" + } + | { + readonly type: "disabled" + } + | ({ readonly type: "enabled" } & ( + | { readonly budgetTokens: number; readonly budget_tokens?: number } + | { readonly budgetTokens?: number; readonly budget_tokens: number } + )) + +export interface OptionsInput { + readonly [key: string]: unknown + readonly thinking?: ThinkingInput + readonly effort?: string +} + +export type ProviderOptionsInput = ProviderOptions & { + readonly anthropic?: OptionsInput +} + +// ============================================================================= +// Request Body Schema +// ============================================================================= +const AnthropicCacheControl = Schema.Struct({ + type: Schema.tag("ephemeral"), + ttl: Schema.optional(Schema.Literals(["5m", "1h"])), +}) + +const AnthropicTextBlock = Schema.Struct({ + type: Schema.tag("text"), + text: Schema.String, + cache_control: Schema.optional(AnthropicCacheControl), +}) +type AnthropicTextBlock = Schema.Schema.Type + +const AnthropicImageBlock = Schema.Struct({ + type: Schema.tag("image"), + source: Schema.Struct({ + type: Schema.tag("base64"), + media_type: Schema.String, + data: Schema.String, + }), + cache_control: Schema.optional(AnthropicCacheControl), +}) +type AnthropicImageBlock = Schema.Schema.Type + +const AnthropicDocumentBlock = Schema.Struct({ + type: Schema.tag("document"), + source: Schema.Struct({ + type: Schema.tag("base64"), + media_type: Schema.Literal("application/pdf"), + data: Schema.String, + }), + cache_control: Schema.optional(AnthropicCacheControl), +}) +type AnthropicDocumentBlock = Schema.Schema.Type + +const AnthropicThinkingBlock = Schema.Struct({ + type: Schema.tag("thinking"), + thinking: Schema.String, + signature: Schema.optional(Schema.String), + cache_control: Schema.optional(AnthropicCacheControl), +}) + +// Safety-filtered thinking arrives as an opaque encrypted `data` payload with +// no visible text. It must round-trip verbatim so multi-turn thinking + tool +// use conversations keep their reasoning continuity. +const AnthropicRedactedThinkingBlock = Schema.Struct({ + type: Schema.tag("redacted_thinking"), + data: Schema.String, + cache_control: Schema.optional(AnthropicCacheControl), +}) + +const AnthropicToolUseBlock = Schema.Struct({ + type: Schema.tag("tool_use"), + id: Schema.String, + name: Schema.String, + input: Schema.Unknown, + cache_control: Schema.optional(AnthropicCacheControl), +}) +type AnthropicToolUseBlock = Schema.Schema.Type + +const AnthropicServerToolUseBlock = Schema.Struct({ + type: Schema.tag("server_tool_use"), + id: Schema.String, + name: Schema.String, + input: Schema.Unknown, + cache_control: Schema.optional(AnthropicCacheControl), +}) +type AnthropicServerToolUseBlock = Schema.Schema.Type + +// Server tool result blocks: web_search_tool_result, code_execution_tool_result, +// and web_fetch_tool_result. The provider executes the tool and inlines the +// structured result into the assistant turn — there is no client tool_result +// round-trip. We round-trip the structured `content` payload as opaque JSON so +// the next request can echo it back when continuing the conversation. +const AnthropicServerToolResultType = Schema.Literals([ + "web_search_tool_result", + "code_execution_tool_result", + "web_fetch_tool_result", +]) +type AnthropicServerToolResultType = Schema.Schema.Type + +const AnthropicServerToolResultBlock = Schema.Struct({ + type: AnthropicServerToolResultType, + tool_use_id: Schema.String, + content: Schema.Unknown, + cache_control: Schema.optional(AnthropicCacheControl), +}) +type AnthropicServerToolResultBlock = Schema.Schema.Type + +// Anthropic accepts either a plain string or an ordered array of text, image, and +// document blocks inside `tool_result.content`. The array form keeps media as native +// model input instead of JSON-stringifying base64 into prompt text. +const AnthropicToolResultContent = Schema.Union([AnthropicTextBlock, AnthropicImageBlock, AnthropicDocumentBlock]) + +const AnthropicToolResultBlock = Schema.Struct({ + type: Schema.tag("tool_result"), + tool_use_id: Schema.String, + content: Schema.Union([Schema.String, Schema.Array(AnthropicToolResultContent)]), + is_error: Schema.optional(Schema.Boolean), + cache_control: Schema.optional(AnthropicCacheControl), +}) + +const AnthropicUserBlock = Schema.Union([ + AnthropicTextBlock, + AnthropicImageBlock, + AnthropicDocumentBlock, + AnthropicToolResultBlock, +]) +type AnthropicUserBlock = Schema.Schema.Type +const AnthropicAssistantBlock = Schema.Union([ + AnthropicTextBlock, + AnthropicThinkingBlock, + AnthropicRedactedThinkingBlock, + AnthropicToolUseBlock, + AnthropicServerToolUseBlock, + AnthropicServerToolResultBlock, +]) +type AnthropicAssistantBlock = Schema.Schema.Type +type AnthropicToolResultBlock = Schema.Schema.Type + +const AnthropicMessage = Schema.Union([ + Schema.Struct({ role: Schema.Literal("user"), content: Schema.Array(AnthropicUserBlock) }), + Schema.Struct({ role: Schema.Literal("assistant"), content: Schema.Array(AnthropicAssistantBlock) }), + Schema.Struct({ role: Schema.Literal("system"), content: Schema.Array(AnthropicTextBlock) }), +]).pipe(Schema.toTaggedUnion("role")) +type AnthropicMessage = Schema.Schema.Type + +const AnthropicTool = Schema.Struct({ + name: Schema.String, + description: Schema.String, + input_schema: JsonObject, + cache_control: Schema.optional(AnthropicCacheControl), +}) +type AnthropicTool = Schema.Schema.Type + +const AnthropicToolChoice = Schema.Union([ + Schema.Struct({ type: Schema.Literals(["auto", "any", "none"]) }), + Schema.Struct({ type: Schema.tag("tool"), name: Schema.String }), +]) + +const AnthropicThinking = Schema.Union([ + Schema.Struct({ + type: Schema.tag("enabled"), + budget_tokens: Schema.Number, + }), + Schema.Struct({ + type: Schema.tag("adaptive"), + display: Schema.optional(Schema.Literals(["summarized", "omitted"])), + }), + Schema.Struct({ + type: Schema.tag("disabled"), + }), +]) + +const AnthropicOutputConfig = Schema.Struct({ + effort: Schema.optional(Schema.String), +}) + +const AnthropicBodyFields = { + model: Schema.String, + system: optionalArray(AnthropicTextBlock), + messages: Schema.Array(AnthropicMessage), + tools: optionalArray(AnthropicTool), + tool_choice: Schema.optional(AnthropicToolChoice), + stream: Schema.Literal(true), + max_tokens: Schema.Number, + temperature: Schema.optional(Schema.Number), + top_p: Schema.optional(Schema.Number), + top_k: Schema.optional(Schema.Number), + stop_sequences: optionalArray(Schema.String), + thinking: Schema.optional(AnthropicThinking), + output_config: Schema.optional(AnthropicOutputConfig), +} +export const AnthropicMessagesBody = Schema.Struct(AnthropicBodyFields) +export type AnthropicMessagesBody = Schema.Schema.Type + +const AnthropicUsage = Schema.StructWithRest( + Schema.Struct({ + input_tokens: Schema.optional(Schema.Number), + output_tokens: Schema.optional(Schema.Number), + cache_creation_input_tokens: optionalNull(Schema.Number), + cache_read_input_tokens: optionalNull(Schema.Number), + server_tool_use: optionalNull( + Schema.StructWithRest( + Schema.Struct({ web_search_requests: Schema.optional(Schema.Number) }), + [Schema.Record(Schema.String, Schema.Unknown)], + ), + ), + output_tokens_details: optionalNull( + Schema.StructWithRest( + Schema.Struct({ thinking_tokens: Schema.optional(Schema.Number) }), + [Schema.Record(Schema.String, Schema.Unknown)], + ), + ), + }), + [Schema.Record(Schema.String, Schema.Unknown)], +) +type AnthropicUsage = Schema.Schema.Type + +const AnthropicStreamBlock = Schema.Struct({ + type: Schema.String, + id: Schema.optional(Schema.String), + name: Schema.optional(Schema.String), + text: Schema.optional(Schema.String), + thinking: Schema.optional(Schema.String), + signature: Schema.optional(Schema.String), + // redacted_thinking blocks arrive whole in content_block_start with the + // encrypted payload in `data`; there is no streaming delta sequence. + data: Schema.optional(Schema.String), + input: Schema.optional(Schema.Unknown), + // *_tool_result blocks arrive whole as content_block_start (no streaming + // delta) with the structured payload in `content` and the originating + // server_tool_use id in `tool_use_id`. + tool_use_id: Schema.optional(Schema.String), + content: Schema.optional(Schema.Unknown), +}) + +const AnthropicStreamDelta = Schema.Struct({ + type: Schema.optional(Schema.String), + text: Schema.optional(Schema.String), + thinking: Schema.optional(Schema.String), + partial_json: Schema.optional(Schema.String), + signature: Schema.optional(Schema.String), + stop_reason: optionalNull(Schema.String), + stop_sequence: optionalNull(Schema.String), +}) + +const AnthropicEvent = Schema.Struct({ + type: Schema.String, + index: Schema.optional(Schema.Number), + message: Schema.optional(Schema.Struct({ usage: Schema.optional(AnthropicUsage) })), + content_block: Schema.optional(AnthropicStreamBlock), + delta: Schema.optional(AnthropicStreamDelta), + usage: Schema.optional(AnthropicUsage), + // `type` and `message` are both required per Anthropic's spec, but + // OpenAI-compatible proxies and gateway translations occasionally drop one + // or the other; mark them optional so a partial payload still parses and + // the parser can fall back to whichever field is populated. + error: Schema.optional( + Schema.Struct({ type: Schema.optional(Schema.String), message: Schema.optional(Schema.String) }), + ), +}) +type AnthropicEvent = Schema.Schema.Type + +interface ParserState { + readonly tools: ToolStream.State + readonly reasoningSignatures: Readonly> + readonly usage?: Usage + readonly pendingFinish?: { + readonly reason: FinishReasonDetails + readonly providerMetadata?: ProviderMetadata + } + readonly lifecycle: Lifecycle.State +} + +const invalid = ProviderShared.invalidRequest + +// ============================================================================= +// Request Lowering +// ============================================================================= +// Anthropic accepts at most 4 explicit cache_control breakpoints per request, +// across `tools`, `system`, and `messages`. Beyond the cap the API returns a +// 400 — so the lowering layer counts emitted markers and silently drops any +// that exceed it. +const ANTHROPIC_BREAKPOINT_CAP = 4 + +const EPHEMERAL_5M = { type: "ephemeral" as const } +const EPHEMERAL_1H = { type: "ephemeral" as const, ttl: "1h" as const } + +const cacheControl = (breakpoints: Cache.Breakpoints, cache: CacheHint | undefined) => { + if (cache?.type !== "ephemeral" && cache?.type !== "persistent") return undefined + if (breakpoints.remaining <= 0) { + breakpoints.dropped += 1 + return undefined + } + breakpoints.remaining -= 1 + return Cache.ttlBucket(cache.ttlSeconds) === "1h" ? EPHEMERAL_1H : EPHEMERAL_5M +} + +const anthropicMetadata = (metadata: Record): ProviderMetadata => ({ anthropic: metadata }) + +const signatureFromMetadata = (metadata: ProviderMetadata | undefined): string | undefined => { + const anthropic = metadata?.anthropic + if (!ProviderShared.isRecord(anthropic)) return undefined + return typeof anthropic.signature === "string" ? anthropic.signature : undefined +} + +const redactedDataFromMetadata = (metadata: ProviderMetadata | undefined): string | undefined => { + const anthropic = metadata?.anthropic + if (!ProviderShared.isRecord(anthropic)) return undefined + return typeof anthropic.redactedData === "string" ? anthropic.redactedData : undefined +} + +const lowerTool = (breakpoints: Cache.Breakpoints, tool: ToolDefinition, inputSchema: JsonSchema): AnthropicTool => ({ + name: tool.name, + description: tool.description, + input_schema: inputSchema, + cache_control: cacheControl(breakpoints, tool.cache), +}) + +const lowerToolChoice = (toolChoice: NonNullable) => + ProviderShared.matchToolChoice("Anthropic Messages", toolChoice, { + auto: () => ({ type: "auto" as const }), + none: () => ({ type: "none" as const }), + required: () => ({ type: "any" as const }), + tool: (name) => ({ type: "tool" as const, name }), + }) + +const lowerToolCall = (part: ToolCallPart): AnthropicToolUseBlock => ({ + type: "tool_use", + id: part.id, + name: part.name, + input: part.input, +}) + +const lowerServerToolCall = (part: ToolCallPart): AnthropicServerToolUseBlock => ({ + type: "server_tool_use", + id: part.id, + name: part.name, + input: part.input, +}) + +// Server tool result blocks are typed by name. Anthropic ships three today; +// extend this list when new server tools land. The block content is the +// structured payload returned by the provider, which we round-trip as-is. +const serverToolResultType = (name: string): AnthropicServerToolResultType | undefined => { + if (name === "web_search") return "web_search_tool_result" + if (name === "code_execution") return "code_execution_tool_result" + if (name === "web_fetch") return "web_fetch_tool_result" + return undefined +} + +const lowerServerToolResult = Effect.fn("AnthropicMessages.lowerServerToolResult")(function* (part: ToolResultPart) { + const wireType = serverToolResultType(part.name) + if (!wireType) + return yield* invalid(`Anthropic Messages does not know how to round-trip server tool result for ${part.name}`) + // Prefer the provider-owned replay payload; fall back to the result value for + // histories constructed directly from provider events. + const payload = part.providerMetadata?.anthropic?.["result"] ?? part.result.value + return { type: wireType, tool_use_id: part.id, content: payload } satisfies AnthropicServerToolResultBlock +}) + +const lowerMedia = Effect.fn("AnthropicMessages.lowerMedia")(function* (part: MediaPart) { + const media = yield* ProviderShared.validateMedia("Anthropic Messages", part, MEDIA_MIMES) + if (media.mime === "application/pdf") + return { + type: "document" as const, + source: { + type: "base64" as const, + media_type: "application/pdf" as const, + data: media.base64, + }, + } satisfies AnthropicDocumentBlock + return { + type: "image" as const, + source: { + type: "base64" as const, + media_type: media.mime, + data: media.base64, + }, + } satisfies AnthropicImageBlock +}) + +// Tool results may carry structured text, images, and documents. Keep media as provider-native +// content instead of JSON-stringifying base64 into a prompt string. +const lowerToolResultContentItem = Effect.fn("AnthropicMessages.lowerToolResultContentItem")(function* ( + item: Tool.Content, +) { + if (item.type === "text") return { type: "text" as const, text: item.text } satisfies AnthropicTextBlock + return yield* lowerMedia({ type: "media", mediaType: item.mime, data: item.uri, filename: item.name }) +}) + +const lowerToolResultContent = Effect.fn("AnthropicMessages.lowerToolResultContent")(function* (part: ToolResultPart) { + // Text / json / error results stay as a string for backward compatibility + // with existing cassettes and provider expectations. + if (part.result.type !== "content") return ProviderShared.toolResultText(part) + // Preserve the narrowed array element type when compiled through a consumer package. + const content: ReadonlyArray = part.result.value + return yield* Effect.forEach(content, lowerToolResultContentItem) +}) + +// Mid-conversation system messages are a native Claude API feature only for +// Opus 4.8. Other Anthropic models intentionally use the same visible wrapped- +// user fallback as non-Anthropic routes rather than sending a role they reject. +const supportsNativeSystemUpdates = (request: LLMRequest) => String(request.model.id) === "claude-opus-4-8" + +const endsInServerToolUse = (message: LLMRequest["messages"][number]) => { + const last = message.content.at(-1) + return message.role === "assistant" && last?.type === "tool-call" && last.providerExecuted === true +} + +const canUseNativeSystemUpdate = (messages: LLMRequest["messages"], index: number) => { + const previous = messages[index - 1] + const next = messages[index + 1] + return ( + previous !== undefined && + previous.role !== "system" && + (previous.role === "user" || previous.role === "tool" || endsInServerToolUse(previous)) && + next?.role !== "system" && + (next === undefined || next.role === "assistant") + ) +} + +const splitsLocalToolResults = (messages: LLMRequest["messages"], index: number) => { + const pending = new Set() + for (const message of messages.slice(0, index)) { + for (const part of message.content) { + if (message.role === "assistant" && part.type === "tool-call" && part.providerExecuted !== true) + pending.add(part.id) + if (message.role === "tool" && part.type === "tool-result") pending.delete(part.id) + } + } + return pending.size > 0 +} + +const lowerNativeSystemUpdate = Effect.fn("AnthropicMessages.lowerNativeSystemUpdate")(function* ( + message: LLMRequest["messages"][number], + breakpoints: Cache.Breakpoints, +) { + const content = yield* ProviderShared.systemUpdateText("Anthropic Messages", message) + return { + role: "system" as const, + content: content.map((part) => ({ + type: "text" as const, + text: part.text, + cache_control: cacheControl(breakpoints, part.cache), + })), + } +}) + +const lowerMessages = Effect.fn("AnthropicMessages.lowerMessages")(function* ( + request: LLMRequest, + breakpoints: Cache.Breakpoints, +) { + const messages: AnthropicMessage[] = [] + + for (const [index, message] of request.messages.entries()) { + if (message.role === "system") { + if (splitsLocalToolResults(request.messages, index)) + return yield* invalid("Anthropic Messages system updates cannot split a local tool call from its tool result") + if (supportsNativeSystemUpdates(request) && canUseNativeSystemUpdate(request.messages, index)) { + messages.push(yield* lowerNativeSystemUpdate(message, breakpoints)) + continue + } + const part = yield* ProviderShared.wrappedSystemUpdate("Anthropic Messages", message) + const block = { type: "text" as const, text: part.text, cache_control: cacheControl(breakpoints, part.cache) } + const previous = messages.at(-1) + if (previous?.role === "user") + messages[messages.length - 1] = { role: "user", content: [...previous.content, block] } + else messages.push({ role: "user", content: [block] }) + continue + } + + if (message.role === "user") { + const content: AnthropicUserBlock[] = [] + for (const part of message.content) { + if (part.type === "text") { + content.push({ type: "text", text: part.text, cache_control: cacheControl(breakpoints, part.cache) }) + continue + } + if (part.type === "media") { + content.push(yield* lowerMedia(part)) + continue + } + return yield* ProviderShared.unsupportedContent("Anthropic Messages", "user", ["text", "media"]) + } + messages.push({ role: "user", content }) + continue + } + + if (message.role === "assistant") { + const content: AnthropicAssistantBlock[] = [] + for (const part of message.content) { + if (part.type === "text") { + content.push({ type: "text", text: part.text, cache_control: cacheControl(breakpoints, part.cache) }) + continue + } + if (part.type === "reasoning") { + // Mirrors Vercel's @ai-sdk/anthropic: a signature marks visible + // thinking; only signature-less parts carrying redactedData + // round-trip as opaque redacted_thinking blocks. + const signature = part.encrypted ?? signatureFromMetadata(part.providerMetadata) + const redactedData = redactedDataFromMetadata(part.providerMetadata) + if (signature === undefined && redactedData !== undefined) { + content.push({ type: "redacted_thinking", data: redactedData }) + continue + } + content.push({ type: "thinking", thinking: part.text, signature }) + continue + } + if (part.type === "tool-call") { + content.push(part.providerExecuted ? lowerServerToolCall(part) : lowerToolCall(part)) + continue + } + if (part.type === "tool-result" && part.providerExecuted) { + content.push(yield* lowerServerToolResult(part)) + continue + } + return yield* invalid( + `Anthropic Messages assistant messages only support text, reasoning, and tool-call content for now`, + ) + } + messages.push({ role: "assistant", content }) + continue + } + + const content: AnthropicToolResultBlock[] = [] + for (const part of message.content) { + if (!ProviderShared.supportsContent(part, ["tool-result"])) + return yield* ProviderShared.unsupportedContent("Anthropic Messages", "tool", ["tool-result"]) + content.push({ + type: "tool_result", + tool_use_id: part.id, + content: yield* lowerToolResultContent(part), + is_error: part.result.type === "error" ? true : undefined, + cache_control: cacheControl(breakpoints, part.cache), + }) + } + messages.push({ role: "user", content }) + } + + return messages +}) + +const resolveOptions = Effect.fn("AnthropicMessages.resolveOptions")(function* (request: LLMRequest) { + const input = request.providerOptions?.anthropic + return { + thinking: yield* resolveThinking(input?.thinking), + effort: typeof input?.effort === "string" ? input.effort : undefined, + } +}) + +const resolveThinking = Effect.fn("AnthropicMessages.resolveThinking")(function* (input: unknown) { + if (!ProviderShared.isRecord(input)) return undefined + if (input.type === "adaptive") { + const display = + input.display === "summarized" + ? ("summarized" as const) + : input.display === "omitted" + ? ("omitted" as const) + : undefined + return { type: "adaptive" as const, ...(display === undefined ? {} : { display }) } + } + if (input.type === "disabled") return { type: "disabled" as const } + if (input.type !== "enabled") return undefined + const budget = + typeof input.budgetTokens === "number" + ? input.budgetTokens + : typeof input.budget_tokens === "number" + ? input.budget_tokens + : undefined + if (budget === undefined) + return yield* ProviderShared.invalidRequest("Anthropic thinking provider option requires budgetTokens") + return { type: "enabled" as const, budget_tokens: budget } +}) + +const fromRequest = Effect.fn("AnthropicMessages.fromRequest")(function* (request: LLMRequest) { + const generation = request.generation + const toolSchemaCompatibility = request.model.compatibility?.toolSchema + const outputLimit = request.model.defaults?.limits?.output ?? request.model.route.defaults.limits?.output ?? 4096 + // Allocate the 4-breakpoint budget in invalidation order: tools → system → + // messages. Tools live highest in the cache hierarchy, so when callers + // over-mark we keep their tool hints and shed the message-tail ones first. + const breakpoints = Cache.newBreakpoints(ANTHROPIC_BREAKPOINT_CAP) + const tools = + request.tools.length === 0 + ? undefined + : request.tools.map((tool) => + lowerTool( + breakpoints, + tool, + ToolSchemaProjection.modelCompatibility(tool.inputSchema, toolSchemaCompatibility), + ), + ) + // Anthropic rejects tool_choice when tools are absent; "none" is only meaningful with tools present. + const toolChoice = tools === undefined || !request.toolChoice ? undefined : yield* lowerToolChoice(request.toolChoice) + const system = + request.system.length === 0 + ? undefined + : request.system.map((part) => ({ + type: "text" as const, + text: part.text, + cache_control: cacheControl(breakpoints, part.cache), + })) + const messages = yield* lowerMessages(request, breakpoints) + if (breakpoints.dropped > 0) { + yield* Effect.logWarning( + `Anthropic Messages: dropped ${breakpoints.dropped} cache breakpoint(s); the API allows at most ${ANTHROPIC_BREAKPOINT_CAP} per request.`, + ) + } + const options = yield* resolveOptions(request) + return { + model: request.model.id, + system, + messages, + tools, + tool_choice: toolChoice, + stream: true as const, + max_tokens: generation?.maxTokens ?? outputLimit, + temperature: generation?.temperature, + top_p: generation?.topP, + top_k: generation?.topK, + stop_sequences: generation?.stop, + thinking: options.thinking, + output_config: options.effort === undefined ? undefined : { effort: options.effort }, + } +}) + +// ============================================================================= +// Stream Parsing +// ============================================================================= +const mapFinishReason = (reason: string | null | undefined): FinishReason => { + if (reason === "end_turn" || reason === "stop_sequence" || reason === "pause_turn") return "stop" + if (reason === "max_tokens" || reason === "model_context_window_exceeded") return "length" + if (reason === "tool_use") return "tool-calls" + if (reason === "refusal") return "content-filter" + return "unknown" +} + +// Anthropic reports the non-overlapping breakdown natively — its +// `input_tokens` is the *non-cached* count per the Messages API docs, with +// cache reads and writes as separate fields. We sum them to derive the +// inclusive `inputTokens` the rest of the contract expects. Extended +// thinking tokens are included in `output_tokens`; newer responses also +// expose that subset through `output_tokens_details.thinking_tokens`. +const mapUsage = (usage: AnthropicUsage | undefined): Usage | undefined => { + if (!usage) return undefined + const nonCached = usage.input_tokens + const cacheRead = usage.cache_read_input_tokens ?? undefined + const cacheWrite = usage.cache_creation_input_tokens ?? undefined + const inputTokens = ProviderShared.sumTokens(nonCached, cacheRead, cacheWrite) + return new Usage({ + inputTokens, + outputTokens: usage.output_tokens, + nonCachedInputTokens: nonCached, + cacheReadInputTokens: cacheRead, + cacheWriteInputTokens: cacheWrite, + reasoningTokens: usage.output_tokens_details?.thinking_tokens, + totalTokens: ProviderShared.totalTokens(inputTokens, usage.output_tokens, undefined), + providerMetadata: { anthropic: usage }, + }) +} + +// Anthropic emits usage on `message_start` and again on `message_delta` — the +// final delta carries the authoritative totals. Right-biased merge: each +// field prefers `right` when defined, falls back to `left`. `inputTokens` is +// recomputed from the merged breakdown so the inclusive total stays +// consistent with `nonCached + cacheRead + cacheWrite`. +const mergeUsage = (left: Usage | undefined, right: Usage | undefined) => { + if (!left) return right + if (!right) return left + const nonCachedInputTokens = right.nonCachedInputTokens ?? left.nonCachedInputTokens + const cacheReadInputTokens = right.cacheReadInputTokens ?? left.cacheReadInputTokens + const cacheWriteInputTokens = right.cacheWriteInputTokens ?? left.cacheWriteInputTokens + const inputTokens = ProviderShared.sumTokens(nonCachedInputTokens, cacheReadInputTokens, cacheWriteInputTokens) + const outputTokens = right.outputTokens ?? left.outputTokens + const reasoningTokens = right.reasoningTokens ?? left.reasoningTokens + return new Usage({ + inputTokens, + outputTokens, + nonCachedInputTokens, + cacheReadInputTokens, + cacheWriteInputTokens, + reasoningTokens, + totalTokens: ProviderShared.totalTokens(inputTokens, outputTokens, undefined), + providerMetadata: { + anthropic: + mergeJsonRecords(left.providerMetadata?.["anthropic"], right.providerMetadata?.["anthropic"]) ?? {}, + }, + }) +} + +// Server tool result blocks come whole in `content_block_start` (no streaming +// delta sequence). We convert the payload to a `tool-result` event with +// `providerExecuted: true`. The runtime appends it to the assistant message +// for round-trip; downstream consumers can inspect `result.value` for the +// structured payload. +const SERVER_TOOL_RESULT_NAMES: Record = { + web_search_tool_result: "web_search", + code_execution_tool_result: "code_execution", + web_fetch_tool_result: "web_fetch", +} + +const isServerToolResultType = (type: string): type is AnthropicServerToolResultType => type in SERVER_TOOL_RESULT_NAMES + +const serverToolResultEvent = (block: NonNullable): LLMEvent | undefined => { + if (!block.type || !isServerToolResultType(block.type)) return undefined + const errorPayload = + typeof block.content === "object" && block.content !== null && "type" in block.content + ? String((block.content as Record).type) + : "" + const isError = errorPayload.endsWith("_tool_result_error") + return LLMEvent.toolResult({ + id: block.tool_use_id ?? "", + name: SERVER_TOOL_RESULT_NAMES[block.type], + result: isError ? { type: "error", value: block.content } : { type: "json", value: block.content }, + providerExecuted: true, + // The complete payload is irreducible provider replay state: subsequent + // stateless requests must round-trip the typed result block verbatim. + providerMetadata: anthropicMetadata({ blockType: block.type, result: block.content }), + }) +} + +type StepResult = readonly [ParserState, ReadonlyArray] + +const NO_EVENTS: StepResult["1"] = [] + +const onMessageStart = (state: ParserState, event: AnthropicEvent): StepResult => { + const usage = mapUsage(event.message?.usage) + return [usage ? { ...state, usage: mergeUsage(state.usage, usage) } : state, NO_EVENTS] +} + +const onContentBlockStart = (state: ParserState, event: AnthropicEvent): StepResult => { + const block = event.content_block + if (!block) return [state, NO_EVENTS] + + if ((block.type === "tool_use" || block.type === "server_tool_use") && event.index !== undefined) { + const events: LLMEvent[] = [] + const lifecycle = Lifecycle.stepStart(state.lifecycle, events) + return [ + { + ...state, + lifecycle, + tools: ToolStream.start(state.tools, event.index, { + id: block.id ?? String(event.index), + name: block.name ?? "", + input: + block.input !== undefined && (!ProviderShared.isRecord(block.input) || Object.keys(block.input).length > 0) + ? ProviderShared.encodeJson(block.input) + : undefined, + providerExecuted: block.type === "server_tool_use", + }), + }, + [ + ...events, + LLMEvent.toolInputStart({ + id: block.id ?? String(event.index), + name: block.name ?? "", + providerExecuted: block.type === "server_tool_use" ? true : undefined, + }), + ], + ] + } + + if (block.type === "text" && block.text !== undefined) { + const events: LLMEvent[] = [] + const id = `text-${event.index ?? 0}` + const lifecycle = Lifecycle.textStart(state.lifecycle, events, id) + return [ + { ...state, lifecycle: block.text ? Lifecycle.textDelta(lifecycle, events, id, block.text) : lifecycle }, + events, + ] + } + + if (block.type === "thinking" && block.thinking !== undefined) { + const events: LLMEvent[] = [] + const id = `reasoning-${event.index ?? 0}` + const providerMetadata = block.signature === undefined ? undefined : anthropicMetadata({ signature: block.signature }) + const lifecycle = Lifecycle.reasoningStart(state.lifecycle, events, id, providerMetadata) + return [ + { + ...state, + lifecycle: block.thinking + ? Lifecycle.reasoningDelta(lifecycle, events, id, block.thinking, providerMetadata) + : lifecycle, + reasoningSignatures: + event.index === undefined || block.signature === undefined + ? state.reasoningSignatures + : { ...state.reasoningSignatures, [event.index]: block.signature }, + }, + events, + ] + } + + // Redacted thinking surfaces as an empty reasoning part carrying the opaque + // payload as `redactedData` metadata (same model as Vercel's + // @ai-sdk/anthropic). The existing content_block_stop closes the part. + if (block.type === "redacted_thinking" && block.data !== undefined) { + const events: LLMEvent[] = [] + return [ + { + ...state, + lifecycle: Lifecycle.reasoningStart( + state.lifecycle, + events, + `reasoning-${event.index ?? 0}`, + anthropicMetadata({ redactedData: block.data }), + ), + }, + events, + ] + } + + const result = serverToolResultEvent(block) + if (!result) return [state, NO_EVENTS] + const events: LLMEvent[] = [] + return [{ ...state, lifecycle: Lifecycle.stepStart(state.lifecycle, events) }, [...events, result]] +} + +const onContentBlockDelta = Effect.fn("AnthropicMessages.onContentBlockDelta")(function* ( + state: ParserState, + event: AnthropicEvent, +) { + const delta = event.delta + + if (delta?.type === "text_delta" && delta.text) { + const events: LLMEvent[] = [] + return [ + { ...state, lifecycle: Lifecycle.textDelta(state.lifecycle, events, `text-${event.index ?? 0}`, delta.text) }, + events, + ] satisfies StepResult + } + + if (delta?.type === "thinking_delta" && delta.thinking) { + const events: LLMEvent[] = [] + return [ + { + ...state, + lifecycle: Lifecycle.reasoningDelta(state.lifecycle, events, `reasoning-${event.index ?? 0}`, delta.thinking), + }, + events, + ] satisfies StepResult + } + + if (delta?.type === "signature_delta" && delta.signature) { + const index = event.index ?? 0 + return [ + { + ...state, + reasoningSignatures: { ...state.reasoningSignatures, [index]: delta.signature }, + }, + NO_EVENTS, + ] satisfies StepResult + } + + if (delta?.type === "input_json_delta" && event.index !== undefined) { + if (!delta.partial_json) return [state, NO_EVENTS] satisfies StepResult + const result = ToolStream.appendExisting( + ADAPTER, + state.tools, + event.index, + delta.partial_json, + "Anthropic Messages tool argument delta is missing its tool call", + ) + if (ToolStream.isError(result)) return yield* result + const events: LLMEvent[] = [] + const lifecycle = result.events.length ? Lifecycle.stepStart(state.lifecycle, events) : state.lifecycle + events.push(...result.events) + return [{ ...state, lifecycle, tools: result.tools }, events] satisfies StepResult + } + + return [state, NO_EVENTS] satisfies StepResult +}) + +const onContentBlockStop = Effect.fn("AnthropicMessages.onContentBlockStop")(function* ( + state: ParserState, + event: AnthropicEvent, +) { + if (event.index === undefined) return [state, NO_EVENTS] satisfies StepResult + const result = yield* ToolStream.finish(ADAPTER, state.tools, event.index) + const events: LLMEvent[] = [] + const resultEvents = result.events ?? [] + const signature = state.reasoningSignatures[event.index] + const lifecycle = resultEvents.length + ? Lifecycle.stepStart(state.lifecycle, events) + : Lifecycle.reasoningEnd( + Lifecycle.textEnd(state.lifecycle, events, `text-${event.index}`), + events, + `reasoning-${event.index}`, + signature === undefined ? undefined : anthropicMetadata({ signature }), + ) + events.push(...resultEvents) + const reasoningSignatures = { ...state.reasoningSignatures } + delete reasoningSignatures[event.index] + return [{ ...state, lifecycle, tools: result.tools, reasoningSignatures }, events] satisfies StepResult +}) + +const onMessageDelta = (state: ParserState, event: AnthropicEvent): StepResult => { + const usage = mergeUsage(state.usage, mapUsage(event.usage)) + return [ + { + ...state, + usage, + pendingFinish: { + reason: { + normalized: mapFinishReason(event.delta?.stop_reason), + raw: event.delta?.stop_reason ?? undefined, + }, + providerMetadata: + event.delta?.stop_sequence === null || event.delta?.stop_sequence === undefined + ? undefined + : anthropicMetadata({ stopSequence: event.delta.stop_sequence }), + }, + }, + NO_EVENTS, + ] +} + +const onMessageStop = (state: ParserState): StepResult => { + const events: LLMEvent[] = [] + const lifecycle = Lifecycle.finish(state.lifecycle, events, { + reason: state.pendingFinish?.reason ?? { + normalized: "unknown", + raw: undefined, + }, + usage: state.usage, + providerMetadata: state.pendingFinish?.providerMetadata, + }) + return [{ ...state, lifecycle }, events] +} + +// Prefix `error.type` so overloads, rate limits, and quota errors are visible +// even when the provider message is generic or empty. +const providerErrorMessage = (event: AnthropicEvent): string => { + const type = event.error?.type + const message = event.error?.message + if (type && message) return `${type}: ${message}` + return message || type || "Anthropic Messages stream error" +} + +const onError = (event: AnthropicEvent) => + new LLMError({ + module: ADAPTER, + method: "stream", + reason: classifyProviderFailure({ message: providerErrorMessage(event), code: event.error?.type }), + }) + +const step = (state: ParserState, event: AnthropicEvent) => { + if (event.type === "message_start") return Effect.succeed(onMessageStart(state, event)) + if (event.type === "content_block_start") return Effect.succeed(onContentBlockStart(state, event)) + if (event.type === "content_block_delta") return onContentBlockDelta(state, event) + if (event.type === "content_block_stop") return onContentBlockStop(state, event) + if (event.type === "message_delta") return Effect.succeed(onMessageDelta(state, event)) + if (event.type === "message_stop") return Effect.succeed(onMessageStop(state)) + if (event.type === "error") return onError(event) + return Effect.succeed([state, NO_EVENTS]) +} + +// ============================================================================= +// Protocol And Anthropic Route +// ============================================================================= +/** + * The Anthropic Messages protocol — request body construction, body schema, + * and the streaming-event state machine. Used by native Anthropic Cloud and + * (once registered) Vertex Anthropic / Bedrock-hosted Anthropic passthrough. + */ +export const protocol = Protocol.make({ + id: ADAPTER, + body: { + schema: AnthropicMessagesBody, + from: fromRequest, + }, + stream: { + event: Protocol.jsonEvent(AnthropicEvent), + initial: () => ({ + tools: ToolStream.empty(), + reasoningSignatures: {}, + lifecycle: Lifecycle.initial(), + }), + step, + }, +}) + +export const route = Route.make({ + id: ADAPTER, + provider: "anthropic", + providerMetadataKey: "anthropic", + protocol, + endpoint: Endpoint.path(PATH, { baseURL: DEFAULT_BASE_URL }), + auth: Auth.none, + framing: Framing.sse, + headers: () => ({ "anthropic-version": "2023-06-01" }), +}) + +export * as AnthropicMessages from "./anthropic-messages" diff --git a/packages/llm/src/protocols/bedrock-converse.ts b/packages/ai/src/protocols/bedrock-converse.ts similarity index 77% rename from packages/llm/src/protocols/bedrock-converse.ts rename to packages/ai/src/protocols/bedrock-converse.ts index 80412ca9ddb2..6dda74d4171c 100644 --- a/packages/llm/src/protocols/bedrock-converse.ts +++ b/packages/ai/src/protocols/bedrock-converse.ts @@ -3,11 +3,15 @@ import { Route } from "../route/client" import { Endpoint } from "../route/endpoint" import { Protocol } from "../route/protocol" import { + LLMError, LLMEvent, Usage, type CacheHint, type FinishReason, + type FinishReasonDetails, + type JsonSchema, type LLMRequest, + type ModelToolSchemaCompatibility, type ProviderMetadata, type ReasoningPart, type ToolCallPart, @@ -15,12 +19,13 @@ import { type ToolResultPart, } from "../schema" import { BedrockEventStream } from "./bedrock-event-stream" -import { isContextOverflow } from "../provider-error" +import { classifyProviderFailure } from "../provider-error" import { JsonObject, optionalArray, ProviderShared } from "./shared" import { BedrockAuth } from "./utils/bedrock-auth" import { BedrockCache } from "./utils/bedrock-cache" import { BedrockMedia } from "./utils/bedrock-media" import { Lifecycle } from "./utils/lifecycle" +import { ToolSchemaProjection } from "./utils/tool-schema" import { ToolStream } from "./utils/tool-stream" const ADAPTER = "bedrock-converse" @@ -48,6 +53,7 @@ const BedrockToolResultContentItem = Schema.Union([ Schema.Struct({ text: Schema.String }), Schema.Struct({ json: Schema.Unknown }), BedrockMedia.ImageBlock, + BedrockMedia.DocumentBlock, ]) const BedrockToolResultBlock = Schema.Struct({ @@ -60,14 +66,15 @@ const BedrockToolResultBlock = Schema.Struct({ type BedrockToolResultBlock = Schema.Schema.Type const BedrockReasoningBlock = Schema.Struct({ - reasoningContent: Schema.Struct({ - reasoningText: Schema.optional( - Schema.Struct({ + reasoningContent: Schema.Union([ + Schema.Struct({ + reasoningText: Schema.Struct({ text: Schema.String, signature: Schema.optional(Schema.String), }), - ), - }), + }), + Schema.Struct({ redactedContent: Schema.String }), + ]), }) const BedrockUserBlock = Schema.Union([ @@ -148,6 +155,12 @@ const BedrockUsageSchema = Schema.Struct({ }) type BedrockUsageSchema = Schema.Schema.Type +const BedrockStreamException = Schema.Struct({ + message: Schema.optional(Schema.String), + originalMessage: Schema.optional(Schema.String), + originalStatusCode: Schema.optional(Schema.Number), +}) + // Streaming event shape — the AWS event stream wraps each JSON payload by its // `:event-type` header (e.g. `messageStart`, `contentBlockDelta`). We // reconstruct that wrapping in `decodeFrames` below so the event schema can @@ -175,6 +188,11 @@ const BedrockEvent = Schema.Struct({ Schema.Struct({ text: Schema.optional(Schema.String), signature: Schema.optional(Schema.String), + // Blob fields in Bedrock's JSON event stream are base64 strings. + redactedContent: Schema.optional(Schema.String), + // Vercel's Bedrock provider exposes the same delta under + // Anthropic's shorter `data` spelling. + data: Schema.optional(Schema.String), }), ), }), @@ -194,29 +212,33 @@ const BedrockEvent = Schema.Struct({ metrics: Schema.optional(Schema.Unknown), }), ), - internalServerException: Schema.optional(Schema.Struct({ message: Schema.String })), - modelStreamErrorException: Schema.optional(Schema.Struct({ message: Schema.String })), - validationException: Schema.optional(Schema.Struct({ message: Schema.String })), - throttlingException: Schema.optional(Schema.Struct({ message: Schema.String })), - serviceUnavailableException: Schema.optional(Schema.Struct({ message: Schema.String })), + internalServerException: Schema.optional(BedrockStreamException), + modelStreamErrorException: Schema.optional(BedrockStreamException), + validationException: Schema.optional(BedrockStreamException), + throttlingException: Schema.optional(BedrockStreamException), + serviceUnavailableException: Schema.optional(BedrockStreamException), }) type BedrockEvent = Schema.Schema.Type // ============================================================================= // Request Lowering // ============================================================================= -const lowerToolSpec = (tool: ToolDefinition): BedrockToolSpec => ({ +const lowerToolSpec = (tool: ToolDefinition, inputSchema: JsonSchema): BedrockToolSpec => ({ toolSpec: { name: tool.name, description: tool.description, - inputSchema: { json: tool.inputSchema }, + inputSchema: { json: inputSchema }, }, }) -const lowerTools = (breakpoints: BedrockCache.Breakpoints, tools: ReadonlyArray): BedrockTool[] => { +const lowerTools = ( + compatibility: ModelToolSchemaCompatibility | undefined, + breakpoints: BedrockCache.Breakpoints, + tools: ReadonlyArray, +): BedrockTool[] => { const result: BedrockTool[] = [] for (const tool of tools) { - result.push(lowerToolSpec(tool)) + result.push(lowerToolSpec(tool, ToolSchemaProjection.modelCompatibility(tool.inputSchema, compatibility))) const cachePoint = BedrockCache.block(breakpoints, tool.cache) if (cachePoint) result.push(cachePoint) } @@ -250,6 +272,13 @@ const reasoningSignature = (part: ReasoningPart) => { ) } +const reasoningRedactedData = (part: ReasoningPart) => { + const bedrock = part.providerMetadata?.bedrock + return ProviderShared.isRecord(bedrock) && typeof bedrock.redactedData === "string" + ? bedrock.redactedData + : undefined +} + const lowerToolCall = (part: ToolCallPart): BedrockToolUseBlock => ({ toolUse: { toolUseId: part.id, @@ -275,8 +304,6 @@ const lowerToolResultContent = Effect.fn("BedrockConverse.lowerToolResultContent data: item.uri, filename: item.name, }) - if (!("image" in media)) - return yield* ProviderShared.invalidRequest("Bedrock Converse only supports image media in tool results") content.push(media) } return content @@ -341,11 +368,13 @@ const lowerMessages = Effect.fn("BedrockConverse.lowerMessages")(function* ( continue } if (part.type === "reasoning") { - content.push({ - reasoningContent: { - reasoningText: { text: part.text, signature: reasoningSignature(part) }, - }, - }) + const signature = reasoningSignature(part) + const redactedData = reasoningRedactedData(part) + if (signature === undefined && redactedData !== undefined) { + content.push({ reasoningContent: { redactedContent: redactedData } }) + continue + } + content.push({ reasoningContent: { reasoningText: { text: part.text, signature } } }) continue } if (part.type === "tool-call") { @@ -385,8 +414,13 @@ const fromRequest = Effect.fn("BedrockConverse.fromRequest")(function* (request: // tools → system → messages order to favour the highest-impact prefixes. const breakpoints = BedrockCache.breakpoints() const toolConfig = - request.tools.length > 0 && request.toolChoice?.type !== "none" - ? { tools: lowerTools(breakpoints, request.tools), toolChoice } + request.tools.length > 0 + ? { + tools: lowerTools(request.model.compatibility?.toolSchema, breakpoints, request.tools), + // Converse has no native "none". Keep definitions stable for prompt + // caching and omit only the unsupported choice. + toolChoice, + } : undefined const system = request.system.length === 0 ? undefined : lowerSystem(breakpoints, request.system) const messages = yield* lowerMessages(request, breakpoints) @@ -423,27 +457,29 @@ const fromRequest = Effect.fn("BedrockConverse.fromRequest")(function* (request: // ============================================================================= const mapFinishReason = (reason: string): FinishReason => { if (reason === "end_turn" || reason === "stop_sequence") return "stop" - if (reason === "max_tokens") return "length" + if (reason === "max_tokens" || reason === "model_context_window_exceeded") return "length" if (reason === "tool_use") return "tool-calls" if (reason === "content_filtered" || reason === "guardrail_intervened") return "content-filter" + if (reason === "malformed_model_output" || reason === "malformed_tool_use") return "error" return "unknown" } -// AWS Bedrock Converse reports `inputTokens` (inclusive total) with -// `cacheReadInputTokens` and `cacheWriteInputTokens` as subsets. Pass -// the total through and derive the non-cached breakdown. Bedrock does -// not break reasoning out of `outputTokens` for any current model. +// AWS reports inputTokens separately from cache reads and writes. +// Bedrock does not break reasoning out of outputTokens for current models. const mapUsage = (usage: BedrockUsageSchema | undefined): Usage | undefined => { if (!usage) return undefined - const cacheTotal = (usage.cacheReadInputTokens ?? 0) + (usage.cacheWriteInputTokens ?? 0) - const nonCached = ProviderShared.subtractTokens(usage.inputTokens, cacheTotal) + const inputTokens = ProviderShared.sumTokens( + usage.inputTokens, + usage.cacheReadInputTokens, + usage.cacheWriteInputTokens, + ) return new Usage({ - inputTokens: usage.inputTokens, + inputTokens, outputTokens: usage.outputTokens, - nonCachedInputTokens: nonCached, + nonCachedInputTokens: usage.inputTokens, cacheReadInputTokens: usage.cacheReadInputTokens, cacheWriteInputTokens: usage.cacheWriteInputTokens, - totalTokens: ProviderShared.totalTokens(usage.inputTokens, usage.outputTokens, usage.totalTokens), + totalTokens: ProviderShared.totalTokens(inputTokens, usage.outputTokens, usage.totalTokens), providerMetadata: { bedrock: usage }, }) } @@ -453,7 +489,7 @@ interface ParserState { // Bedrock splits the finish into `messageStop` (carries `stopReason`) and // `metadata` (carries usage). Hold the terminal event in state so `onHalt` // can emit exactly one finish after both chunks have had a chance to arrive. - readonly pendingFinish: { readonly reason: FinishReason; readonly usage?: Usage } | undefined + readonly pendingFinish: { readonly reason: FinishReasonDetails; readonly usage?: Usage } | undefined readonly hasToolCalls: boolean readonly lifecycle: Lifecycle.State readonly reasoningSignatures: Readonly> @@ -504,12 +540,26 @@ const step = (state: ParserState, event: BedrockEvent) => const index = event.contentBlockDelta.contentBlockIndex const reasoning = event.contentBlockDelta.delta.reasoningContent const events: LLMEvent[] = [] + const redactedData = reasoning.redactedContent ?? reasoning.data + const providerMetadata = reasoning.signature + ? bedrockMetadata({ signature: reasoning.signature }) + : redactedData !== undefined + ? bedrockMetadata({ redactedData }) + : undefined + const lifecycle = + reasoning.text !== undefined || providerMetadata !== undefined + ? Lifecycle.reasoningDelta( + state.lifecycle, + events, + `reasoning-${index}`, + reasoning.text ?? "", + providerMetadata, + ) + : state.lifecycle return [ { ...state, - lifecycle: reasoning.text - ? Lifecycle.reasoningDelta(state.lifecycle, events, `reasoning-${index}`, reasoning.text) - : state.lifecycle, + lifecycle, reasoningSignatures: reasoning.signature ? { ...state.reasoningSignatures, [index]: reasoning.signature } : state.reasoningSignatures, @@ -553,7 +603,9 @@ const step = (state: ParserState, event: BedrockEvent) => return [ { ...state, - hasToolCalls: resultEvents.some(LLMEvent.is.toolCall) ? true : state.hasToolCalls, + hasToolCalls: + resultEvents.some((event) => LLMEvent.is.toolCall(event) || LLMEvent.is.toolInputError(event)) || + state.hasToolCalls, lifecycle, tools: result.tools, reasoningSignatures: Object.fromEntries( @@ -568,39 +620,50 @@ const step = (state: ParserState, event: BedrockEvent) => return [ { ...state, - pendingFinish: { reason: mapFinishReason(event.messageStop.stopReason), usage: state.pendingFinish?.usage }, + pendingFinish: { + reason: { + normalized: mapFinishReason(event.messageStop.stopReason), + raw: event.messageStop.stopReason, + }, + usage: state.pendingFinish?.usage, + }, }, [], ] as const } if (event.metadata) { - const usage = mapUsage(event.metadata.usage) - return [{ ...state, pendingFinish: { reason: state.pendingFinish?.reason ?? "stop", usage } }, []] as const - } - - if (event.internalServerException || event.modelStreamErrorException || event.serviceUnavailableException) { - const message = - event.internalServerException?.message ?? - event.modelStreamErrorException?.message ?? - event.serviceUnavailableException?.message ?? - "Bedrock Converse stream error" - return [state, [LLMEvent.providerError({ message, retryable: true })]] as const + const usage = mapUsage(event.metadata.usage) ?? state.pendingFinish?.usage + return [ + { + ...state, + pendingFinish: { + reason: state.pendingFinish?.reason ?? { normalized: "stop" }, + usage, + }, + }, + [], + ] as const } - if (event.validationException || event.throttlingException) { - const message = - event.validationException?.message ?? event.throttlingException?.message ?? "Bedrock Converse error" - return [ - state, - [ - LLMEvent.providerError({ - message, - classification: event.validationException && isContextOverflow(message) ? "context-overflow" : undefined, - retryable: event.throttlingException !== undefined, - }), - ], + const exception = ( + [ + ["internalServerException", event.internalServerException], + ["modelStreamErrorException", event.modelStreamErrorException], + ["serviceUnavailableException", event.serviceUnavailableException], + ["throttlingException", event.throttlingException], + ["validationException", event.validationException], ] as const + ).find((entry) => entry[1] !== undefined) + if (exception) { + return yield* new LLMError({ + module: ADAPTER, + method: "stream", + reason: classifyProviderFailure({ + message: exception[1]?.message ?? exception[1]?.originalMessage ?? "Bedrock Converse stream error", + code: exception[0], + }), + }) } return [state, []] as const @@ -613,8 +676,13 @@ const onHalt = (state: ParserState): ReadonlyArray => ? (() => { const events: LLMEvent[] = [] Lifecycle.finish(state.lifecycle, events, { - reason: - state.pendingFinish.reason === "stop" && state.hasToolCalls ? "tool-calls" : state.pendingFinish.reason, + reason: { + ...state.pendingFinish.reason, + normalized: + state.pendingFinish.reason.normalized === "stop" && state.hasToolCalls + ? "tool-calls" + : state.pendingFinish.reason.normalized, + }, usage: state.pendingFinish.usage, }) return events @@ -651,6 +719,7 @@ export const protocol = Protocol.make({ export const route = Route.make({ id: ADAPTER, provider: "bedrock", + providerMetadataKey: "bedrock", protocol, // Bedrock's URL embeds the region in the route endpoint host and the // validated modelId in the path. We read the validated body so the URL diff --git a/packages/llm/src/protocols/bedrock-event-stream.ts b/packages/ai/src/protocols/bedrock-event-stream.ts similarity index 81% rename from packages/llm/src/protocols/bedrock-event-stream.ts rename to packages/ai/src/protocols/bedrock-event-stream.ts index d07d7de47599..6d5b58ad8e53 100644 --- a/packages/llm/src/protocols/bedrock-event-stream.ts +++ b/packages/ai/src/protocols/bedrock-event-stream.ts @@ -1,7 +1,7 @@ import { EventStreamCodec } from "@smithy/eventstream-codec" import { fromUtf8, toUtf8 } from "@smithy/util-utf8" import { Effect, Stream } from "effect" -import type { Framing } from "../route/framing" +import { Framing } from "../route/framing" import { ProviderShared } from "./shared" // Bedrock streams responses using the AWS event stream binary protocol — each @@ -53,8 +53,22 @@ const consumeFrames = (route: string) => (state: FrameBufferState, chunk: Uint8A }) cursor = { buffer: cursor.buffer, offset: cursor.offset + totalLength } - if (decoded.headers[":message-type"]?.value !== "event") continue - const eventType = decoded.headers[":event-type"]?.value + const messageType = decoded.headers[":message-type"]?.value + if (messageType === "error") { + const code = decoded.headers[":error-code"]?.value + const message = decoded.headers[":error-message"]?.value + return yield* ProviderShared.eventError( + route, + [code, message].filter((value): value is string => typeof value === "string").join(": ") || + "Bedrock Converse event-stream error", + ) + } + const eventType = + messageType === "event" + ? decoded.headers[":event-type"]?.value + : messageType === "exception" + ? decoded.headers[":exception-type"]?.value + : undefined if (typeof eventType !== "string") continue const payload = utf8.decode(decoded.body) if (!payload) continue @@ -79,7 +93,7 @@ const consumeFrames = (route: string) => (state: FrameBufferState, chunk: Uint8A * under its `:event-type` header so the chunk schema can match the JSON * payload directly. */ -export const framing = (route: string): Framing => ({ +export const framing = (route: string): Framing.Definition => ({ id: "aws-event-stream", frame: (bytes) => bytes.pipe(Stream.mapAccumEffect(() => initialFrameBuffer, consumeFrames(route))), }) diff --git a/packages/ai/src/protocols/gemini.ts b/packages/ai/src/protocols/gemini.ts new file mode 100644 index 000000000000..03e3c00353c2 --- /dev/null +++ b/packages/ai/src/protocols/gemini.ts @@ -0,0 +1,559 @@ +import { Effect, Schema } from "effect" +import { Tool } from "@opencode-ai/schema/tool" +import { Route } from "../route/client" +import { Auth } from "../route/auth" +import { Endpoint } from "../route/endpoint" +import { Framing } from "../route/framing" +import { Protocol } from "../route/protocol" +import { + LLMEvent, + Usage, + type FinishReason, + type JsonSchema, + type LLMRequest, + type MediaPart, + type ProviderOptions, + type ProviderMetadata, + type TextPart, + type ToolCallPart, + type ToolDefinition, +} from "../schema" +import { JsonObject, optionalArray, ProviderShared } from "./shared" +import { GeminiToolSchema } from "./utils/gemini-tool-schema" +import { Lifecycle } from "./utils/lifecycle" +import { ToolSchemaProjection } from "./utils/tool-schema" + +const ADAPTER = "gemini" +const MEDIA_MIMES = new Set(ProviderShared.MEDIA_MIMES) +export const DEFAULT_BASE_URL = "https://generativelanguage.googleapis.com/v1beta" + +export interface OptionsInput { + readonly [key: string]: unknown + readonly thinkingConfig?: { + readonly thinkingBudget?: number + readonly includeThoughts?: boolean + } +} + +export type ProviderOptionsInput = ProviderOptions & { + readonly gemini?: OptionsInput +} + +// ============================================================================= +// Request Body Schema +// ============================================================================= +const GeminiTextPart = Schema.Struct({ + text: Schema.String, + thought: Schema.optional(Schema.Boolean), + thoughtSignature: Schema.optional(Schema.String), +}) + +const GeminiInlineDataPart = Schema.Struct({ + inlineData: Schema.Struct({ + mimeType: Schema.String, + data: Schema.String, + }), +}) +type GeminiInlineDataPart = Schema.Schema.Type + +const GeminiFunctionCallPart = Schema.Struct({ + functionCall: Schema.Struct({ + id: Schema.optional(Schema.String), + name: Schema.String, + args: Schema.Unknown, + }), + thoughtSignature: Schema.optional(Schema.String), +}) + +const GeminiFunctionResponsePart = Schema.Struct({ + functionResponse: Schema.Struct({ + id: Schema.optional(Schema.String), + name: Schema.String, + response: Schema.Unknown, + parts: Schema.optional(Schema.Array(GeminiInlineDataPart)), + }), +}) + +const GeminiContentPart = Schema.Union([ + GeminiTextPart, + GeminiInlineDataPart, + GeminiFunctionCallPart, + GeminiFunctionResponsePart, +]) + +const GeminiContent = Schema.Struct({ + role: Schema.Literals(["user", "model"]), + parts: Schema.Array(GeminiContentPart), +}) +type GeminiContent = Schema.Schema.Type + +const GeminiSystemInstruction = Schema.Struct({ + parts: Schema.Array(Schema.Struct({ text: Schema.String })), +}) + +const GeminiFunctionDeclaration = Schema.Struct({ + name: Schema.String, + description: Schema.String, + parameters: Schema.optional(JsonObject), +}) + +const GeminiTool = Schema.Struct({ + functionDeclarations: Schema.Array(GeminiFunctionDeclaration), +}) + +const GeminiToolConfig = Schema.Struct({ + functionCallingConfig: Schema.Struct({ + mode: Schema.Literals(["AUTO", "NONE", "ANY"]), + allowedFunctionNames: optionalArray(Schema.String), + }), +}) + +const GeminiThinkingConfig = Schema.Struct({ + thinkingBudget: Schema.optional(Schema.Number), + includeThoughts: Schema.optional(Schema.Boolean), +}) + +const GeminiGenerationConfig = Schema.Struct({ + maxOutputTokens: Schema.optional(Schema.Number), + temperature: Schema.optional(Schema.Number), + topP: Schema.optional(Schema.Number), + topK: Schema.optional(Schema.Number), + stopSequences: optionalArray(Schema.String), + thinkingConfig: Schema.optional(GeminiThinkingConfig), +}) + +const GeminiBodyFields = { + contents: Schema.Array(GeminiContent), + systemInstruction: Schema.optional(GeminiSystemInstruction), + tools: optionalArray(GeminiTool), + toolConfig: Schema.optional(GeminiToolConfig), + generationConfig: Schema.optional(GeminiGenerationConfig), +} +const GeminiBody = Schema.Struct(GeminiBodyFields) +export type GeminiBody = Schema.Schema.Type + +const GeminiUsage = Schema.Struct({ + cachedContentTokenCount: Schema.optional(Schema.Number), + thoughtsTokenCount: Schema.optional(Schema.Number), + promptTokenCount: Schema.optional(Schema.Number), + candidatesTokenCount: Schema.optional(Schema.Number), + totalTokenCount: Schema.optional(Schema.Number), +}) +type GeminiUsage = Schema.Schema.Type + +const GeminiCandidate = Schema.Struct({ + content: Schema.optional(GeminiContent), + finishReason: Schema.optional(Schema.String), +}) + +const GeminiEvent = Schema.Struct({ + candidates: optionalArray(GeminiCandidate), + usageMetadata: Schema.optional(GeminiUsage), +}) +type GeminiEvent = Schema.Schema.Type + +interface ParserState { + readonly finishReason?: string + readonly hasToolCalls: boolean + readonly nextToolCallId: number + readonly usage?: Usage + readonly lifecycle: Lifecycle.State + readonly reasoningSignature?: string +} + +// ============================================================================= +// Tool Schema Conversion +// ============================================================================= +// Tool-schema conversion has two distinct concerns: +// +// 1. Sanitize — fix common authoring mistakes Gemini rejects: integer/number +// enums (must be strings), `required` entries that don't match a property, +// untyped arrays (`items` must be present), and `properties`/`required` +// keys on non-object scalars. Mirrors OpenCode's historical Gemini rules. +// +// 2. Project — lossy mapping from JSON Schema to Gemini's schema dialect: +// drop empty objects, derive `nullable: true` from `type: [..., "null"]`, +// coerce `const` to `[const]` enum, recurse properties/items, propagate +// only an allowlisted set of keys (description, required, format, type, +// properties, items, allOf, anyOf, oneOf, minLength). Anything outside the +// allowlist (e.g. `additionalProperties`, `$ref`) is silently dropped. +// +// Sanitize runs first, then project. The implementation lives in +// `utils/gemini-tool-schema` so this protocol keeps the same shape as the other +// provider protocols. + +// ============================================================================= +// Request Lowering +// ============================================================================= +const lowerTool = (tool: ToolDefinition, inputSchema: JsonSchema) => ({ + name: tool.name, + description: tool.description, + parameters: GeminiToolSchema.convert(inputSchema), +}) + +const lowerToolConfig = (toolChoice: NonNullable) => + ProviderShared.matchToolChoice("Gemini", toolChoice, { + auto: () => ({ functionCallingConfig: { mode: "AUTO" as const } }), + none: () => ({ functionCallingConfig: { mode: "NONE" as const } }), + required: () => ({ functionCallingConfig: { mode: "ANY" as const } }), + tool: (name) => ({ functionCallingConfig: { mode: "ANY" as const, allowedFunctionNames: [name] } }), + }) + +const lowerUserPart = Effect.fn("Gemini.lowerUserPart")(function* (part: TextPart | MediaPart) { + if (part.type === "text") return { text: part.text } + const media = yield* ProviderShared.validateMedia("Gemini", part, MEDIA_MIMES) + return { inlineData: { mimeType: media.mime, data: media.base64 } } +}) + +const googleMetadata = (metadata: Record): ProviderMetadata => ({ google: metadata }) + +const thoughtSignature = (providerMetadata: ProviderMetadata | undefined) => { + const google = providerMetadata?.google + return ProviderShared.isRecord(google) && typeof google.thoughtSignature === "string" + ? google.thoughtSignature + : undefined +} + +const functionCallId = (providerMetadata: ProviderMetadata | undefined) => { + const google = providerMetadata?.google + return ProviderShared.isRecord(google) && typeof google.functionCallId === "string" + ? google.functionCallId + : undefined +} + +const lowerToolCall = (part: ToolCallPart) => ({ + functionCall: { id: functionCallId(part.providerMetadata), name: part.name, args: part.input }, + thoughtSignature: thoughtSignature(part.providerMetadata), +}) + +const lowerMessages = Effect.fn("Gemini.lowerMessages")(function* (request: LLMRequest) { + const contents: GeminiContent[] = [] + + for (const message of request.messages) { + if (message.role === "system") { + const part = yield* ProviderShared.wrappedSystemUpdate("Gemini", message) + const previous = contents.at(-1) + if (previous?.role === "user") + contents[contents.length - 1] = { role: "user", parts: [...previous.parts, { text: part.text }] } + else contents.push({ role: "user", parts: [{ text: part.text }] }) + continue + } + + if (message.role === "user") { + const parts: Array> = [] + for (const part of message.content) { + if (!ProviderShared.supportsContent(part, ["text", "media"])) + return yield* ProviderShared.unsupportedContent("Gemini", "user", ["text", "media"]) + parts.push(yield* lowerUserPart(part)) + } + contents.push({ role: "user", parts }) + continue + } + + if (message.role === "assistant") { + const parts: Array> = [] + for (const part of message.content) { + if (!ProviderShared.supportsContent(part, ["text", "reasoning", "tool-call"])) + return yield* ProviderShared.unsupportedContent("Gemini", "assistant", ["text", "reasoning", "tool-call"]) + if (part.type === "text") { + parts.push({ text: part.text }) + continue + } + if (part.type === "reasoning") { + parts.push({ text: part.text, thought: true, thoughtSignature: thoughtSignature(part.providerMetadata) }) + continue + } + if (part.type === "tool-call") { + parts.push(lowerToolCall(part)) + continue + } + } + contents.push({ role: "model", parts }) + continue + } + + const parts: Array> = [] + for (const part of message.content) { + if (!ProviderShared.supportsContent(part, ["tool-result"])) + return yield* ProviderShared.unsupportedContent("Gemini", "tool", ["tool-result"]) + if (part.result.type !== "content") { + parts.push({ + functionResponse: { + id: functionCallId(part.providerMetadata), + name: part.name, + response: { + name: part.name, + content: ProviderShared.toolResultText(part), + }, + }, + }) + continue + } + const content: ReadonlyArray = part.result.value + const text = content.filter((item) => item.type === "text").map((item) => item.text) + const media: GeminiInlineDataPart[] = [] + for (const item of content) { + if (item.type === "text") continue + const value = yield* ProviderShared.validateToolFile("Gemini", item, MEDIA_MIMES) + media.push({ inlineData: { mimeType: value.mime, data: value.base64 } }) + } + parts.push({ + functionResponse: { + id: functionCallId(part.providerMetadata), + name: part.name, + response: { + name: part.name, + content: text.join("\n"), + }, + parts: media.length > 0 ? media : undefined, + }, + }) + } + contents.push({ role: "user", parts }) + } + + return contents +}) + +const resolveOptions = (request: LLMRequest) => { + const value = request.providerOptions?.gemini?.thinkingConfig + if (!ProviderShared.isRecord(value)) return {} + const thinkingConfig = { + thinkingBudget: typeof value.thinkingBudget === "number" ? value.thinkingBudget : undefined, + includeThoughts: typeof value.includeThoughts === "boolean" ? value.includeThoughts : undefined, + } + return { + thinkingConfig: Object.values(thinkingConfig).some((item) => item !== undefined) ? thinkingConfig : undefined, + } +} + +const fromRequest = Effect.fn("Gemini.fromRequest")(function* (request: LLMRequest) { + const hasTools = request.tools.length > 0 + const generation = request.generation + const options = resolveOptions(request) + const toolSchemaCompatibility = request.model.compatibility?.toolSchema + const generationConfig = { + maxOutputTokens: generation?.maxTokens, + temperature: generation?.temperature, + topP: generation?.topP, + topK: generation?.topK, + stopSequences: generation?.stop, + thinkingConfig: options.thinkingConfig, + } + + return { + contents: yield* lowerMessages(request), + systemInstruction: + request.system.length === 0 ? undefined : { parts: [{ text: ProviderShared.joinText(request.system) }] }, + tools: hasTools + ? [ + { + functionDeclarations: request.tools.map((tool) => + lowerTool(tool, ToolSchemaProjection.modelCompatibility(tool.inputSchema, toolSchemaCompatibility)), + ), + }, + ] + : undefined, + toolConfig: hasTools && request.toolChoice ? yield* lowerToolConfig(request.toolChoice) : undefined, + generationConfig: Object.values(generationConfig).some((value) => value !== undefined) + ? generationConfig + : undefined, + } +}) + +// ============================================================================= +// Stream Parsing +// ============================================================================= +// Gemini reports `promptTokenCount` (inclusive total) with a +// `cachedContentTokenCount` subset. `candidatesTokenCount` is *exclusive* +// of `thoughtsTokenCount` — visible-only, not a total — so we sum the two +// to produce the inclusive `outputTokens` the rest of the contract expects. +const mapUsage = (usage: GeminiUsage | undefined) => { + if (!usage) return undefined + const cached = usage.cachedContentTokenCount + const nonCached = ProviderShared.subtractTokens(usage.promptTokenCount, cached) + // `candidatesTokenCount` is visible-only; sum with thoughts to produce the + // inclusive `outputTokens` the contract expects. Only compute the total + // when the visible component is reported — otherwise we'd fabricate an + // inclusive number from a partial breakdown. + const outputTokens = + usage.candidatesTokenCount !== undefined ? usage.candidatesTokenCount + (usage.thoughtsTokenCount ?? 0) : undefined + return new Usage({ + inputTokens: usage.promptTokenCount, + outputTokens, + nonCachedInputTokens: nonCached, + cacheReadInputTokens: cached, + reasoningTokens: usage.thoughtsTokenCount, + totalTokens: ProviderShared.totalTokens(usage.promptTokenCount, outputTokens, usage.totalTokenCount), + providerMetadata: { google: usage }, + }) +} + +const mapFinishReason = (finishReason: string | undefined, hasToolCalls: boolean): FinishReason => { + if (finishReason === "STOP") return hasToolCalls ? "tool-calls" : "stop" + if (finishReason === "MAX_TOKENS") return "length" + if ( + finishReason === "IMAGE_SAFETY" || + finishReason === "RECITATION" || + finishReason === "SAFETY" || + finishReason === "BLOCKLIST" || + finishReason === "PROHIBITED_CONTENT" || + finishReason === "SPII" || + finishReason === "MODEL_ARMOR" || + finishReason === "IMAGE_PROHIBITED_CONTENT" || + finishReason === "IMAGE_RECITATION" || + finishReason === "LANGUAGE" + ) + return "content-filter" + if ( + finishReason === "MALFORMED_FUNCTION_CALL" || + finishReason === "UNEXPECTED_TOOL_CALL" || + finishReason === "NO_IMAGE" || + finishReason === "TOO_MANY_TOOL_CALLS" || + finishReason === "MISSING_THOUGHT_SIGNATURE" || + finishReason === "MALFORMED_RESPONSE" + ) + return "error" + return "unknown" +} + +const finish = (state: ParserState): ReadonlyArray => + state.finishReason || state.usage + ? (() => { + const events: LLMEvent[] = [] + const lifecycle = state.reasoningSignature + ? Lifecycle.reasoningEnd( + state.lifecycle, + events, + "reasoning-0", + googleMetadata({ thoughtSignature: state.reasoningSignature }), + ) + : state.lifecycle + Lifecycle.finish(lifecycle, events, { + reason: { + normalized: mapFinishReason(state.finishReason, state.hasToolCalls), + raw: state.finishReason, + }, + usage: state.usage, + }) + return events + })() + : [] + +const step = (state: ParserState, event: GeminiEvent) => { + const nextState = { + ...state, + usage: event.usageMetadata ? (mapUsage(event.usageMetadata) ?? state.usage) : state.usage, + } + const candidate = event.candidates?.[0] + if (!candidate?.content) + return Effect.succeed([ + { ...nextState, finishReason: candidate?.finishReason ?? nextState.finishReason }, + [], + ] as const) + + const events: LLMEvent[] = [] + let hasToolCalls = nextState.hasToolCalls + let lifecycle = nextState.lifecycle + let nextToolCallId = nextState.nextToolCallId + let reasoningSignature = nextState.reasoningSignature + + for (const part of candidate.content.parts) { + if ("thoughtSignature" in part && part.thoughtSignature && "thought" in part && part.thought) + reasoningSignature = part.thoughtSignature + if ("text" in part && part.text.length > 0) { + if (part.thought) { + lifecycle = Lifecycle.reasoningDelta( + lifecycle, + events, + "reasoning-0", + part.text, + part.thoughtSignature ? googleMetadata({ thoughtSignature: part.thoughtSignature }) : undefined, + ) + continue + } + lifecycle = Lifecycle.reasoningEnd( + lifecycle, + events, + "reasoning-0", + reasoningSignature ? googleMetadata({ thoughtSignature: reasoningSignature }) : undefined, + ) + lifecycle = Lifecycle.textDelta(lifecycle, events, "text-0", part.text) + continue + } + + if ("functionCall" in part) { + const input = part.functionCall.args + const id = `tool_${nextToolCallId++}` + const metadata = { + ...(part.functionCall.id === undefined ? {} : { functionCallId: part.functionCall.id }), + ...(part.thoughtSignature === undefined ? {} : { thoughtSignature: part.thoughtSignature }), + } + lifecycle = Lifecycle.reasoningEnd( + lifecycle, + events, + "reasoning-0", + reasoningSignature ? googleMetadata({ thoughtSignature: reasoningSignature }) : undefined, + ) + lifecycle = Lifecycle.stepStart(lifecycle, events) + events.push( + LLMEvent.toolCall({ + id, + name: part.functionCall.name, + input, + providerMetadata: Object.keys(metadata).length > 0 ? googleMetadata(metadata) : undefined, + }), + ) + hasToolCalls = true + } + } + + return Effect.succeed([ + { + ...nextState, + hasToolCalls, + lifecycle, + nextToolCallId, + reasoningSignature, + finishReason: candidate.finishReason ?? nextState.finishReason, + }, + events, + ] as const) +} + +// ============================================================================= +// Protocol And Gemini Route +// ============================================================================= +/** + * The Gemini protocol — request body construction, body schema, and the + * streaming-event state machine. Used by Google AI Studio Gemini and (once + * registered) Vertex Gemini. + */ +export const protocol = Protocol.make({ + id: ADAPTER, + body: { + schema: GeminiBody, + from: fromRequest, + }, + stream: { + event: Protocol.jsonEvent(GeminiEvent), + initial: () => ({ hasToolCalls: false, nextToolCallId: 0, lifecycle: Lifecycle.initial() }), + step, + onHalt: finish, + }, +}) + +export const route = Route.make({ + id: ADAPTER, + provider: "google", + providerMetadataKey: "google", + protocol, + // Gemini's path embeds the model id and pins SSE framing at the URL level. + endpoint: Endpoint.path(({ request }) => `/models/${request.model.id}:streamGenerateContent?alt=sse`, { + baseURL: DEFAULT_BASE_URL, + }), + auth: Auth.none, + framing: Framing.sse, +}) + +export * as Gemini from "./gemini" diff --git a/packages/ai/src/protocols/google-images.ts b/packages/ai/src/protocols/google-images.ts new file mode 100644 index 000000000000..ce5132809da4 --- /dev/null +++ b/packages/ai/src/protocols/google-images.ts @@ -0,0 +1,314 @@ +import { Effect, Encoding, Schema } from "effect" +import { Headers, HttpClientRequest } from "effect/unstable/http" +import { + GeneratedImage, + ImageModel, + ImageResponse, + type ImageInput, + type ImageRequestFor, + type ImageRoute, +} from "../image" +import { Auth, type Definition as AuthDefinition } from "../route/auth" +import { + InvalidProviderOutputReason, + LLMError, + Usage, + mergeHttpOptions, + mergeJsonRecords, + type HttpOptions, + type ProviderMetadata, +} from "../schema" +import { ProviderShared } from "./shared" +import { ImageInputs } from "./utils/image-input" + +const ADAPTER = "google-images" +export const DEFAULT_BASE_URL = "https://generativelanguage.googleapis.com/v1beta" + +export type GoogleImageString = Known | (string & {}) + +export type GoogleImageOptions = { + readonly aspectRatio?: GoogleImageString< + "1:1" | "2:3" | "3:2" | "3:4" | "4:3" | "4:5" | "5:4" | "9:16" | "16:9" | "21:9" + > + readonly imageSize?: GoogleImageString<"1K" | "2K" | "4K"> + readonly seed?: number + readonly thinkingLevel?: GoogleImageString<"MINIMAL" | "LOW" | "MEDIUM" | "HIGH"> + readonly includeThoughts?: boolean +} & Record + +export type GoogleImageBody = Record & { + readonly contents: ReadonlyArray<{ + readonly role: "user" + readonly parts: ReadonlyArray> + }> + readonly generationConfig: Record +} + +const GoogleUsage = Schema.StructWithRest( + Schema.Struct({ + cachedContentTokenCount: Schema.optional(Schema.Number), + thoughtsTokenCount: Schema.optional(Schema.Number), + promptTokenCount: Schema.optional(Schema.Number), + candidatesTokenCount: Schema.optional(Schema.Number), + totalTokenCount: Schema.optional(Schema.Number), + promptTokensDetails: Schema.optional(Schema.Unknown), + candidatesTokensDetails: Schema.optional(Schema.Unknown), + }), + [Schema.Record(Schema.String, Schema.Unknown)], +) + +const GoogleImageResponse = Schema.Struct({ + candidates: Schema.optional( + Schema.Array( + Schema.Struct({ + index: Schema.optional(Schema.Number), + content: Schema.optional( + Schema.Struct({ + parts: Schema.Array( + Schema.Struct({ + text: Schema.optional(Schema.String), + thought: Schema.optional(Schema.Boolean), + thoughtSignature: Schema.optional(Schema.String), + inlineData: Schema.optional( + Schema.Struct({ + mimeType: Schema.String, + data: Schema.String, + }), + ), + }), + ), + }), + ), + finishReason: Schema.optional(Schema.String), + finishMessage: Schema.optional(Schema.String), + safetyRatings: Schema.optional(Schema.Unknown), + citationMetadata: Schema.optional(Schema.Unknown), + groundingMetadata: Schema.optional(Schema.Unknown), + }), + ), + ), + usageMetadata: Schema.optional(GoogleUsage), + modelVersion: Schema.optional(Schema.String), + responseId: Schema.optional(Schema.String), + promptFeedback: Schema.optional(Schema.Unknown), +}) + +export interface ModelInput { + readonly id: string + readonly auth: AuthDefinition + readonly baseURL?: string + readonly headers?: Record + readonly http?: HttpOptions +} + +const nativeOptions = (options: GoogleImageOptions | undefined) => { + const { aspectRatio, imageSize, seed, thinkingLevel, includeThoughts, ...native } = options ?? {} + const image = { + aspectRatio, + imageSize, + } + const thinkingConfig = { + thinkingLevel, + includeThoughts, + } + return ( + mergeJsonRecords( + { + responseModalities: ["IMAGE"], + imageConfig: Object.values(image).some((value) => value !== undefined) ? image : undefined, + seed, + thinkingConfig: Object.values(thinkingConfig).some((value) => value !== undefined) ? thinkingConfig : undefined, + }, + native, + ) ?? { responseModalities: ["IMAGE"] } + ) +} + +const invalidOutput = (message: string, providerMetadata?: ProviderMetadata) => + new LLMError({ + module: ADAPTER, + method: "generate", + reason: new InvalidProviderOutputReason({ message, route: ADAPTER, providerMetadata }), + }) + +const applyQuery = (url: string, query: Record | undefined) => { + if (!query) return url + const next = new URL(url) + Object.entries(query).forEach(([key, value]) => next.searchParams.set(key, value)) + return next.toString() +} + +export const model = (input: ModelInput) => { + const route: ImageRoute = { + id: ADAPTER, + generate: Effect.fn("GoogleImages.generate")(function* (request: ImageRequestFor, execute) { + const imageParts = yield* Effect.forEach(request.images ?? [], googleImagePart) + const http = mergeHttpOptions(request.model.http, request.http) + const requestBody = mergeJsonRecords( + { + contents: [{ role: "user", parts: [{ text: request.prompt }, ...imageParts] }], + generationConfig: nativeOptions(request.options), + }, + http?.body, + ) as GoogleImageBody + const text = ProviderShared.encodeJson(requestBody) + const url = applyQuery( + `${(input.baseURL ?? DEFAULT_BASE_URL).replace(/\/$/, "")}/models/${request.model.id}:generateContent`, + http?.query, + ) + const headers = yield* Auth.toEffect(input.auth)({ + request, + method: "POST", + url, + body: text, + headers: Headers.fromInput({ ...input.headers, ...http?.headers }), + }) + const response = yield* execute( + HttpClientRequest.post(url).pipe( + HttpClientRequest.setHeaders(headers), + HttpClientRequest.bodyText(text, "application/json"), + ), + ) + const payload = yield* response.json.pipe( + Effect.mapError(() => invalidOutput("Failed to read the Google Images response")), + ) + const decoded = yield* Schema.decodeUnknownEffect(GoogleImageResponse)(payload).pipe( + Effect.mapError(() => invalidOutput("Google Images returned an invalid response")), + ) + const candidates = decoded.candidates ?? [] + const candidateMetadata = candidates.map((candidate, candidateIndex) => ({ + index: candidate.index ?? candidateIndex, + finishReason: candidate.finishReason, + finishMessage: candidate.finishMessage, + safetyRatings: candidate.safetyRatings, + citationMetadata: candidate.citationMetadata, + groundingMetadata: candidate.groundingMetadata, + parts: (candidate.content?.parts ?? []).map((part) => + part.inlineData === undefined + ? { + type: "text", + text: part.text, + thought: part.thought, + thoughtSignature: part.thoughtSignature, + } + : { + type: "inlineData", + mediaType: part.inlineData.mimeType, + thought: part.thought, + thoughtSignature: part.thoughtSignature, + }, + ), + })) + const encoded = candidates.flatMap((candidate, candidateIndex) => + (candidate.content?.parts ?? []).flatMap((part, partIndex) => + part.inlineData === undefined || part.thought === true + ? [] + : [{ candidate, candidateIndex, partIndex, inlineData: part.inlineData }], + ), + ) + const images = yield* Effect.forEach(encoded, (item) => + Effect.fromResult(Encoding.decodeBase64(item.inlineData.data)).pipe( + Effect.mapError(() => + invalidOutput( + `Google Images candidate ${item.candidateIndex} part ${item.partIndex} contains invalid base64 data`, + ), + ), + Effect.map( + (data) => + new GeneratedImage({ + mediaType: item.inlineData.mimeType, + data, + providerMetadata: { + google: { + candidateIndex: item.candidate.index ?? item.candidateIndex, + partIndex: item.partIndex, + finishReason: item.candidate.finishReason, + safetyRatings: item.candidate.safetyRatings, + citationMetadata: item.candidate.citationMetadata, + groundingMetadata: item.candidate.groundingMetadata, + thoughtSignature: item.candidate.content?.parts[item.partIndex]?.thoughtSignature, + }, + }, + }), + ), + ), + ) + if (images.length === 0) { + const finishReasons = candidates.flatMap((candidate) => + candidate.finishReason === undefined ? [] : [candidate.finishReason], + ) + return yield* invalidOutput( + `Google Images returned no final images${ + finishReasons.length === 0 ? "" : ` (finish reasons: ${finishReasons.join(", ")})` + }; inspect reason.providerMetadata.google for prompt feedback and candidate details`, + { + google: { + promptFeedback: decoded.promptFeedback, + candidates: candidateMetadata, + }, + }, + ) + } + const usage = decoded.usageMetadata + const outputTokens = + usage?.candidatesTokenCount === undefined + ? undefined + : usage.candidatesTokenCount + (usage.thoughtsTokenCount ?? 0) + return new ImageResponse({ + images, + usage: + usage === undefined + ? undefined + : new Usage({ + inputTokens: usage.promptTokenCount, + outputTokens, + nonCachedInputTokens: ProviderShared.subtractTokens( + usage.promptTokenCount, + usage.cachedContentTokenCount, + ), + cacheReadInputTokens: usage.cachedContentTokenCount, + reasoningTokens: usage.thoughtsTokenCount, + totalTokens: ProviderShared.totalTokens(usage.promptTokenCount, outputTokens, usage.totalTokenCount), + providerMetadata: { google: usage }, + }), + providerMetadata: { + google: { + modelVersion: decoded.modelVersion, + responseId: decoded.responseId, + promptFeedback: decoded.promptFeedback, + candidates: candidateMetadata, + }, + }, + }) + }), + } + return ImageModel.make({ id: input.id, provider: "google", route, http: input.http }) +} + +const googleImagePart = (image: ImageInput): Effect.Effect, LLMError> => { + if (image.type === "bytes") + return Effect.succeed({ inlineData: { mimeType: image.mediaType, data: Encoding.encodeBase64(image.data) } }) + if (image.type === "file-uri") return Effect.succeed({ fileData: { mimeType: image.mediaType, fileUri: image.uri } }) + if (image.type === "url") + return ImageInputs.decodeDataUrl(image.url, ADAPTER).pipe( + Effect.flatMap((decoded) => { + if (decoded === undefined) + return Effect.fail( + ImageInputs.invalid( + ADAPTER, + "Google generateContent does not fetch public image URLs; use bytes, a data URL, or a Gemini file URI", + ), + ) + return Effect.succeed({ + inlineData: { mimeType: decoded.mediaType, data: Encoding.encodeBase64(decoded.data) }, + }) + }), + ) + return Effect.fail( + ImageInputs.invalid(ADAPTER, "Google generateContent requires Gemini file URIs rather than provider file IDs"), + ) +} + +export const GoogleImages = { + model, +} as const diff --git a/packages/ai/src/protocols/index.ts b/packages/ai/src/protocols/index.ts new file mode 100644 index 000000000000..b677e1a59910 --- /dev/null +++ b/packages/ai/src/protocols/index.ts @@ -0,0 +1,9 @@ +export * as AnthropicMessages from "./anthropic-messages" +export * as BedrockConverse from "./bedrock-converse" +export * as Gemini from "./gemini" +export * as OpenAIChat from "./openai-chat" +export * as OpenAIImages from "./openai-images" +export * as OpenAICompatibleChat from "./openai-compatible-chat" +export * as OpenAICompatibleResponses from "./openai-compatible-responses" +export * as OpenAIResponses from "./openai-responses" +export * as OpenResponses from "./open-responses" diff --git a/packages/ai/src/protocols/open-responses.ts b/packages/ai/src/protocols/open-responses.ts new file mode 100644 index 000000000000..97ad08461412 --- /dev/null +++ b/packages/ai/src/protocols/open-responses.ts @@ -0,0 +1,1070 @@ +import { Effect, Schema } from "effect" +import type { Content } from "@opencode-ai/schema/tool" +import { HttpTransport } from "../route/transport" +import { Protocol } from "../route/protocol" +import { + LLMError, + LLMEvent, + Usage, + type FinishReason, + type JsonSchema, + type LLMRequest, + type MediaPart, + type ProviderMetadata, + type ReasoningPart, + type TextPart, + type ToolCallPart, + type ToolDefinition, + type ToolResultPart, +} from "../schema" +import { JsonObject, optionalArray, optionalNull, ProviderShared } from "./shared" +import { classifyProviderFailure } from "../provider-error" +import { OpenResponsesOptions } from "./utils/open-responses-options" +import { Lifecycle } from "./utils/lifecycle" +import { ToolSchemaProjection } from "./utils/tool-schema" +import { ToolStream } from "./utils/tool-stream" + +const ADAPTER = "open-responses" +const NAME = "Open Responses" +const MEDIA_MIMES = new Set([...ProviderShared.IMAGE_MIMES, ...ProviderShared.PDF_MIMES]) +export const PATH = "/responses" + +// ============================================================================= +// Request Body Schema +// ============================================================================= +const OpenResponsesInputText = Schema.Struct({ + type: Schema.tag("input_text"), + text: Schema.String, +}) +const OpenResponsesInputImage = Schema.Struct({ + type: Schema.tag("input_image"), + image_url: Schema.String, +}) +const OpenResponsesInputFile = Schema.Struct({ + type: Schema.tag("input_file"), + filename: Schema.String, + file_data: Schema.String, + mime_type: Schema.optional(Schema.String), +}) +const MediaInput = Schema.Union([OpenResponsesInputImage, OpenResponsesInputFile]) +export type MediaInput = Schema.Schema.Type +const OpenResponsesInputContent = Schema.Union([OpenResponsesInputText, MediaInput]) + +const OpenResponsesOutputText = Schema.Struct({ + type: Schema.tag("output_text"), + text: Schema.String, +}) + +export const MessagePhase = Schema.Literals(["commentary", "final_answer"]) +type MessagePhase = Schema.Schema.Type + +const OpenResponsesReasoningSummaryText = Schema.Struct({ + type: Schema.tag("summary_text"), + text: Schema.String, +}) + +const OpenResponsesReasoningItem = Schema.Struct({ + type: Schema.tag("reasoning"), + id: Schema.optionalKey(Schema.String), + summary: Schema.Array(OpenResponsesReasoningSummaryText), + encrypted_content: optionalNull(Schema.String), +}) + +const OpenResponsesItemReference = Schema.Struct({ + type: Schema.tag("item_reference"), + id: Schema.String, +}) + +// `function_call_output.output` accepts either a plain string or an ordered +// array of content items so tools can return images and files in addition to text. +// https://www.openresponses.org/reference +const OpenResponsesFunctionCallOutputContent = Schema.Union([ + OpenResponsesInputText, + OpenResponsesInputImage, + OpenResponsesInputFile, +]) + +const OpenResponsesFunctionCallOutput = Schema.Union([ + Schema.String, + Schema.Array(OpenResponsesFunctionCallOutputContent), +]) + +export const InputItem = Schema.Union([ + Schema.Struct({ role: Schema.tag("system"), content: Schema.String }), + Schema.Struct({ role: Schema.tag("user"), content: Schema.Array(OpenResponsesInputContent) }), + Schema.Struct({ + role: Schema.tag("assistant"), + content: Schema.Array(OpenResponsesOutputText), + phase: Schema.optionalKey(MessagePhase), + }), + OpenResponsesReasoningItem, + OpenResponsesItemReference, + Schema.Struct({ + type: Schema.tag("function_call"), + call_id: Schema.String, + name: Schema.String, + arguments: Schema.String, + }), + Schema.Struct({ + type: Schema.tag("function_call_output"), + call_id: Schema.String, + output: OpenResponsesFunctionCallOutput, + }), +]) +type OpenResponsesInputItem = Schema.Schema.Type +type LoweredInputItem = + | OpenResponsesInputItem + | { + readonly role: "assistant" + readonly content: ReadonlyArray<{ readonly type: "output_text"; readonly text: string }> + readonly phase?: MessagePhase | null + } + +// Mutable counterpart of the schema reasoning item so `lowerMessages` can fold +// multiple streamed summary parts into the same item before flushing. +type OpenResponsesReasoningInput = { + type: "reasoning" + id: string + summary: Array<{ type: "summary_text"; text: string }> + encrypted_content?: string | null +} +type OpenResponsesReasoningReplay = Omit + +export const Tool = Schema.Struct({ + type: Schema.tag("function"), + name: Schema.String, + description: Schema.String, + parameters: JsonObject, + strict: Schema.optional(Schema.Boolean), +}) + +export const ToolChoice = Schema.Union([ + Schema.Literals(["auto", "none", "required"]), + Schema.Struct({ type: Schema.tag("function"), name: Schema.String }), +]) + +// Fields shared between the HTTP body and the WebSocket `response.create` +// message. The HTTP body adds `stream: true`; the WebSocket message adds +// `type: "response.create"`. Defining the shared shape once keeps the two +// transports in sync without a destructure-and-strip dance. +export const coreFields = { + model: Schema.String, + input: Schema.Array(InputItem), + instructions: Schema.optional(Schema.String), + tools: optionalArray(Tool), + tool_choice: Schema.optional(ToolChoice), + store: Schema.optional(Schema.Boolean), + service_tier: Schema.optional(OpenResponsesOptions.ServiceTierSchema), + prompt_cache_key: Schema.optional(Schema.String), + include: optionalArray(OpenResponsesOptions.ResponseIncludableSchema), + reasoning: Schema.optional( + Schema.Struct({ + effort: Schema.optional(OpenResponsesOptions.ReasoningEffort), + summary: Schema.optional(Schema.Literals(["auto", "concise", "detailed"])), + }), + ), + text: Schema.optional( + Schema.Struct({ + verbosity: Schema.optional(OpenResponsesOptions.TextVerbositySchema), + }), + ), + max_output_tokens: Schema.optional(Schema.Number), + temperature: Schema.optional(Schema.Number), + top_p: Schema.optional(Schema.Number), +} + +const OpenResponsesBody = Schema.Struct({ + ...coreFields, + stream: Schema.Literal(true), +}) +export type OpenResponsesBody = Schema.Schema.Type + +const OpenResponsesUsage = Schema.Struct({ + input_tokens: Schema.optional(Schema.Number), + input_tokens_details: optionalNull( + Schema.Struct({ + cached_tokens: Schema.optional(Schema.Number), + cache_write_tokens: Schema.optional(Schema.Number), + }), + ), + output_tokens: Schema.optional(Schema.Number), + output_tokens_details: optionalNull(Schema.Struct({ reasoning_tokens: Schema.optional(Schema.Number) })), + total_tokens: Schema.optional(Schema.Number), +}) +type OpenResponsesUsage = Schema.Schema.Type + +export const StreamItem = Schema.StructWithRest( + Schema.Struct({ + type: Schema.String, + id: Schema.optional(Schema.String), + call_id: Schema.optional(Schema.String), + name: Schema.optional(Schema.String), + arguments: Schema.optional(Schema.String), + encrypted_content: optionalNull(Schema.String), + }), + [Schema.Record(Schema.String, Schema.Unknown)], +) +export type StreamItem = Schema.Schema.Type + +// The Responses schema puts streaming error details at the top level and +// response failures under `response.error`. WebSocket failures use an +// event-level `error` envelope, so accept all three shapes here. +// https://www.openresponses.org/specification +const OpenResponsesErrorPayload = Schema.Struct({ + code: optionalNull(Schema.String), + message: optionalNull(Schema.String), + param: optionalNull(Schema.String), +}) + +export const Event = Schema.StructWithRest( + Schema.Struct({ + type: Schema.String, + delta: Schema.optional(Schema.String), + text: Schema.optional(Schema.String), + item_id: Schema.optional(Schema.String), + summary_index: Schema.optional(Schema.Number), + item: Schema.optional(StreamItem), + response: Schema.optional( + Schema.StructWithRest( + Schema.Struct({ + id: Schema.optional(Schema.String), + service_tier: optionalNull(Schema.String), + incomplete_details: optionalNull(Schema.Struct({ reason: Schema.optional(Schema.String) })), + usage: optionalNull(OpenResponsesUsage), + error: optionalNull(OpenResponsesErrorPayload), + }), + [Schema.Record(Schema.String, Schema.Unknown)], + ), + ), + code: optionalNull(Schema.String), + message: Schema.optional(Schema.String), + param: optionalNull(Schema.String), + error: optionalNull(OpenResponsesErrorPayload), + }), + [Schema.Record(Schema.String, Schema.Unknown)], +) +export type Event = Schema.Schema.Type + +export interface Extension { + readonly id: string + readonly name: string + readonly lowerMedia?: (input: { + readonly part: MediaPart + readonly media: ProviderShared.ValidatedMedia + readonly request: LLMRequest + }) => MediaInput | undefined + readonly messagePhase?: (value: unknown) => MessagePhase | null | undefined +} + +const BASE: Extension = { id: ADAPTER, name: NAME } + +export interface ParserState { + readonly id: string + readonly name: string + readonly providerMetadataKey: string + readonly tools: ToolStream.State + readonly hasFunctionCall: boolean + readonly lifecycle: Lifecycle.State + readonly messageItems: ReadonlySet + readonly messagePhase: (value: unknown) => MessagePhase | null | undefined + readonly messagePhases: Readonly> + readonly reasoningItems: Readonly> + readonly store: boolean | undefined +} + +type ReasoningSummaryStatus = "active" | "can-conclude" | "concluded" + +interface ReasoningStreamItem { + readonly encryptedContent: string | null | undefined + // Keyed by the wire protocol's numeric `summary_index`. JS object keys coerce to + // strings, but typing the map as `Record` documents intent + // and matches the wire field. + readonly summaryParts: Readonly> +} + +// ============================================================================= +// Request Lowering +// ============================================================================= +export const lowerTool = Effect.fn("OpenResponses.lowerTool")(function* ( + protocolName: string, + tool: ToolDefinition, + inputSchema: JsonSchema, +) { + if (tool.native !== undefined) + return yield* ProviderShared.invalidRequest(`${protocolName} does not support provider-native tool ${tool.name}`) + return { + type: "function" as const, + name: tool.name, + description: tool.description, + parameters: ToolSchemaProjection.responses(inputSchema), + // TODO: Read this from Responses tool options so direct LLM callers can opt into strict schemas. + strict: false, + } +}) + +export const lowerToolChoice = (protocolName: string, toolChoice: NonNullable) => + ProviderShared.matchToolChoice(protocolName, toolChoice, { + auto: () => "auto" as const, + none: () => "none" as const, + required: () => "required" as const, + tool: (toolName) => ({ type: "function" as const, name: toolName }), + }) + +const lowerToolCall = (part: ToolCallPart): OpenResponsesInputItem => ({ + type: "function_call", + call_id: part.id, + name: part.name, + arguments: ProviderShared.encodeJson(part.input), +}) + +const lowerReasoning = (part: ReasoningPart, providerMetadataKey: string): OpenResponsesReasoningInput | undefined => { + const metadata = part.providerMetadata?.[providerMetadataKey] + if (!ProviderShared.isRecord(metadata) || typeof metadata.itemId !== "string" || metadata.itemId.length === 0) + return undefined + const encryptedContent = + typeof metadata.reasoningEncryptedContent === "string" || metadata.reasoningEncryptedContent === null + ? metadata.reasoningEncryptedContent + : undefined + return { + type: "reasoning", + id: metadata.itemId, + summary: part.text.length > 0 ? [{ type: "summary_text", text: part.text }] : [], + encrypted_content: encryptedContent, + } +} + +const hostedToolItemID = (part: ToolResultPart, providerMetadataKey: string) => { + const metadata = part.providerMetadata?.[providerMetadataKey] + return ProviderShared.isRecord(metadata) && typeof metadata.itemId === "string" && metadata.itemId.length > 0 + ? metadata.itemId + : undefined +} + +const lowerMedia = Effect.fn("OpenResponses.lowerMedia")(function* ( + part: MediaPart, + request: LLMRequest, + extension: Extension, +) { + const media = yield* ProviderShared.validateMedia(extension.name, part, MEDIA_MIMES) + const extended = extension.lowerMedia?.({ part, media, request }) + if (extended) return extended + if (media.mime === "application/pdf") { + return { + type: "input_file" as const, + filename: part.filename ?? "document.pdf", + file_data: media.dataUrl, + } + } + return { type: "input_image" as const, image_url: media.dataUrl } +}) + +const lowerUserContent = Effect.fn("OpenResponses.lowerUserContent")(function* ( + part: LLMRequest["messages"][number]["content"][number], + request: LLMRequest, + extension: Extension, +) { + if (part.type === "text") return { type: "input_text" as const, text: part.text } + if (part.type === "media") return yield* lowerMedia(part, request, extension) + return yield* ProviderShared.unsupportedContent(extension.name, "user", ["text", "media"]) +}) + +// Tool results may carry structured text, images, and files. Keep media as provider-native +// content instead of JSON-stringifying base64 into a prompt string. +const lowerToolResultContentItem = Effect.fn("OpenResponses.lowerToolResultContentItem")(function* ( + item: Content, + request: LLMRequest, + extension: Extension, +) { + if (item.type === "text") return { type: "input_text" as const, text: item.text } + return yield* lowerMedia( + { type: "media", mediaType: item.mime, data: item.uri, filename: item.name }, + request, + extension, + ) +}) + +const lowerToolResultOutput = Effect.fn("OpenResponses.lowerToolResultOutput")(function* ( + part: ToolResultPart, + request: LLMRequest, + extension: Extension, +) { + // Text/json/error results are encoded as a plain string for backward + // compatibility with existing cassettes and provider expectations. + if (part.result.type !== "content") return ProviderShared.toolResultText(part) + // Preserve the narrowed array element type when compiled through a consumer package. + const content: ReadonlyArray = part.result.value + return yield* Effect.forEach(content, (item) => lowerToolResultContentItem(item, request, extension)) +}) + +const lowerMessages = Effect.fn("OpenResponses.lowerMessages")(function* (request: LLMRequest, extension: Extension) { + const system: LoweredInputItem[] = + request.system.length === 0 ? [] : [{ role: "system", content: ProviderShared.joinText(request.system) }] + const input: LoweredInputItem[] = [...system] + const store = OpenResponsesOptions.resolve(request).store + const providerMetadataKey = request.model.route.providerMetadataKey ?? "openresponses" + + for (const message of request.messages) { + if (message.role === "system") { + const part = yield* ProviderShared.wrappedSystemUpdate(extension.name, message) + const previous = input.at(-1) + if (previous && "role" in previous && previous.role === "user") + input[input.length - 1] = { + role: "user", + content: [...previous.content, { type: "input_text", text: part.text }], + } + else input.push({ role: "user", content: [{ type: "input_text", text: part.text }] }) + continue + } + + if (message.role === "user") { + input.push({ + role: "user", + content: yield* Effect.forEach(message.content, (part) => lowerUserContent(part, request, extension)), + }) + continue + } + + if (message.role === "assistant") { + const content: TextPart[] = [] + const reasoningItems: Record = {} + const reasoningReferences = new Set() + const hostedToolReferences = new Set() + const flushText = () => { + if (content.length === 0) return + const groups = content.reduce>( + (groups, part) => { + const metadata = part.providerMetadata?.[providerMetadataKey] + const phase = + ProviderShared.isRecord(metadata) + ? messagePhase(metadata.phase, extension) + : undefined + const group = groups.at(-1) + if (group && group.phase === phase) group.parts.push(part) + else groups.push({ phase, parts: [part] }) + return groups + }, + [], + ) + input.push( + ...groups.map((group) => ({ + role: "assistant" as const, + content: group.parts.map((part) => ({ type: "output_text" as const, text: part.text })), + ...(group.phase === undefined ? {} : { phase: group.phase }), + })), + ) + content.splice(0, content.length) + } + for (const part of message.content) { + if (part.type === "text") { + content.push(part) + continue + } + if (part.type === "reasoning") { + flushText() + const reasoning = lowerReasoning(part, providerMetadataKey) + if (!reasoning) continue + if (store !== false) { + if (!reasoningReferences.has(reasoning.id)) input.push({ type: "item_reference", id: reasoning.id }) + reasoningReferences.add(reasoning.id) + continue + } + const existing = reasoningItems[reasoning.id] + if (existing) { + existing.summary.push(...reasoning.summary) + if (typeof reasoning.encrypted_content === "string") + existing.encrypted_content = reasoning.encrypted_content + continue + } + const replay = { + type: reasoning.type, + summary: reasoning.summary, + encrypted_content: reasoning.encrypted_content, + } + reasoningItems[reasoning.id] = replay + input.push(replay) + continue + } + if (part.type === "tool-call") { + flushText() + if (part.providerExecuted === true) continue + input.push(lowerToolCall(part)) + continue + } + if (part.type === "tool-result" && part.providerExecuted === true) { + flushText() + const itemID = hostedToolItemID(part, providerMetadataKey) + if (store !== false && itemID && !hostedToolReferences.has(itemID)) + input.push({ type: "item_reference", id: itemID }) + if (store === false && part.result.type === "content") { + const content: ReadonlyArray = part.result.value + input.push({ + role: "user", + content: yield* Effect.forEach(content, (item) => lowerToolResultContentItem(item, request, extension)), + }) + } + if (itemID) hostedToolReferences.add(itemID) + continue + } + return yield* ProviderShared.unsupportedContent(extension.name, "assistant", [ + "text", + "reasoning", + "tool-call", + "tool-result", + ]) + } + flushText() + continue + } + + for (const part of message.content) { + if (!ProviderShared.supportsContent(part, ["tool-result"])) + return yield* ProviderShared.unsupportedContent(extension.name, "tool", ["tool-result"]) + input.push({ + type: "function_call_output", + call_id: part.id, + output: yield* lowerToolResultOutput(part, request, extension), + }) + } + } + + // With store:false, Responses APIs only accept previous reasoning items when the + // complete item has encrypted state. Summary blocks for one item may carry + // that state only on the last block, so filter after they have been joined. + return store === false + ? input.filter( + (item) => !("type" in item) || item.type !== "reasoning" || typeof item.encrypted_content === "string", + ) + : input +}) + +const lowerOptions = (request: LLMRequest) => { + const options = OpenResponsesOptions.resolve(request) + return { + ...(options.instructions ? { instructions: options.instructions } : {}), + ...(options.store !== undefined ? { store: options.store } : {}), + ...(options.promptCacheKey ? { prompt_cache_key: options.promptCacheKey } : {}), + ...(options.include ? { include: options.include } : {}), + ...(options.reasoningEffort || options.reasoningSummary + ? { reasoning: { effort: options.reasoningEffort, summary: options.reasoningSummary } } + : {}), + ...(options.textVerbosity ? { text: { verbosity: options.textVerbosity } } : {}), + ...(options.serviceTier ? { service_tier: options.serviceTier } : {}), + } +} + +export const fromRequestWithExtension = Effect.fn("OpenResponses.fromRequestWithExtension")(function* ( + request: LLMRequest, + extension: Extension, +) { + const generation = request.generation + const toolSchemaCompatibility = request.model.compatibility?.toolSchema + return { + model: request.model.id, + input: yield* lowerMessages(request, extension), + tools: + request.tools.length === 0 + ? undefined + : yield* Effect.forEach(request.tools, (tool) => + lowerTool( + extension.name, + tool, + ToolSchemaProjection.modelCompatibility(tool.inputSchema, toolSchemaCompatibility), + ), + ), + tool_choice: request.toolChoice ? yield* lowerToolChoice(extension.name, request.toolChoice) : undefined, + stream: true as const, + max_output_tokens: generation?.maxTokens, + temperature: generation?.temperature, + top_p: generation?.topP, + ...lowerOptions(request), + } +}) + +const decodeBody = ProviderShared.validateWith(Schema.decodeUnknownEffect(OpenResponsesBody)) + +export const fromRequest = Effect.fn("OpenResponses.fromRequest")(function* (request: LLMRequest) { + return yield* decodeBody(yield* fromRequestWithExtension(request, BASE)) +}) + +// ============================================================================= +// Stream Parsing +// ============================================================================= +// Responses APIs report `input_tokens` (inclusive total) with a +// cached-read and cache-write subsets, and `output_tokens` (inclusive total) +// with a `reasoning_tokens` subset. Pass the totals through and derive the +// non-cached breakdown. +const mapUsage = (usage: OpenResponsesUsage | null | undefined, providerMetadataKey: string) => { + if (!usage) return undefined + const cached = usage.input_tokens_details?.cached_tokens + const cacheWrite = usage.input_tokens_details?.cache_write_tokens + const reasoning = usage.output_tokens_details?.reasoning_tokens + const nonCached = ProviderShared.subtractTokens(usage.input_tokens, ProviderShared.sumTokens(cached, cacheWrite)) + return new Usage({ + inputTokens: usage.input_tokens, + outputTokens: usage.output_tokens, + nonCachedInputTokens: nonCached, + cacheReadInputTokens: cached, + cacheWriteInputTokens: cacheWrite, + reasoningTokens: reasoning, + totalTokens: ProviderShared.totalTokens(usage.input_tokens, usage.output_tokens, usage.total_tokens), + providerMetadata: { [providerMetadataKey]: usage }, + }) +} + +const mapFinishReason = (event: Event, hasFunctionCall: boolean): FinishReason => { + const reason = event.response?.incomplete_details?.reason + if (reason === undefined || reason === null) { + if (hasFunctionCall) return "tool-calls" + if (event.type === "response.incomplete") return "unknown" + return "stop" + } + if (reason === "max_output_tokens") return "length" + if (reason === "content_filter") return "content-filter" + return hasFunctionCall ? "tool-calls" : "unknown" +} + +export const providerMetadata = (state: ParserState, metadata: Record): ProviderMetadata => ({ + [state.providerMetadataKey]: metadata, +}) + +const isReasoningItem = (item: StreamItem): item is StreamItem & { type: "reasoning"; id: string } => + item.type === "reasoning" && typeof item.id === "string" && item.id.length > 0 + +export type StepResult = readonly [ParserState, ReadonlyArray] + +const NO_EVENTS: StepResult["1"] = [] + +// `response.completed` / `response.incomplete` are clean finishes that emit a +// `finish` event; `response.failed` is a hard failure. All three end the stream, +// so keep this set aligned with `step` and the protocol's terminal predicate. +const TERMINAL_TYPES = new Set(["response.completed", "response.incomplete", "response.failed"]) +export const terminal = (event: Event) => TERMINAL_TYPES.has(event.type) + +const onOutputTextDelta = (state: ParserState, event: Event, id: string): StepResult => { + if (!event.delta) return [state, NO_EVENTS] + const events: LLMEvent[] = [] + const phase = state.messagePhases[id] + const metadata = phase === undefined ? undefined : providerMetadata(state, { phase }) + const lifecycle = Lifecycle.textStart(state.lifecycle, events, id, metadata) + return [ + { ...state, lifecycle: Lifecycle.textDelta(lifecycle, events, id, event.delta) }, + events, + ] +} + +const onOutputTextDone = (state: ParserState, event: Event, id: string): StepResult => { + if (state.messageItems.has(id)) { + if (state.lifecycle.text.has(id) || event.text === undefined) return [state, NO_EVENTS] + return onOutputTextDelta(state, { ...event, delta: event.text }, id) + } + const events: LLMEvent[] = [] + return [{ ...state, lifecycle: Lifecycle.textEnd(state.lifecycle, events, id) }, events] +} + +export const onReasoningDelta = (state: ParserState, event: Event, itemID: string): StepResult => { + if (!event.delta) return [state, NO_EVENTS] + const events: LLMEvent[] = [] + const id = + event.summary_index !== undefined || state.reasoningItems[itemID] ? `${itemID}:${event.summary_index ?? 0}` : itemID + return [ + { + ...state, + lifecycle: Lifecycle.reasoningDelta(state.lifecycle, events, id, event.delta), + }, + events, + ] +} + +export const onReasoningDone = (state: ParserState, _event: Event): StepResult => [state, NO_EVENTS] + +const reasoningMetadata = (state: ParserState, item: StreamItem & { id: string }) => + providerMetadata(state, { itemId: item.id, reasoningEncryptedContent: item.encrypted_content ?? null }) + +// Responses APIs stream reasoning items in a stable order: +// `output_item.added` (reasoning) → +// `reasoning_summary_part.added` (index=0) → +// `reasoning_summary_text.delta` → +// `reasoning_summary_part.done` (index=0) → +// (repeat for index>0) → +// `output_item.done` (reasoning). +// The handlers below rely on this ordering: `onOutputItemAdded` seeds the +// per-item entry, `onReasoningSummaryPartAdded` for `summary_index === 0` +// short-circuits when the entry already exists, and higher-index handlers +// fold against the same entry. Behaviour for out-of-order events is +// best-effort, not guaranteed. +const onOutputItemAdded = (state: ParserState, event: Event): StepResult => { + const item = event.item + if (item?.type === "message" && item.id) + return [ + { + ...state, + messageItems: new Set([...state.messageItems, item.id]), + messagePhases: (() => { + const phase = state.messagePhase(item.phase) + return phase === undefined ? state.messagePhases : { ...state.messagePhases, [item.id]: phase } + })(), + }, + NO_EVENTS, + ] + if (item && isReasoningItem(item)) { + const events: LLMEvent[] = [] + return [ + { + ...state, + lifecycle: Lifecycle.reasoningStart(state.lifecycle, events, `${item.id}:0`, reasoningMetadata(state, item)), + reasoningItems: { + ...state.reasoningItems, + [item.id]: { encryptedContent: item.encrypted_content, summaryParts: { 0: "active" } }, + }, + }, + events, + ] + } + if (item?.type !== "function_call" || !item.id) return [state, NO_EVENTS] + const metadata = providerMetadata(state, { itemId: item.id }) + const events: LLMEvent[] = [] + const lifecycle = Lifecycle.stepStart(state.lifecycle, events) + return [ + { + ...state, + lifecycle, + tools: ToolStream.start(state.tools, item.id, { + id: item.call_id ?? item.id, + name: item.name ?? "", + input: item.arguments ?? "", + providerMetadata: metadata, + }), + }, + [ + ...events, + LLMEvent.toolInputStart({ id: item.call_id ?? item.id, name: item.name ?? "", providerMetadata: metadata }), + ], + ] +} + +const onReasoningSummaryPartAdded = (state: ParserState, event: Event): StepResult => { + if (!event.item_id || event.summary_index === undefined) return [state, NO_EVENTS] + const item = state.reasoningItems[event.item_id] ?? { encryptedContent: undefined, summaryParts: {} } + if (event.summary_index === 0) { + if (state.reasoningItems[event.item_id]) return [state, NO_EVENTS] + const events: LLMEvent[] = [] + return [ + { + ...state, + lifecycle: Lifecycle.reasoningStart( + state.lifecycle, + events, + `${event.item_id}:0`, + providerMetadata(state, { itemId: event.item_id, reasoningEncryptedContent: null }), + ), + reasoningItems: { + ...state.reasoningItems, + [event.item_id]: { ...item, summaryParts: { 0: "active" } }, + }, + }, + events, + ] + } + + const events: LLMEvent[] = [] + const closed = Object.entries(item.summaryParts) + .filter((entry) => entry[1] === "can-conclude") + .reduce( + (lifecycle, entry) => + Lifecycle.reasoningEnd( + lifecycle, + events, + `${event.item_id}:${entry[0]}`, + providerMetadata(state, { itemId: event.item_id }), + ), + state.lifecycle, + ) + return [ + { + ...state, + lifecycle: Lifecycle.reasoningStart( + closed, + events, + `${event.item_id}:${event.summary_index}`, + providerMetadata(state, { itemId: event.item_id, reasoningEncryptedContent: item.encryptedContent ?? null }), + ), + reasoningItems: { + ...state.reasoningItems, + [event.item_id]: { + ...item, + summaryParts: { + ...Object.fromEntries( + Object.entries(item.summaryParts).map((entry) => + entry[1] === "can-conclude" ? [entry[0], "concluded" as const] : entry, + ), + ), + [event.summary_index]: "active", + }, + }, + }, + }, + events, + ] +} + +const onReasoningSummaryPartDone = (state: ParserState, event: Event): StepResult => { + if (!event.item_id || event.summary_index === undefined) return [state, NO_EVENTS] + const item = state.reasoningItems[event.item_id] + if (!item) return [state, NO_EVENTS] + const events: LLMEvent[] = [] + return [ + { + ...state, + lifecycle: + state.store !== false + ? Lifecycle.reasoningEnd( + state.lifecycle, + events, + `${event.item_id}:${event.summary_index}`, + providerMetadata(state, { itemId: event.item_id }), + ) + : state.lifecycle, + reasoningItems: { + ...state.reasoningItems, + [event.item_id]: { + ...item, + summaryParts: { + ...item.summaryParts, + [event.summary_index]: state.store !== false ? "concluded" : "can-conclude", + }, + }, + }, + }, + events, + ] +} + +const onFunctionCallArgumentsDelta = Effect.fn("OpenResponses.onFunctionCallArgumentsDelta")(function* ( + state: ParserState, + event: Event, +) { + if (!event.item_id || !event.delta) return [state, NO_EVENTS] satisfies StepResult + const result = ToolStream.appendExisting( + state.id, + state.tools, + event.item_id, + event.delta, + `${state.name} tool argument delta is missing its tool call`, + ) + if (ToolStream.isError(result)) return yield* result + const events: LLMEvent[] = [] + const lifecycle = result.events.length ? Lifecycle.stepStart(state.lifecycle, events) : state.lifecycle + events.push(...result.events) + return [{ ...state, lifecycle, tools: result.tools }, events] satisfies StepResult +}) + +const onOutputItemDone = Effect.fn("OpenResponses.onOutputItemDone")(function* (state: ParserState, event: Event) { + const item = event.item + if (!item) return [state, NO_EVENTS] satisfies StepResult + + if (item.type === "message" && item.id) { + const itemPhase = state.messagePhase(item.phase) + const phase = itemPhase === undefined ? state.messagePhases[item.id] : itemPhase + const events: LLMEvent[] = [] + const messageItems = new Set(state.messageItems) + messageItems.delete(item.id) + const { [item.id]: _phase, ...messagePhases } = state.messagePhases + return [ + { + ...state, + lifecycle: Lifecycle.textEnd( + state.lifecycle, + events, + item.id, + phase === undefined ? undefined : providerMetadata(state, { phase }), + ), + messageItems, + messagePhases, + }, + events, + ] satisfies StepResult + } + + if (item.type === "function_call") { + if (!item.id || !item.call_id || !item.name) return [state, NO_EVENTS] satisfies StepResult + const tools = state.tools[item.id] + ? state.tools + : ToolStream.start(state.tools, item.id, { id: item.call_id, name: item.name }) + const result = + item.arguments === undefined + ? yield* ToolStream.finish(state.id, tools, item.id) + : yield* ToolStream.finishWithInput(state.id, tools, item.id, item.arguments) + const events: LLMEvent[] = [] + const resultEvents = result.events ?? [] + const lifecycle = resultEvents.length ? Lifecycle.stepStart(state.lifecycle, events) : state.lifecycle + events.push(...resultEvents) + return [ + { + ...state, + lifecycle, + hasFunctionCall: + resultEvents.some((event) => LLMEvent.is.toolCall(event) || LLMEvent.is.toolInputError(event)) || + state.hasFunctionCall, + tools: result.tools, + }, + events, + ] satisfies StepResult + } + + if (isReasoningItem(item)) { + const events: LLMEvent[] = [] + const metadata = reasoningMetadata(state, item) + const reasoningItem = state.reasoningItems[item.id] + if (reasoningItem) { + const lifecycle = Object.entries(reasoningItem.summaryParts) + .filter((entry) => entry[1] === "active" || entry[1] === "can-conclude") + .reduce( + (lifecycle, entry) => Lifecycle.reasoningEnd(lifecycle, events, `${item.id}:${entry[0]}`, metadata), + state.lifecycle, + ) + const { [item.id]: _removed, ...reasoningItems } = state.reasoningItems + return [{ ...state, lifecycle, reasoningItems }, events] satisfies StepResult + } + if (!state.lifecycle.reasoning.has(item.id)) { + const lifecycle = Lifecycle.stepStart(state.lifecycle, events) + events.push(LLMEvent.reasoningStart({ id: item.id, providerMetadata: metadata })) + events.push(LLMEvent.reasoningEnd({ id: item.id, providerMetadata: metadata })) + return [{ ...state, lifecycle }, events] satisfies StepResult + } + return [ + { ...state, lifecycle: Lifecycle.reasoningEnd(state.lifecycle, events, item.id, metadata) }, + events, + ] satisfies StepResult + } + + return [state, NO_EVENTS] satisfies StepResult +}) + +const onResponseFinish = (state: ParserState, event: Event): StepResult => { + const events: LLMEvent[] = [] + const lifecycle = Lifecycle.finish(state.lifecycle, events, { + reason: { + normalized: mapFinishReason(event, state.hasFunctionCall), + raw: event.response?.incomplete_details?.reason, + }, + usage: mapUsage(event.response?.usage, state.providerMetadataKey), + providerMetadata: + event.response?.id || event.response?.service_tier + ? providerMetadata(state, { + responseId: event.response.id, + serviceTier: event.response.service_tier, + }) + : undefined, + }) + return [{ ...state, lifecycle }, events] +} + +// Build a single human-readable message from whatever the provider supplied. +// When both code and message are present, prefix the code so consumers see +// the failure mode (e.g. `rate_limit_exceeded: Slow down`) instead of just +// the bare message — production rate limits and context-length failures used +// to be indistinguishable from generic stream drops. +const providerErrorMessage = (event: Event, fallback: string): string => { + const nested = event.error ?? event.response?.error ?? undefined + const message = event.message || nested?.message || undefined + const code = event.code || nested?.code || undefined + if (message && code) return `${code}: ${message}` + return message || code || fallback +} + +const providerError = (state: ParserState, event: Event, fallback: string) => { + const code = event.code || event.error?.code || event.response?.error?.code || undefined + const message = providerErrorMessage(event, fallback) + return new LLMError({ + module: state.id, + method: "stream", + reason: classifyProviderFailure({ message, code }), + }) +} + +export const step = (state: ParserState, event: Event) => { + if (event.type === "response.output_text.delta" || event.type === "response.output_text.done") { + if (!event.item_id) return ProviderShared.eventError(state.id, `${event.type} is missing item_id`) + return Effect.succeed( + event.type === "response.output_text.delta" + ? onOutputTextDelta(state, event, event.item_id) + : onOutputTextDone(state, event, event.item_id), + ) + } + if (event.type === "response.reasoning.delta" || event.type === "response.reasoning_summary_text.delta") { + if (!event.item_id) return ProviderShared.eventError(state.id, `${event.type} is missing item_id`) + return Effect.succeed(onReasoningDelta(state, event, event.item_id)) + } + if (event.type === "response.reasoning.done" || event.type === "response.reasoning_summary_text.done") { + if (!event.item_id) return ProviderShared.eventError(state.id, `${event.type} is missing item_id`) + return Effect.succeed(onReasoningDone(state, event)) + } + if (event.type === "response.reasoning_summary_part.added") + return event.item_id + ? Effect.succeed(onReasoningSummaryPartAdded(state, event)) + : ProviderShared.eventError(state.id, `${event.type} is missing item_id`) + if (event.type === "response.reasoning_summary_part.done") + return event.item_id + ? Effect.succeed(onReasoningSummaryPartDone(state, event)) + : ProviderShared.eventError(state.id, `${event.type} is missing item_id`) + if (event.type === "response.output_item.added") { + if (event.item?.type === "message" && !event.item.id) + return ProviderShared.eventError(state.id, `${event.type} message is missing id`) + return Effect.succeed(onOutputItemAdded(state, event)) + } + if (event.type === "response.function_call_arguments.delta") return onFunctionCallArgumentsDelta(state, event) + if (event.type === "response.output_item.done") { + if (event.item?.type === "message" && !event.item.id) + return ProviderShared.eventError(state.id, `${event.type} message is missing id`) + return onOutputItemDone(state, event) + } + if (event.type === "response.completed" || event.type === "response.incomplete") + return Effect.succeed(onResponseFinish(state, event)) + if (event.type === "response.failed") return providerError(state, event, `${state.name} response failed`) + if (event.type === "error") return providerError(state, event, `${state.name} stream error`) + return Effect.succeed([state, NO_EVENTS]) +} + +// ============================================================================= +// Protocol +// ============================================================================= +/** + * The provider-neutral Open Responses protocol. Provider-specific Responses + * implementations compose this baseline with their own tools and event variants. + */ +export const initial = (request: LLMRequest, extension: Extension = BASE): ParserState => ({ + id: extension.id, + name: extension.name, + providerMetadataKey: request.model.route.providerMetadataKey ?? "openresponses", + hasFunctionCall: false, + tools: ToolStream.empty(), + lifecycle: Lifecycle.initial(), + messageItems: new Set(), + messagePhase: (value) => messagePhase(value, extension), + messagePhases: {}, + reasoningItems: {}, + store: OpenResponsesOptions.resolve(request).store, +}) + +const messagePhase = (value: unknown, extension: Extension): MessagePhase | null | undefined => { + if (value === "commentary" || value === "final_answer") return value + return extension.messagePhase?.(value) +} + +export const protocol = Protocol.make({ + id: ADAPTER, + body: { + schema: OpenResponsesBody, + from: fromRequest, + }, + stream: { + event: Protocol.jsonEvent(Event), + initial, + step, + terminal, + }, +}) + +export const httpTransport = HttpTransport.sseJson.with() + +export * as OpenResponses from "./open-responses" diff --git a/packages/ai/src/protocols/openai-chat.ts b/packages/ai/src/protocols/openai-chat.ts new file mode 100644 index 000000000000..a2d8a7b54174 --- /dev/null +++ b/packages/ai/src/protocols/openai-chat.ts @@ -0,0 +1,721 @@ +import { Effect, Schema } from "effect" +import { Tool } from "@opencode-ai/schema/tool" +import { Route } from "../route/client" +import { Auth } from "../route/auth" +import { Endpoint } from "../route/endpoint" +import { HttpTransport } from "../route/transport" +import { Protocol } from "../route/protocol" +import { + LLMError, + LLMEvent, + Usage, + type FinishReason, + type FinishReasonDetails, + type JsonSchema, + type LLMRequest, + type MediaPart, + type ReasoningPart, + type TextPart, + type ToolCallPart, + type ToolDefinition, +} from "../schema" +import { classifyProviderFailure } from "../provider-error" +import { isRecord, JsonObject, optionalArray, optionalNull, ProviderShared } from "./shared" +import { OpenAIOptions } from "./utils/openai-options" +import { Lifecycle } from "./utils/lifecycle" +import { ToolSchemaProjection } from "./utils/tool-schema" +import { ToolStream } from "./utils/tool-stream" + +const ADAPTER = "openai-chat" +const IMAGE_MIMES = new Set(ProviderShared.IMAGE_MIMES) +const RESERVED_REASONING_FIELDS = new Set(["role", "content", "tool_calls"]) +export const DEFAULT_BASE_URL = "https://api.openai.com/v1" +export const PATH = "/chat/completions" + +// ============================================================================= +// Request Body Schema +// ============================================================================= +// The body schema is the provider-native JSON body. `fromRequest` below builds +// this shape from the common `LLMRequest`, then `Route.make` validates and +// JSON-encodes it before transport. +const OpenAIChatFunction = Schema.Struct({ + name: Schema.String, + description: Schema.String, + parameters: JsonObject, +}) + +const OpenAIChatTool = Schema.Struct({ + type: Schema.tag("function"), + function: OpenAIChatFunction, +}) +type OpenAIChatTool = Schema.Schema.Type + +const OpenAIChatAssistantToolCall = Schema.Struct({ + id: Schema.String, + type: Schema.tag("function"), + function: Schema.Struct({ + name: Schema.String, + arguments: Schema.String, + }), +}) +type OpenAIChatAssistantToolCall = Schema.Schema.Type + +const OpenAIChatUserContent = Schema.Union([ + Schema.Struct({ type: Schema.Literal("text"), text: Schema.String }), + Schema.Struct({ + type: Schema.Literal("image_url"), + image_url: Schema.Struct({ url: Schema.String }), + }), +]) + +const OpenAIChatMessage = Schema.Union([ + Schema.Struct({ role: Schema.Literal("system"), content: Schema.String }), + Schema.Struct({ + role: Schema.Literal("user"), + content: Schema.Union([Schema.String, Schema.Array(OpenAIChatUserContent)]), + }), + Schema.StructWithRest( + Schema.Struct({ + role: Schema.Literal("assistant"), + content: Schema.NullOr(Schema.String), + tool_calls: optionalArray(OpenAIChatAssistantToolCall), + reasoning_content: Schema.optional(Schema.String), + reasoning: Schema.optional(Schema.String), + reasoning_text: Schema.optional(Schema.String), + reasoning_details: Schema.optional(Schema.Unknown), + }), + [Schema.Record(Schema.String, Schema.Unknown)], + ), + Schema.Struct({ role: Schema.Literal("tool"), tool_call_id: Schema.String, content: Schema.String }), +]).pipe(Schema.toTaggedUnion("role")) +type OpenAIChatMessage = Schema.Schema.Type + +const OpenAIChatToolChoice = Schema.Union([ + Schema.Literals(["auto", "none", "required"]), + Schema.Struct({ + type: Schema.tag("function"), + function: Schema.Struct({ name: Schema.String }), + }), +]) + +export const bodyFields = { + model: Schema.String, + messages: Schema.Array(OpenAIChatMessage), + tools: optionalArray(OpenAIChatTool), + tool_choice: Schema.optional(OpenAIChatToolChoice), + stream: Schema.Literal(true), + stream_options: Schema.optional(Schema.Struct({ include_usage: Schema.Boolean })), + store: Schema.optional(Schema.Boolean), + reasoning_effort: Schema.optional(OpenAIOptions.OpenAIReasoningEffort), + max_tokens: Schema.optional(Schema.Number), + temperature: Schema.optional(Schema.Number), + top_p: Schema.optional(Schema.Number), + frequency_penalty: Schema.optional(Schema.Number), + presence_penalty: Schema.optional(Schema.Number), + seed: Schema.optional(Schema.Number), + stop: optionalArray(Schema.String), +} +const OpenAIChatBody = Schema.Struct(bodyFields) +export type OpenAIChatBody = Schema.Schema.Type + +// ============================================================================= +// Streaming Event Schema +// ============================================================================= +// The event schema is one decoded SSE `data:` payload. `Framing.sse` splits the +// byte stream into strings, then `Protocol.jsonEvent` decodes each string into +// this provider-native event shape. +const OpenAIChatUsage = Schema.Struct({ + prompt_tokens: Schema.optional(Schema.Number), + completion_tokens: Schema.optional(Schema.Number), + total_tokens: Schema.optional(Schema.Number), + prompt_tokens_details: optionalNull( + Schema.Struct({ + cached_tokens: Schema.optional(Schema.Number), + cache_write_tokens: Schema.optional(Schema.Number), + }), + ), + completion_tokens_details: optionalNull( + Schema.Struct({ + reasoning_tokens: Schema.optional(Schema.Number), + }), + ), +}) + +const OpenAIChatToolCallDeltaFunction = Schema.Struct({ + name: optionalNull(Schema.String), + arguments: optionalNull(Schema.String), +}) + +const OpenAIChatToolCallDelta = Schema.Struct({ + index: Schema.Number, + id: optionalNull(Schema.String), + function: optionalNull(OpenAIChatToolCallDeltaFunction), +}) +type OpenAIChatToolCallDelta = Schema.Schema.Type + +const OpenAIChatDelta = Schema.StructWithRest( + Schema.Struct({ + content: optionalNull(Schema.String), + reasoning_content: optionalNull(Schema.String), + reasoning: optionalNull(Schema.String), + reasoning_text: optionalNull(Schema.String), + reasoning_details: optionalNull(Schema.Unknown), + tool_calls: optionalNull(Schema.Array(OpenAIChatToolCallDelta)), + }), + [Schema.Record(Schema.String, Schema.Unknown)], +) + +const OpenAIChatChoice = Schema.Struct({ + delta: optionalNull(OpenAIChatDelta), + finish_reason: optionalNull(Schema.String), + native_finish_reason: optionalNull(Schema.String), +}) + +const OpenAIChatError = Schema.Struct({ + code: optionalNull(Schema.Union([Schema.String, Schema.Number])), + message: Schema.String, +}) + +export const OpenAIChatEvent = Schema.Struct({ + choices: optionalNull(Schema.Array(OpenAIChatChoice)), + usage: optionalNull(OpenAIChatUsage), + error: optionalNull(OpenAIChatError), +}) +export type OpenAIChatEvent = Schema.Schema.Type +type OpenAIChatRequestMessage = LLMRequest["messages"][number] + +interface PendingToolDelta { + readonly id?: string + readonly name?: string + readonly input: string +} + +export interface ParserState { + readonly tools: ToolStream.State + readonly pendingTools: Partial> + readonly toolCallEvents: ReadonlyArray + readonly usage?: Usage + readonly finishReason?: FinishReasonDetails + readonly lifecycle: Lifecycle.State + readonly reasoningField?: string + readonly reasoningDetails: Array + readonly reasoningDetailsObserved: boolean + readonly reasoningEmitted: boolean +} + +// ============================================================================= +// Request Lowering +// ============================================================================= +// Lowering is the only place that knows how common LLM messages map onto the +// OpenAI Chat wire format. Keep provider quirks here instead of leaking native +// fields into `LLMRequest`. +const lowerTool = (tool: ToolDefinition, inputSchema: JsonSchema): OpenAIChatTool => ({ + type: "function", + function: { + name: tool.name, + description: tool.description, + parameters: ToolSchemaProjection.openAI(inputSchema), + }, +}) + +const lowerToolChoice = (toolChoice: NonNullable) => + ProviderShared.matchToolChoice("OpenAI Chat", toolChoice, { + auto: () => "auto" as const, + none: () => "none" as const, + required: () => "required" as const, + tool: (name) => ({ type: "function" as const, function: { name } }), + }) + +const lowerToolCall = (part: ToolCallPart): OpenAIChatAssistantToolCall => ({ + id: part.id, + type: "function", + function: { + name: part.name, + arguments: ProviderShared.encodeJson(part.input), + }, +}) + +const lowerMedia = Effect.fn("OpenAIChat.lowerMedia")(function* (part: MediaPart) { + const media = yield* ProviderShared.validateMedia("OpenAI Chat", part, IMAGE_MIMES) + return { type: "image_url" as const, image_url: { url: media.dataUrl } } +}) + +const openAICompatibleReasoningContent = (native: unknown) => + isRecord(native) && typeof native.reasoning_content === "string" ? native.reasoning_content : undefined + +const reasoningField = (part: ReasoningPart) => { + const field = part.providerMetadata?.openai?.reasoningField + return typeof field === "string" ? field : undefined +} + +const reasoningDetails = (parts: ReadonlyArray, native: unknown) => { + const observed = parts.flatMap((part) => { + const details = part.providerMetadata?.openai?.reasoningDetails + return Array.isArray(details) ? details : [] + }) + if (parts.some((part) => Array.isArray(part.providerMetadata?.openai?.reasoningDetails))) return observed + if (isRecord(native) && Array.isArray(native.reasoning_details)) return native.reasoning_details +} + +const lowerUserMessage = Effect.fn("OpenAIChat.lowerUserMessage")(function* (message: OpenAIChatRequestMessage) { + const content: Array> = [] + for (const part of message.content) { + if (part.type === "text") { + content.push({ type: "text", text: part.text }) + continue + } + if (part.type === "media") { + content.push(yield* lowerMedia(part)) + continue + } + return yield* ProviderShared.unsupportedContent("OpenAI Chat", "user", ["text", "media"]) + } + if (content.every((part) => part.type === "text")) + return { role: "user" as const, content: content.map((part) => part.text).join("") } + return { role: "user" as const, content } +}) + +const lowerAssistantMessage = Effect.fn("OpenAIChat.lowerAssistantMessage")(function* ( + message: OpenAIChatRequestMessage, + configuredField?: string, +) { + const content: TextPart[] = [] + const reasoning: ReasoningPart[] = [] + const toolCalls: OpenAIChatAssistantToolCall[] = [] + for (const part of message.content) { + if (!ProviderShared.supportsContent(part, ["text", "reasoning", "tool-call"])) + return yield* ProviderShared.unsupportedContent("OpenAI Chat", "assistant", ["text", "reasoning", "tool-call"]) + if (part.type === "text") { + content.push(part) + continue + } + if (part.type === "reasoning") { + reasoning.push(part) + continue + } + if (part.type === "tool-call") { + toolCalls.push(lowerToolCall(part)) + continue + } + } + const text = reasoning.map((part) => part.text).join("") + const details = reasoningDetails(reasoning, message.native?.openaiCompatible) + const observedField = reasoning.map(reasoningField).find((value) => value !== undefined) + const nativeReasoning = openAICompatibleReasoningContent(message.native?.openaiCompatible) + const fullyStructured = reasoning.every((part) => Array.isArray(part.providerMetadata?.openai?.reasoningDetails)) + const field = (() => { + if (configuredField !== undefined) return configuredField + if (reasoning.length === 0) return undefined + if (observedField !== undefined) return observedField + if (nativeReasoning !== undefined) return "reasoning_content" + if (!fullyStructured) return "reasoning_content" + })() + const reasoningText = (() => { + if (configuredField !== undefined) return reasoning.length === 0 ? (nativeReasoning ?? "") : text + if (reasoning.length === 0) return nativeReasoning + return text + })() + const result = { + role: "assistant" as const, + content: content.length === 0 ? null : ProviderShared.joinText(content), + tool_calls: toolCalls.length === 0 ? undefined : toolCalls, + reasoning_details: details, + } + if (field === undefined || reasoningText === undefined) return result + return { ...result, [field]: reasoningText } +}) + +const lowerToolMessages = Effect.fn("OpenAIChat.lowerToolMessages")(function* (message: OpenAIChatRequestMessage) { + const messages: OpenAIChatMessage[] = [] + const images: Array> = [] + for (const part of message.content) { + if (!ProviderShared.supportsContent(part, ["tool-result"])) + return yield* ProviderShared.unsupportedContent("OpenAI Chat", "tool", ["tool-result"]) + if (part.result.type !== "content") { + messages.push({ role: "tool", tool_call_id: part.id, content: ProviderShared.toolResultText(part) }) + continue + } + const content: ReadonlyArray = part.result.value + const text = content.filter((item) => item.type === "text").map((item) => item.text) + messages.push({ role: "tool", tool_call_id: part.id, content: text.join("\n") }) + const files = content.filter((item) => item.type === "file") + images.push( + ...(yield* Effect.forEach(files, (item) => + lowerMedia({ type: "media", mediaType: item.mime, data: item.uri, filename: item.name }), + )), + ) + } + return { messages, images } +}) + +const lowerMessage = Effect.fn("OpenAIChat.lowerMessage")(function* ( + message: OpenAIChatRequestMessage, + reasoningField?: string, +) { + if (message.role === "user") return [yield* lowerUserMessage(message)] + if (message.role === "assistant") return [yield* lowerAssistantMessage(message, reasoningField)] + return (yield* lowerToolMessages(message)).messages +}) + +const lowerMessages = Effect.fn("OpenAIChat.lowerMessages")(function* (request: LLMRequest) { + const system: OpenAIChatMessage[] = + request.system.length === 0 ? [] : [{ role: "system", content: ProviderShared.joinText(request.system) }] + const messages = [...system] + const pendingImages: Array> = [] + const flushImages = () => { + if (pendingImages.length === 0) return + messages.push({ role: "user", content: pendingImages.splice(0) }) + } + for (const message of request.messages) { + if (message.role === "system") { + const part = yield* ProviderShared.wrappedSystemUpdate("OpenAI Chat", message) + if (pendingImages.length > 0) { + messages.push({ role: "user", content: [...pendingImages.splice(0), { type: "text", text: part.text }] }) + continue + } + const previous = messages.at(-1) + if (previous?.role === "user" && typeof previous.content === "string") + messages[messages.length - 1] = { role: "user", content: `${previous.content}\n${part.text}` } + else if (previous?.role === "user" && Array.isArray(previous.content)) + messages[messages.length - 1] = { + role: "user", + content: [...previous.content, { type: "text", text: part.text }], + } + else messages.push({ role: "user", content: part.text }) + continue + } + if (message.role === "tool") { + const lowered = yield* lowerToolMessages(message) + messages.push(...lowered.messages) + pendingImages.push(...lowered.images) + continue + } + flushImages() + messages.push(...(yield* lowerMessage(message, request.model.compatibility?.reasoningField))) + } + flushImages() + return messages +}) + +const lowerOptions = (request: LLMRequest) => { + const options = OpenAIOptions.resolve(request) + return { + ...(options.store !== undefined ? { store: options.store } : {}), + ...(options.reasoningEffort ? { reasoning_effort: options.reasoningEffort } : {}), + } +} + +const fromRequest = Effect.fn("OpenAIChat.fromRequest")(function* (request: LLMRequest) { + // `fromRequest` returns the provider body only. Endpoint, auth, framing, + // validation, and HTTP execution are composed by `Route.make`. + const reasoningField = request.model.compatibility?.reasoningField + if (reasoningField && RESERVED_REASONING_FIELDS.has(reasoningField)) + return yield* ProviderShared.invalidRequest( + `OpenAI Chat reasoning field conflicts with reserved field ${reasoningField}`, + ) + const generation = request.generation + const toolSchemaCompatibility = request.model.compatibility?.toolSchema + return { + model: request.model.id, + messages: yield* lowerMessages(request), + tools: + request.tools.length === 0 + ? undefined + : request.tools.map((tool) => + lowerTool(tool, ToolSchemaProjection.modelCompatibility(tool.inputSchema, toolSchemaCompatibility)), + ), + tool_choice: request.toolChoice ? yield* lowerToolChoice(request.toolChoice) : undefined, + stream: true as const, + stream_options: { include_usage: true }, + max_tokens: generation?.maxTokens, + temperature: generation?.temperature, + top_p: generation?.topP, + frequency_penalty: generation?.frequencyPenalty, + presence_penalty: generation?.presencePenalty, + seed: generation?.seed, + stop: generation?.stop, + ...lowerOptions(request), + } +}) + +// ============================================================================= +// Stream Parsing +// ============================================================================= +// Streaming parsers are small state machines: every event returns a new state +// plus the common `LLMEvent`s produced by that event. Tool calls are accumulated +// because OpenAI streams JSON arguments across multiple deltas. +const mapFinishReason = (reason: string | null | undefined): FinishReason => { + if (reason === "stop") return "stop" + if (reason === "length") return "length" + if (reason === "content_filter") return "content-filter" + if (reason === "function_call" || reason === "tool_calls") return "tool-calls" + if (reason === "error") return "error" + return "unknown" +} + +// OpenAI Chat reports `prompt_tokens` (inclusive total) with a +// cached-read and cache-write subsets, and `completion_tokens` (inclusive +// total) with a `reasoning_tokens` subset. We pass the inclusive totals +// through and derive the non-cached breakdown so the `LLM.Usage` contract is +// satisfied on both sides. +const mapUsage = (usage: OpenAIChatEvent["usage"]): Usage | undefined => { + if (!usage) return undefined + const cached = usage.prompt_tokens_details?.cached_tokens + const cacheWrite = usage.prompt_tokens_details?.cache_write_tokens + const reasoning = usage.completion_tokens_details?.reasoning_tokens + const nonCached = ProviderShared.subtractTokens(usage.prompt_tokens, ProviderShared.sumTokens(cached, cacheWrite)) + return new Usage({ + inputTokens: usage.prompt_tokens, + outputTokens: usage.completion_tokens, + nonCachedInputTokens: nonCached, + cacheReadInputTokens: cached, + cacheWriteInputTokens: cacheWrite, + reasoningTokens: reasoning, + totalTokens: ProviderShared.totalTokens(usage.prompt_tokens, usage.completion_tokens, usage.total_tokens), + providerMetadata: { openai: usage }, + }) +} + +const reasoningDelta = ( + delta: Schema.Schema.Type | null | undefined, + configuredField?: string, +) => { + if (!delta) return undefined + const fields = new Set([configuredField, "reasoning_content", "reasoning", "reasoning_text"]) + for (const field of fields) { + if (field === undefined) continue + const text = delta[field] + if (typeof text === "string" && text.length > 0) return { field, text } + } + return undefined +} + +const detailText = (details: ReadonlyArray) => { + const text = details.flatMap((detail) => { + if (!isRecord(detail)) return [] + if (detail.type === "reasoning.text" && typeof detail.text === "string" && detail.text) return [detail.text] + if (detail.type === "reasoning.summary" && typeof detail.summary === "string" && detail.summary) + return [detail.summary] + return [] + }) + if (text.length > 0) return text.join("") +} + +const appendReasoningDetails = (result: Array, details: ReadonlyArray) => { + for (const detail of details) { + const previous = result.at(-1) + if ( + !isRecord(previous) || + previous.type !== "reasoning.text" || + !isRecord(detail) || + detail.type !== "reasoning.text" || + conflictingReasoningTextDetails(previous, detail) + ) { + result.push(detail) + continue + } + result[result.length - 1] = { + ...previous, + ...Object.fromEntries(Object.entries(detail).filter((entry) => entry[1] !== undefined)), + text: `${typeof previous.text === "string" ? previous.text : ""}${typeof detail.text === "string" ? detail.text : ""}`, + signature: mergeDetailValue(previous.signature, detail.signature), + format: mergeDetailValue(previous.format, detail.format), + } + } +} + +const mergeDetailValue = (previous: unknown, current: unknown) => + previous || current || (previous !== undefined ? previous : current) + +const conflictingReasoningTextDetails = (previous: Record, current: Record) => + conflictingDetailValue(previous.id, current.id) || + conflictingDetailValue(previous.index, current.index) || + conflictingDetailValue(previous.format, current.format) || + (Boolean(previous.signature) && Boolean(current.signature) && previous.signature !== current.signature) + +const conflictingDetailValue = (previous: unknown, current: unknown) => + previous !== undefined && previous !== null && current !== undefined && current !== null && previous !== current + +const reasoningMetadata = (field: ParserState["reasoningField"], details?: ReadonlyArray) => ({ + openai: { + ...(field ? { reasoningField: field } : {}), + ...(details ? { reasoningDetails: details } : {}), + }, +}) + +const step = (state: ParserState, event: OpenAIChatEvent) => + Effect.gen(function* () { + if (event.error) + return yield* new LLMError({ + module: ADAPTER, + method: "stream", + reason: classifyProviderFailure({ + message: event.error.message, + code: event.error.code === undefined || event.error.code === null ? undefined : String(event.error.code), + status: typeof event.error.code === "number" ? event.error.code : undefined, + }), + }) + const events: LLMEvent[] = [] + const usage = mapUsage(event.usage) ?? state.usage + const choice = event.choices?.[0] + const finishReason = choice?.finish_reason + ? { normalized: mapFinishReason(choice.finish_reason), raw: choice.native_finish_reason ?? choice.finish_reason } + : state.finishReason + const delta = choice?.delta + const toolDeltas = delta?.tool_calls ?? [] + let tools = state.tools + let pendingTools = state.pendingTools + + let lifecycle = state.lifecycle + + const reasoning = reasoningDelta(delta, state.reasoningField) + const reasoningField = state.reasoningField ?? (!state.lifecycle.text.has("text-0") ? reasoning?.field : undefined) + const detailDelta = Array.isArray(delta?.reasoning_details) ? delta.reasoning_details : undefined + if (detailDelta !== undefined) appendReasoningDetails(state.reasoningDetails, detailDelta) + const reasoningDetailsObserved = state.reasoningDetailsObserved || detailDelta !== undefined + const deltaMetadata = reasoningMetadata(reasoningField) + const text = detailDelta?.length ? (detailText(detailDelta) ?? reasoning?.text) : reasoning?.text + if (!state.lifecycle.text.has("text-0") && text !== undefined) + lifecycle = Lifecycle.reasoningDelta(lifecycle, events, "reasoning-0", text, deltaMetadata) + else if ( + reasoningDetailsObserved && + !lifecycle.reasoning.has("reasoning-0") && + (Boolean(delta?.content) || toolDeltas.length > 0) + ) + lifecycle = Lifecycle.reasoningStart(lifecycle, events, "reasoning-0", deltaMetadata) + const reasoningEmitted = state.reasoningEmitted || lifecycle.reasoning.has("reasoning-0") + + if (delta?.content) { + lifecycle = Lifecycle.reasoningEnd( + lifecycle, + events, + "reasoning-0", + reasoningMetadata(reasoningField, reasoningDetailsObserved ? state.reasoningDetails : undefined), + ) + lifecycle = Lifecycle.textDelta(lifecycle, events, "text-0", delta.content) + } + + for (const tool of toolDeltas) { + const current = tools[tool.index] + const pending = pendingTools[tool.index] + const id = current?.id ?? pending?.id ?? (tool.id || undefined) + const name = current?.name ?? pending?.name ?? (tool.function?.name || undefined) + const text = `${pending?.input ?? ""}${tool.function?.arguments ?? ""}` + if (!current && (!id || !name)) { + pendingTools = { ...pendingTools, [tool.index]: { id: id || undefined, name: name || undefined, input: text } } + continue + } + if (pending) { + pendingTools = { ...pendingTools } + delete pendingTools[tool.index] + } + const result = ToolStream.appendOrStart( + ADAPTER, + tools, + tool.index, + { id: id || undefined, name: name || undefined, text }, + "OpenAI Chat tool call delta is missing id or name", + ) + if (ToolStream.isError(result)) return yield* result + tools = result.tools + if (result.events.length) lifecycle = Lifecycle.stepStart(lifecycle, events) + events.push(...result.events) + } + + if (finishReason !== undefined && state.finishReason === undefined && Object.keys(pendingTools).length > 0) + return yield* ProviderShared.eventError(ADAPTER, "OpenAI Chat tool call delta is missing id or name") + + // Finalize accumulated tool inputs eagerly when finish_reason arrives so + // valid calls and malformed local calls settle independently. + const finished = + finishReason !== undefined && state.finishReason === undefined && Object.keys(tools).length > 0 + ? yield* ToolStream.finishAll(ADAPTER, tools) + : undefined + + return [ + { + tools: finished?.tools ?? tools, + pendingTools, + toolCallEvents: finished?.events ?? state.toolCallEvents, + usage, + finishReason, + lifecycle, + reasoningField, + reasoningDetails: state.reasoningDetails, + reasoningDetailsObserved, + reasoningEmitted, + }, + events, + ] as const + }) + +const finishEvents = (state: ParserState): ReadonlyArray => { + const events: LLMEvent[] = [] + const hasToolCalls = state.toolCallEvents.length > 0 + const reason = state.finishReason + ? { + ...state.finishReason, + normalized: + state.finishReason.normalized === "stop" && hasToolCalls ? "tool-calls" : state.finishReason.normalized, + } + : undefined + const metadata = reasoningMetadata( + state.reasoningField, + state.reasoningDetailsObserved ? state.reasoningDetails : undefined, + ) + const started = + state.reasoningDetailsObserved && !state.reasoningEmitted + ? Lifecycle.reasoningStart(state.lifecycle, events, "reasoning-0", reasoningMetadata(state.reasoningField)) + : state.lifecycle + const ended = Lifecycle.reasoningEnd(started, events, "reasoning-0", metadata) + const lifecycle = state.toolCallEvents.length ? Lifecycle.stepStart(ended, events) : ended + events.push(...state.toolCallEvents) + if (reason) Lifecycle.finish(lifecycle, events, { reason, usage: state.usage }) + return events +} + +// ============================================================================= +// Protocol And OpenAI Route +// ============================================================================= +/** + * The OpenAI Chat protocol — request body construction, body schema, and the + * streaming-event state machine. Reused by every route that speaks OpenAI Chat + * over HTTP+SSE: native OpenAI, DeepSeek, TogetherAI, Cerebras, Baseten, + * Fireworks, DeepInfra, and (once added) Azure OpenAI Chat. + */ +export const protocol = Protocol.make({ + id: ADAPTER, + body: { + schema: OpenAIChatBody, + from: fromRequest, + }, + stream: { + event: Protocol.jsonEvent(OpenAIChatEvent), + initial: (request) => ({ + tools: ToolStream.empty(), + pendingTools: {}, + toolCallEvents: [], + lifecycle: Lifecycle.initial(), + reasoningField: request.model.compatibility?.reasoningField, + reasoningDetails: [], + reasoningDetailsObserved: false, + reasoningEmitted: false, + }), + step, + onHalt: finishEvents, + }, +}) + +export const httpTransport = HttpTransport.sseJson.with() + +export const route = Route.make({ + id: ADAPTER, + provider: "openai", + providerMetadataKey: "openai", + protocol, + endpoint: Endpoint.path(PATH, { baseURL: DEFAULT_BASE_URL }), + auth: Auth.none, + transport: httpTransport, +}) + +export * as OpenAIChat from "./openai-chat" diff --git a/packages/llm/src/protocols/openai-compatible-chat.ts b/packages/ai/src/protocols/openai-compatible-chat.ts similarity index 96% rename from packages/llm/src/protocols/openai-compatible-chat.ts rename to packages/ai/src/protocols/openai-compatible-chat.ts index ce3f0a83d75a..9ae9a53b437b 100644 --- a/packages/llm/src/protocols/openai-compatible-chat.ts +++ b/packages/ai/src/protocols/openai-compatible-chat.ts @@ -16,6 +16,7 @@ export type OpenAICompatibleChatModelInput = RouteRoutedModelInput */ export const route = Route.make({ id: ADAPTER, + providerMetadataKey: "openai", protocol: OpenAIChat.protocol, endpoint: Endpoint.path("/chat/completions"), framing: Framing.sse, diff --git a/packages/ai/src/protocols/openai-compatible-responses.ts b/packages/ai/src/protocols/openai-compatible-responses.ts new file mode 100644 index 000000000000..0278c7941e40 --- /dev/null +++ b/packages/ai/src/protocols/openai-compatible-responses.ts @@ -0,0 +1,22 @@ +import { Route, type RouteRoutedModelInput } from "../route/client" +import { Endpoint } from "../route/endpoint" +import { OpenResponses } from "./open-responses" + +const ADAPTER = "openai-compatible-responses" + +export type OpenAICompatibleResponsesModelInput = RouteRoutedModelInput + +/** + * Deployment adapter for providers that expose an Open Responses-compatible + * `/responses` endpoint. Provider helpers configure identity, endpoint, and + * auth while the semantic protocol remains provider-neutral. + */ +export const route = Route.make({ + id: ADAPTER, + providerMetadataKey: "openresponses", + protocol: OpenResponses.protocol, + endpoint: Endpoint.path(OpenResponses.PATH), + transport: OpenResponses.httpTransport, +}) + +export * as OpenAICompatibleResponses from "./openai-compatible-responses" diff --git a/packages/ai/src/protocols/openai-images.ts b/packages/ai/src/protocols/openai-images.ts new file mode 100644 index 000000000000..12b0f162c38d --- /dev/null +++ b/packages/ai/src/protocols/openai-images.ts @@ -0,0 +1,270 @@ +import { Effect, Encoding, Schema } from "effect" +import { Headers, HttpClientRequest, HttpClientResponse } from "effect/unstable/http" +import { + ImageModel, + GeneratedImage, + ImageResponse, + type ImageInput, + type ImageRequestFor, + type ImageRoute, +} from "../image" +import { Auth, type Definition as AuthDefinition } from "../route/auth" +import { + InvalidProviderOutputReason, + LLMError, + Usage, + mergeHttpOptions, + mergeJsonRecords, + type HttpOptions, +} from "../schema" +import { ProviderShared } from "./shared" +import { ImageInputs } from "./utils/image-input" +import { OpenAIImage } from "./utils/openai-image" + +const ADAPTER = "openai-images" +export const DEFAULT_BASE_URL = "https://api.openai.com/v1" +export const PATH = "/images/generations" +export const EDIT_PATH = "/images/edits" + +export type OpenAIImageString = Known | (string & {}) + +export type OpenAIImageOptions = { + readonly mask?: ImageInput + readonly n?: number + readonly size?: OpenAIImageString< + "auto" | "256x256" | "512x512" | "1024x1024" | "1536x1024" | "1024x1536" | "1792x1024" | "1024x1792" + > + readonly quality?: OpenAIImageString<"auto" | "low" | "medium" | "high" | "standard" | "hd"> + readonly background?: OpenAIImageString<"auto" | "opaque" | "transparent"> + readonly moderation?: OpenAIImageString<"auto" | "low"> + readonly outputFormat?: OpenAIImageString<"png" | "jpeg" | "webp"> + readonly outputCompression?: number +} & Record + +export type OpenAIImageBody = Record & { + readonly model: string + readonly prompt: string +} + +const OpenAIImageResponse = Schema.Struct({ + data: Schema.Array( + Schema.Struct({ + b64_json: Schema.optional(Schema.String), + url: Schema.optional(Schema.String), + revised_prompt: Schema.optional(Schema.String), + }), + ), + output_format: Schema.optional(Schema.String), + usage: Schema.optional( + Schema.Struct({ + input_tokens: Schema.optional(Schema.Number), + output_tokens: Schema.optional(Schema.Number), + total_tokens: Schema.optional(Schema.Number), + input_tokens_details: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), + output_tokens_details: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), + }), + ), +}) + +export interface ModelInput { + readonly id: string + readonly auth: AuthDefinition + readonly baseURL?: string + readonly headers?: Record + readonly http?: HttpOptions +} + +const nativeOptions = (options: OpenAIImageOptions | undefined) => { + if (!options) return undefined + const { mask: _, outputFormat, outputCompression, ...native } = options + return { + output_format: outputFormat, + output_compression: outputCompression, + ...native, + } +} + +const invalidOutput = (message: string) => + new LLMError({ + module: ADAPTER, + method: "generate", + reason: new InvalidProviderOutputReason({ message, route: ADAPTER }), + }) + +const applyQuery = (url: string, query: Record | undefined) => { + if (!query) return url + const next = new URL(url) + Object.entries(query).forEach(([key, value]) => next.searchParams.set(key, value)) + return next.toString() +} + +export const model = (input: ModelInput) => { + const route: ImageRoute = { + id: ADAPTER, + generate: Effect.fn("OpenAIImages.generate")(function* (request: ImageRequestFor, execute) { + const mask = request.options?.mask + if (mask !== undefined && (request.images?.length ?? 0) === 0) + return yield* ImageInputs.invalid(ADAPTER, "An OpenAI image mask requires at least one input image") + const http = mergeHttpOptions(request.model.http, request.http) + const sourceImages = request.images ?? [] + const multipartImages = yield* Effect.forEach(sourceImages, (image) => { + if (image.type === "bytes") return Effect.succeed({ data: image.data, mediaType: image.mediaType }) + if (image.type === "url") return ImageInputs.decodeDataUrl(image.url, ADAPTER) + return Effect.succeed(undefined) + }) + const multipartMask = + mask === undefined + ? undefined + : mask.type === "bytes" + ? { data: mask.data, mediaType: mask.mediaType } + : mask.type === "url" + ? yield* ImageInputs.decodeDataUrl(mask.url, ADAPTER) + : undefined + const useMultipart = + sourceImages.length > 0 && + multipartImages.every((image) => image !== undefined) && + (mask === undefined || multipartMask !== undefined) + const path = sourceImages.length === 0 ? PATH : EDIT_PATH + const url = applyQuery(`${(input.baseURL ?? DEFAULT_BASE_URL).replace(/\/$/, "")}${path}`, http?.query) + + if (useMultipart) { + const form = new FormData() + form.append("model", request.model.id) + form.append("prompt", request.prompt) + Object.entries(mergeJsonRecords(nativeOptions(request.options), http?.body) ?? {}).forEach(([key, value]) => { + if (["model", "prompt", "image", "image[]", "images", "mask"].includes(key)) return + form.append(key, typeof value === "string" ? value : ProviderShared.encodeJson(value)) + }) + multipartImages.forEach((image, index) => { + if (image === undefined) return + form.append("image[]", imageBlob(image.data, image.mediaType), `image-${index}`) + }) + if (multipartMask !== undefined) + form.append("mask", imageBlob(multipartMask.data, multipartMask.mediaType), "mask") + const headers = yield* Auth.toEffect(input.auth)({ + request, + method: "POST", + url, + body: "[multipart/form-data]", + headers: Headers.remove(Headers.fromInput({ ...input.headers, ...http?.headers }), "content-type"), + }) + const response = yield* execute( + HttpClientRequest.post(url).pipe(HttpClientRequest.setHeaders(headers), HttpClientRequest.bodyFormData(form)), + ) + return yield* parseResponse(response, request.options, http?.body) + } + + const references = sourceImages.map((image) => { + if (image.type === "bytes") return { image_url: ImageInputs.dataUrl(image) } + if (image.type === "url") return { image_url: image.url } + if (image.type === "file-id") return { file_id: image.id } + return undefined + }) + if (references.some((image) => image === undefined)) + return yield* ImageInputs.invalid(ADAPTER, "OpenAI Images accepts image URLs, data URLs, bytes, and file IDs") + const maskReference = + mask === undefined + ? undefined + : mask.type === "bytes" + ? { image_url: ImageInputs.dataUrl(mask) } + : mask.type === "url" + ? { image_url: mask.url } + : mask.type === "file-id" + ? { file_id: mask.id } + : undefined + if (mask !== undefined && maskReference === undefined) + return yield* ImageInputs.invalid(ADAPTER, "OpenAI Images accepts masks as URLs, data URLs, bytes, or file IDs") + const requestBody = mergeJsonRecords( + { + model: request.model.id, + prompt: request.prompt, + images: references.length === 0 ? undefined : references, + mask: maskReference, + }, + nativeOptions(request.options), + http?.body, + ) as OpenAIImageBody + const text = ProviderShared.encodeJson(requestBody) + const headers = yield* Auth.toEffect(input.auth)({ + request, + method: "POST", + url, + body: text, + headers: Headers.fromInput({ ...input.headers, ...http?.headers }), + }) + const response = yield* execute( + HttpClientRequest.post(url).pipe( + HttpClientRequest.setHeaders(headers), + HttpClientRequest.bodyText(text, "application/json"), + ), + ) + return yield* parseResponse(response, request.options, http?.body) + }), + } + return ImageModel.make({ id: input.id, provider: "openai", route, http: input.http }) +} + +const parseResponse = Effect.fn("OpenAIImages.parseResponse")(function* ( + response: HttpClientResponse.HttpClientResponse, + options: OpenAIImageOptions | undefined, + overlay: Record | undefined, +) { + const payload = yield* response.json.pipe( + Effect.mapError(() => invalidOutput("Failed to read the OpenAI Images response")), + ) + const decoded = yield* Schema.decodeUnknownEffect(OpenAIImageResponse)(payload).pipe( + Effect.mapError(() => invalidOutput("OpenAI Images returned an invalid response")), + ) + const requestBody = mergeJsonRecords(nativeOptions(options), overlay) + const format = + decoded.output_format ?? (typeof requestBody?.output_format === "string" ? requestBody.output_format : "png") + const images = yield* Effect.forEach(decoded.data, (item, index) => { + if (item.b64_json) + return Effect.fromResult(Encoding.decodeBase64(item.b64_json)).pipe( + Effect.mapError(() => invalidOutput(`OpenAI Images result ${index} contains invalid base64 data`)), + Effect.map( + (data) => + new GeneratedImage({ + mediaType: `image/${format}`, + data, + providerMetadata: + item.revised_prompt === undefined ? undefined : { openai: { revisedPrompt: item.revised_prompt } }, + }), + ), + ) + if (item.url) + return Effect.succeed( + new GeneratedImage({ + mediaType: `image/${format}`, + data: item.url, + providerMetadata: + item.revised_prompt === undefined ? undefined : { openai: { revisedPrompt: item.revised_prompt } }, + }), + ) + return Effect.fail(invalidOutput(`OpenAI Images result ${index} has neither image data nor a URL`)) + }) + if (images.length === 0) return yield* invalidOutput("OpenAI Images returned no images") + return new ImageResponse({ + images, + usage: + decoded.usage === undefined + ? undefined + : new Usage({ + inputTokens: decoded.usage.input_tokens, + outputTokens: decoded.usage.output_tokens, + totalTokens: decoded.usage.total_tokens, + providerMetadata: { openai: decoded.usage }, + }), + providerMetadata: { openai: { outputFormat: format } }, + }) +}) + +const imageBlob = (data: Uint8Array, mediaType: string) => { + const buffer = new ArrayBuffer(data.byteLength) + new Uint8Array(buffer).set(data) + return new Blob([buffer], { type: mediaType }) +} + +export const OpenAIImages = { + model, +} as const diff --git a/packages/ai/src/protocols/openai-responses.ts b/packages/ai/src/protocols/openai-responses.ts new file mode 100644 index 000000000000..43237e89f60a --- /dev/null +++ b/packages/ai/src/protocols/openai-responses.ts @@ -0,0 +1,293 @@ +import { Effect, Encoding, Schema } from "effect" +import { Route } from "../route/client" +import { Auth } from "../route/auth" +import { Endpoint } from "../route/endpoint" +import { Protocol } from "../route/protocol" +import { HttpTransport, WebSocketTransport } from "../route/transport" +import { LLMEvent, LLMRequest, type JsonSchema, type ToolDefinition } from "../schema" +import { OpenResponses } from "./open-responses" +import { optionalArray, ProviderShared } from "./shared" +import { Lifecycle } from "./utils/lifecycle" +import { OpenAIImage } from "./utils/openai-image" +import { ToolSchemaProjection } from "./utils/tool-schema" + +const ADAPTER = "openai-responses" +const NAME = "OpenAI Responses" +export const DEFAULT_BASE_URL = "https://api.openai.com/v1" +export const PATH = OpenResponses.PATH + +const OpenAIResponsesImageGenerationTool = Schema.Struct({ + type: Schema.tag("image_generation"), + action: Schema.optional(Schema.Literals(["auto", "generate", "edit"])), + background: Schema.optional(Schema.Literals(["auto", "opaque", "transparent"])), + input_fidelity: Schema.optional(Schema.Literals(["low", "high"])), + output_compression: Schema.optional(Schema.Int.check(Schema.isBetween({ minimum: 0, maximum: 100 }))), + output_format: Schema.optional(Schema.Literals(["png", "jpeg", "webp"])), + partial_images: Schema.optional(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))), + quality: Schema.optional(Schema.Literals(["auto", "low", "medium", "high"])), + size: Schema.optional(OpenAIImage.Size), +}) + +const OpenAIResponsesTools = Schema.Union([OpenResponses.Tool, OpenAIResponsesImageGenerationTool]) + +const OpenAIResponsesToolChoice = Schema.Union([ + OpenResponses.ToolChoice, + Schema.Struct({ type: Schema.tag("image_generation") }), +]) + +const OpenAIResponsesInputItem = Schema.Union([ + Schema.Struct({ + role: Schema.tag("assistant"), + content: Schema.Array(Schema.Struct({ type: Schema.tag("output_text"), text: Schema.String })), + phase: Schema.optionalKey(Schema.NullOr(OpenResponses.MessagePhase)), + }), + OpenResponses.InputItem, +]) + +const OpenAIResponsesCoreFields = { + ...OpenResponses.coreFields, + input: Schema.Array(OpenAIResponsesInputItem), + tools: optionalArray(OpenAIResponsesTools), + tool_choice: Schema.optional(OpenAIResponsesToolChoice), +} + +const OpenAIResponsesBody = Schema.Struct({ + ...OpenAIResponsesCoreFields, + stream: Schema.Literal(true), +}) +export type OpenAIResponsesBody = Schema.Schema.Type + +const OpenAIResponsesWebSocketMessage = Schema.StructWithRest( + Schema.Struct({ + type: Schema.tag("response.create"), + ...OpenAIResponsesCoreFields, + }), + [Schema.Record(Schema.String, Schema.Unknown)], +) +type OpenAIResponsesWebSocketMessage = Schema.Schema.Type +const encodeWebSocketMessage = Schema.encodeSync(Schema.fromJsonString(OpenAIResponsesWebSocketMessage)) + +const extension = { + id: ADAPTER, + name: NAME, + messagePhase: (value: unknown) => (value === null ? null : undefined), + lowerMedia: ({ part, media, request }) => { + if (request.model.provider !== "xai" || media.mime !== "application/pdf") return undefined + return { + type: "input_file", + filename: part.filename ?? "document.pdf", + file_data: media.base64, + mime_type: media.mime, + } + }, +} satisfies OpenResponses.Extension + +const nativeImageToolInput = (tool: ToolDefinition) => { + const native = tool.native?.openai + return ProviderShared.isRecord(native) && native.type === "image_generation" ? native : undefined +} + +const nativeImageTool = (tool: ToolDefinition) => { + const native = nativeImageToolInput(tool) + return Schema.is(OpenAIResponsesImageGenerationTool)(native) ? native : undefined +} + +const lowerTool = Effect.fn("OpenAIResponses.lowerTool")(function* (tool: ToolDefinition, inputSchema: JsonSchema) { + const native = nativeImageToolInput(tool) + if (native !== undefined) { + if (Schema.is(OpenAIResponsesImageGenerationTool)(native)) return native + return yield* ProviderShared.invalidRequest("OpenAI Responses image generation tool options are invalid") + } + return yield* OpenResponses.lowerTool(NAME, tool, inputSchema) +}) + +const lowerToolChoice = (toolChoice: NonNullable, tools: ReadonlyArray) => + ProviderShared.matchToolChoice(NAME, toolChoice, { + auto: () => "auto" as const, + none: () => "none" as const, + required: () => "required" as const, + tool: (name) => + tools.some((tool) => tool.name === name && nativeImageTool(tool) !== undefined) + ? ({ type: "image_generation" } as const) + : { type: "function" as const, name }, + }) + +const fromRequest = Effect.fn("OpenAIResponses.fromRequest")(function* (request: LLMRequest) { + const body = yield* OpenResponses.fromRequestWithExtension( + LLMRequest.update(request, { tools: [], toolChoice: undefined }), + extension, + ) + const toolSchemaCompatibility = request.model.compatibility?.toolSchema + return { + ...body, + tools: + request.tools.length === 0 + ? undefined + : yield* Effect.forEach(request.tools, (tool) => + lowerTool(tool, ToolSchemaProjection.modelCompatibility(tool.inputSchema, toolSchemaCompatibility)), + ), + tool_choice: request.toolChoice ? yield* lowerToolChoice(request.toolChoice, request.tools) : undefined, + } satisfies OpenAIResponsesBody +}) + +type HostedToolData = OpenResponses.StreamItem & { + readonly id: string + readonly status?: string + readonly action?: unknown + readonly queries?: unknown + readonly results?: unknown + readonly code?: string + readonly container_id?: string + readonly outputs?: unknown + readonly server_label?: string + readonly output?: unknown + readonly result?: string + readonly output_format?: "png" | "jpeg" | "webp" + readonly error?: unknown +} + +const HOSTED_TOOLS = { + web_search_call: { name: "web_search", input: (item) => item.action ?? {} }, + web_search_preview_call: { name: "web_search_preview", input: (item) => item.action ?? {} }, + file_search_call: { name: "file_search", input: (item) => ({ queries: item.queries ?? [] }) }, + code_interpreter_call: { + name: "code_interpreter", + input: (item) => ({ code: item.code, container_id: item.container_id }), + }, + computer_use_call: { name: "computer_use", input: (item) => item.action ?? {} }, + image_generation_call: { name: "image_generation", input: () => ({}) }, + mcp_call: { + name: "mcp", + input: (item) => ({ server_label: item.server_label, name: item.name, arguments: item.arguments }), + }, + local_shell_call: { name: "local_shell", input: (item) => item.action ?? {} }, +} as const satisfies Record unknown }> + +type HostedToolType = keyof typeof HOSTED_TOOLS +type HostedToolItem = HostedToolData & { readonly type: HostedToolType } + +const isHostedToolItem = (item: OpenResponses.StreamItem): item is HostedToolItem => + item.type in HOSTED_TOOLS && typeof item.id === "string" && item.id.length > 0 + +const hostedToolResult = Effect.fn("OpenAIResponses.hostedToolResult")(function* (item: HostedToolItem) { + const isError = item.error !== undefined && item.error !== null + if (item.type === "image_generation_call" && item.result) { + yield* Effect.fromResult(Encoding.decodeBase64(item.result)).pipe( + Effect.mapError(() => ProviderShared.eventError(ADAPTER, "OpenAI Responses returned invalid image base64")), + ) + const format = item.output_format ?? "png" + return { + type: "content" as const, + value: [ + { + type: "file" as const, + uri: `data:image/${format};base64,${item.result}`, + mime: `image/${format}`, + }, + ], + } + } + return isError ? { type: "error" as const, value: item.error } : { type: "json" as const, value: item } +}) + +const onHostedToolDone = Effect.fn("OpenAIResponses.onHostedToolDone")(function* ( + state: OpenResponses.ParserState, + item: HostedToolItem, +) { + const tool = HOSTED_TOOLS[item.type] + const providerMetadata = OpenResponses.providerMetadata(state, { itemId: item.id }) + const events: LLMEvent[] = [] + const lifecycle = Lifecycle.stepStart(state.lifecycle, events) + events.push( + LLMEvent.toolCall({ + id: item.id, + name: tool.name, + input: tool.input(item), + providerExecuted: true, + providerMetadata, + }), + LLMEvent.toolResult({ + id: item.id, + name: tool.name, + result: yield* hostedToolResult(item), + providerExecuted: true, + providerMetadata, + }), + ) + return [{ ...state, lifecycle }, events] satisfies OpenResponses.StepResult +}) + +const step = (state: OpenResponses.ParserState, event: OpenResponses.Event) => { + if (event.type === "response.reasoning_text.delta" || event.type === "response.reasoning_summary.delta") + return event.item_id + ? Effect.succeed(OpenResponses.onReasoningDelta(state, event, event.item_id)) + : ProviderShared.eventError(ADAPTER, `${event.type} is missing item_id`) + if (event.type === "response.reasoning_text.done" || event.type === "response.reasoning_summary.done") + return event.item_id + ? Effect.succeed(OpenResponses.onReasoningDone(state, event)) + : ProviderShared.eventError(ADAPTER, `${event.type} is missing item_id`) + if (event.type === "response.output_item.done" && event.item && isHostedToolItem(event.item)) + return onHostedToolDone(state, event.item) + return OpenResponses.step(state, event) +} + +export const protocol = Protocol.make({ + id: ADAPTER, + body: { + schema: OpenAIResponsesBody, + from: fromRequest, + }, + stream: { + event: OpenResponses.protocol.stream.event, + initial: (request) => OpenResponses.initial(request, extension), + step, + terminal: OpenResponses.terminal, + }, +}) + +const endpoint = Endpoint.path(PATH, { baseURL: DEFAULT_BASE_URL }) +const auth = Auth.none + +export const httpTransport = HttpTransport.sseJson.with() + +export const route = Route.make({ + id: ADAPTER, + provider: "openai", + providerMetadataKey: "openai", + protocol, + endpoint, + auth, + transport: httpTransport, + defaults: { providerOptions: { openai: { store: false } } }, +}) + +const decodeWebSocketMessage = ProviderShared.validateWith(Schema.decodeUnknownEffect(OpenAIResponsesWebSocketMessage)) + +const webSocketMessage = (body: OpenAIResponsesBody | Record) => + Effect.gen(function* () { + if (!ProviderShared.isRecord(body)) + return yield* ProviderShared.invalidRequest("OpenAI Responses WebSocket body must be a JSON object") + const { stream: _stream, ...message } = body + return yield* decodeWebSocketMessage({ ...message, type: "response.create" }) + }) + +export const webSocketTransport = WebSocketTransport.jsonTransport.with< + OpenAIResponsesBody, + OpenAIResponsesWebSocketMessage +>({ + toMessage: webSocketMessage, + encodeMessage: encodeWebSocketMessage, +}) + +export const webSocketRoute = Route.make({ + id: `${ADAPTER}-websocket`, + provider: "openai", + providerMetadataKey: "openai", + protocol, + endpoint, + auth, + transport: webSocketTransport, + defaults: { providerOptions: { openai: { store: false } } }, +}) + +export * as OpenAIResponses from "./openai-responses" diff --git a/packages/ai/src/protocols/shared.ts b/packages/ai/src/protocols/shared.ts new file mode 100644 index 000000000000..9d8f98a1ad21 --- /dev/null +++ b/packages/ai/src/protocols/shared.ts @@ -0,0 +1,327 @@ +import { Buffer } from "node:buffer" +import { Tool } from "@opencode-ai/schema/tool" +import { Effect, Schema, Stream } from "effect" +import * as Sse from "effect/unstable/encoding/Sse" +import { Headers, HttpClientRequest } from "effect/unstable/http" +import { + InvalidProviderOutputReason, + InvalidRequestReason, + LLMError, + type ContentPart, + type LLMRequest, + type MediaPart, + type TextPart, + type ToolResultPart, +} from "../schema" +import { isRecord } from "../utils/record" +export { isRecord } + +export const Json = Schema.fromJsonString(Schema.Unknown) +export const decodeJson = Schema.decodeUnknownSync(Json) +export const encodeJson = Schema.encodeSync(Json) +const isJson = Schema.is(Schema.Json) +export const JsonObject = Schema.Record(Schema.String, Schema.Unknown) +export const optionalArray = (schema: S) => Schema.optional(Schema.Array(schema)) +export const optionalNull = (schema: S) => Schema.optional(Schema.NullOr(schema)) + +/** + * Streaming tool-call accumulator. Adapters that build a tool call across + * multiple `tool-input-delta` chunks store the partial JSON input string here + * and finalize it with `parseToolInput` once the call completes. + */ +export interface ToolAccumulator { + readonly id: string + readonly name: string + readonly input: string +} + +/** + * `Usage.totalTokens` policy shared by every route. Honors a provider- + * supplied total; otherwise falls back to `inputTokens + outputTokens` only + * when at least one is defined. Returns `undefined` when neither input nor + * output is known so routes don't publish a misleading `0`. + * + * Under the additive `LLM.Usage` contract, `inputTokens` and `outputTokens` + * are the non-cached input and visible output only. The provider-supplied + * `total` is the source of truth when present; the computed fallback + * under-counts cache and reasoning by design and exists mainly so + * Anthropic-style providers (which don't surface a total) still get a + * sensible aggregate on the input + output axes. + */ +export const totalTokens = ( + inputTokens: number | undefined, + outputTokens: number | undefined, + total: number | undefined, +) => { + if (total !== undefined) return total + if (inputTokens === undefined && outputTokens === undefined) return undefined + return (inputTokens ?? 0) + (outputTokens ?? 0) +} + +/** + * Subtract `subtrahend` from `total`, clamping to zero if the provider + * reports a non-sensical breakdown (e.g. `cached_tokens > prompt_tokens`). + * Used by protocol mappers when deriving a non-overlapping breakdown field + * from a provider's inclusive total — `nonCachedInputTokens` from + * `inputTokens - cacheReadInputTokens - cacheWriteInputTokens`. + * + * If `total` is `undefined`, returns `undefined` (we don't fabricate + * counts). If `subtrahend` is `undefined`, returns `total` unchanged. The + * provider-native breakdown stays available on `Usage.native` for debugging. + */ +export const subtractTokens = (total: number | undefined, subtrahend: number | undefined): number | undefined => { + if (total === undefined) return undefined + if (subtrahend === undefined) return total + return Math.max(0, total - subtrahend) +} + +/** + * Sum a list of optional token counts, returning `undefined` only when + * every value is `undefined` (so we don't fabricate a `0`). Used by + * protocol mappers to derive the inclusive `inputTokens` total from a + * provider that natively reports a non-overlapping breakdown + * (e.g. Anthropic, whose `input_tokens` is already non-cached only). + */ +export const sumTokens = (...values: ReadonlyArray): number | undefined => { + if (values.every((value) => value === undefined)) return undefined + return values.reduce((acc: number, value) => acc + (value ?? 0), 0) +} + +export const eventError = (route: string, message: string, raw?: string) => + new LLMError({ + module: "ProviderShared", + method: "stream", + reason: new InvalidProviderOutputReason({ route, message, raw }), + }) + +export const parseJson = (route: string, input: string, message: string) => + Effect.try({ + try: () => decodeJson(input), + catch: () => eventError(route, message, input), + }) + +/** + * Join the `text` field of a list of parts with newlines. Used by routes + * that flatten system / message content arrays into a single provider string + * (OpenAI Chat `system` content, OpenAI Responses `system` content, Gemini + * `systemInstruction.parts[].text`). + */ +export const joinText = (parts: ReadonlyArray<{ readonly text: string }>) => parts.map((part) => part.text).join("\n") + +const escapeSystemUpdateText = (text: string) => + text.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">") + +/** + * Stable fallback representation for chronological `Message.system(...)` + * updates on routes that do not support that privileged role natively. The + * wrapper remains visibly lower-authority user text, preserves the original + * temporal position, and XML-escapes content so it cannot close the wrapper. + */ +export const wrapSystemUpdate = (parts: ReadonlyArray<{ readonly text: string }>) => + `\n${escapeSystemUpdateText(joinText(parts))}\n` + +/** + * Chronological system updates deliberately accept text only. Do not insert + * raw retrieved, tool, or web content into privileged updates: keep untrusted + * data in ordinary user/tool messages instead. + */ +export const systemUpdateText = Effect.fn("ProviderShared.systemUpdateText")(function* ( + route: string, + message: LLMRequest["messages"][number], +) { + const content: TextPart[] = [] + for (const part of message.content) { + if (!supportsContent(part, ["text"])) return yield* unsupportedContent(route, "system", ["text"]) + content.push(part) + } + return content +}) + +/** Lower an unsupported privileged update into visible, in-order user text. */ +export const wrappedSystemUpdate = Effect.fn("ProviderShared.wrappedSystemUpdate")(function* ( + route: string, + message: LLMRequest["messages"][number], +) { + const content = yield* systemUpdateText(route, message) + return { type: "text" as const, text: wrapSystemUpdate(content), cache: content.at(-1)?.cache } +}) + +/** + * Parse the streamed JSON input of a tool call. Treats an empty string as + * `"{}"` — providers occasionally finish a tool call without ever emitting + * input deltas (e.g. zero-arg tools). The error message is uniform across + * routes: `Invalid JSON input for tool call `. + */ +export const parseToolInput = (route: string, name: string, raw: string) => + parseJson(route, raw || "{}", `Invalid JSON input for ${route} tool call ${name}`) + +export const IMAGE_MIMES = ["image/png", "image/jpeg", "image/gif", "image/webp"] as const +export const VIDEO_MIMES = ["video/mp4", "video/webm", "video/quicktime"] as const +export const AUDIO_MIMES = ["audio/wav", "audio/mp3", "audio/aiff", "audio/aac", "audio/ogg", "audio/flac"] as const +export const PDF_MIMES = ["application/pdf"] as const +export const MEDIA_MIMES = [...IMAGE_MIMES, ...VIDEO_MIMES, ...AUDIO_MIMES, ...PDF_MIMES] as const +export const MAX_MEDIA_ENCODED_BYTES = 28 * 1024 * 1024 +export const MAX_MEDIA_DECODED_BYTES = 20 * 1024 * 1024 + +const base64Pattern = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/ + +export interface ValidatedMedia { + readonly mime: string + readonly base64: string + readonly dataUrl: string + readonly bytes: Uint8Array +} + +export const validateMedia = Effect.fn("ProviderShared.validateMedia")(function* ( + route: string, + part: MediaPart, + supportedMimes: ReadonlySet, +) { + const mime = part.mediaType.toLowerCase() + if (!supportedMimes.has(mime)) return yield* invalidRequest(`${route} does not support media type ${part.mediaType}`) + + let base64: string + if (typeof part.data !== "string") { + if (part.data.byteLength > MAX_MEDIA_DECODED_BYTES) + return yield* invalidRequest(`${route} media exceeds the ${MAX_MEDIA_DECODED_BYTES} byte decoded limit`) + base64 = Buffer.from(part.data).toString("base64") + } else if (part.data.startsWith("data:")) { + const match = /^data:([^;,]+);base64,([A-Za-z0-9+/]*={0,2})$/s.exec(part.data) + if (!match) return yield* invalidRequest(`${route} media data URL must contain valid base64`) + if (match[1]!.toLowerCase() !== mime) + return yield* invalidRequest(`${route} media type ${part.mediaType} does not match data URL type ${match[1]}`) + base64 = match[2]! + } else { + base64 = part.data + } + + if (Buffer.byteLength(base64, "utf8") > MAX_MEDIA_ENCODED_BYTES) + return yield* invalidRequest(`${route} media exceeds the ${MAX_MEDIA_ENCODED_BYTES} byte encoded limit`) + if (!base64 || base64.length % 4 !== 0 || !base64Pattern.test(base64)) + return yield* invalidRequest(`${route} media must contain valid base64`) + const bytes = Buffer.from(base64, "base64") + if (bytes.byteLength > MAX_MEDIA_DECODED_BYTES) + return yield* invalidRequest(`${route} media exceeds the ${MAX_MEDIA_DECODED_BYTES} byte decoded limit`) + if (bytes.toString("base64") !== base64) return yield* invalidRequest(`${route} media must contain canonical base64`) + return { mime, base64, dataUrl: `data:${mime};base64,${base64}`, bytes } satisfies ValidatedMedia +}) + +export const validateToolFile = (route: string, part: Tool.FileContent, supportedMimes: ReadonlySet) => + validateMedia(route, { type: "media", mediaType: part.mime, data: part.uri, filename: part.name }, supportedMimes) + +export const trimBaseUrl = (value: string) => value.replace(/\/+$/, "") + +export const toolResultText = (part: ToolResultPart) => { + if (part.result.type === "text") return String(part.result.value) + if (part.result.type === "error") { + const value = part.result.value + const prototype = + typeof value === "object" && value !== null && !Array.isArray(value) && Object.getPrototypeOf(value) + const structured = Array.isArray(value) || prototype === Object.prototype || prototype === null + return structured && isJson(value) ? encodeJson(value) : String(value) + } + return encodeJson(part.result.value) +} + +export const errorText = (error: unknown) => { + if (error instanceof Error) return error.message + if (typeof error === "string") return error + if (typeof error === "number" || typeof error === "boolean" || typeof error === "bigint") return String(error) + if (error === null) return "null" + if (error === undefined) return "undefined" + return "Unknown stream error" +} + +/** + * `framing` step for Server-Sent Events. Decodes UTF-8, runs the SSE channel + * decoder, and drops empty / `[DONE]` keep-alive events so the downstream + * `decodeChunk` sees one JSON string per element. The SSE channel emits a + * `Retry` control event on its error channel; we drop it here (we don't + * implement client-driven retries) so the public error channel stays + * `LLMError`. + */ +export const sseFraming = (bytes: Stream.Stream): Stream.Stream => + bytes.pipe( + Stream.decodeText(), + Stream.pipeThroughChannel(Sse.decode()), + Stream.catchTag("Retry", () => Stream.empty), + Stream.filter((event) => event.data.length > 0 && event.data !== "[DONE]"), + Stream.map((event) => event.data), + ) + +/** + * Canonical invalid-request constructor. Lift one-line `const invalid = + * (message) => invalidRequest(message)` aliases out of every + * route so the error constructor lives in one place. If we ever extend + * `InvalidRequestReason` with route context or trace metadata, the change + * lands here. + */ +export const invalidRequest = (message: string) => + new LLMError({ + module: "ProviderShared", + method: "request", + reason: new InvalidRequestReason({ message }), + }) + +export const matchToolChoice = ( + route: string, + toolChoice: NonNullable, + cases: { + readonly auto: () => Auto + readonly none: () => None + readonly required: () => Required + readonly tool: (name: string) => Tool + }, +) => + Effect.gen(function* () { + if (toolChoice.type === "auto") return cases.auto() + if (toolChoice.type === "none") return cases.none() + if (toolChoice.type === "required") return cases.required() + if (!toolChoice.name) return yield* invalidRequest(`${route} tool choice requires a tool name`) + return cases.tool(toolChoice.name) + }) + +type ContentType = ContentPart["type"] + +const formatContentTypes = (types: ReadonlyArray) => { + if (types.length <= 1) return types[0] ?? "" + if (types.length === 2) return `${types[0]} and ${types[1]}` + return `${types.slice(0, -1).join(", ")}, and ${types.at(-1)}` +} + +export const supportsContent = ( + part: ContentPart, + types: ReadonlyArray, +): part is Extract => (types as ReadonlyArray).includes(part.type) + +export const unsupportedContent = ( + route: string, + role: LLMRequest["messages"][number]["role"], + types: ReadonlyArray, +) => invalidRequest(`${route} ${role} messages only support ${formatContentTypes(types)} content for now`) + +/** + * Build a `validate` step from a Schema decoder. Replaces the per-route + * lambda body `(payload) => decode(payload).pipe(Effect.mapError((e) => + * invalid(e.message)))`. Any decode error is translated into + * `LLMError` carrying the original parse-error message. + */ +export const validateWith = + (decode: (input: I) => Effect.Effect) => + (payload: I) => + decode(payload).pipe(Effect.mapError((error) => invalidRequest(error.message))) + +/** + * Build an HTTP POST with a JSON body. Sets `content-type: application/json` + * automatically after caller-supplied headers so routes cannot accidentally + * send JSON with a stale content type. The body is passed pre-encoded so + * routes can choose between + * `Schema.encodeSync(payload)` and `ProviderShared.encodeJson(payload)`. + */ +export const jsonPost = (input: { readonly url: string; readonly body: string; readonly headers?: Headers.Input }) => + HttpClientRequest.post(input.url).pipe( + HttpClientRequest.setHeaders(Headers.set(Headers.fromInput(input.headers), "content-type", "application/json")), + HttpClientRequest.bodyText(input.body, "application/json"), + ) + +export * as ProviderShared from "./shared" diff --git a/packages/llm/src/protocols/utils/bedrock-auth.ts b/packages/ai/src/protocols/utils/bedrock-auth.ts similarity index 100% rename from packages/llm/src/protocols/utils/bedrock-auth.ts rename to packages/ai/src/protocols/utils/bedrock-auth.ts diff --git a/packages/llm/src/protocols/utils/bedrock-cache.ts b/packages/ai/src/protocols/utils/bedrock-cache.ts similarity index 100% rename from packages/llm/src/protocols/utils/bedrock-cache.ts rename to packages/ai/src/protocols/utils/bedrock-cache.ts diff --git a/packages/llm/src/protocols/utils/bedrock-media.ts b/packages/ai/src/protocols/utils/bedrock-media.ts similarity index 91% rename from packages/llm/src/protocols/utils/bedrock-media.ts rename to packages/ai/src/protocols/utils/bedrock-media.ts index 6fda6c4fbb43..6a12966b7b32 100644 --- a/packages/llm/src/protocols/utils/bedrock-media.ts +++ b/packages/ai/src/protocols/utils/bedrock-media.ts @@ -49,10 +49,10 @@ const DOCUMENT_FORMATS = { "text/markdown": "md", } as const satisfies Record -const documentBlock = (part: MediaPart, format: DocumentFormat, bytes: string): DocumentBlock => ({ +const documentBlock = (name: string, format: DocumentFormat, bytes: string): DocumentBlock => ({ document: { format, - name: part.filename ?? `document.${format}`, + name, source: { bytes }, }, }) @@ -77,12 +77,14 @@ export const lower = Effect.fn("BedrockMedia.lower")(function* (part: MediaPart) return yield* ProviderShared.invalidRequest(`Bedrock Converse does not support image media type ${part.mediaType}`) const documentFormat = DOCUMENT_FORMATS[mime as keyof typeof DOCUMENT_FORMATS] if (documentFormat) { + if (!part.filename) + return yield* ProviderShared.invalidRequest("Bedrock Converse document media requires a filename") const media = yield* ProviderShared.validateMedia( "Bedrock Converse", part, new Set(Object.keys(DOCUMENT_FORMATS)), ) - return documentBlock(part, documentFormat, media.base64) + return documentBlock(part.filename, documentFormat, media.base64) } return yield* ProviderShared.invalidRequest(`Bedrock Converse does not support media type ${part.mediaType}`) }) diff --git a/packages/llm/src/protocols/utils/cache.ts b/packages/ai/src/protocols/utils/cache.ts similarity index 100% rename from packages/llm/src/protocols/utils/cache.ts rename to packages/ai/src/protocols/utils/cache.ts diff --git a/packages/llm/src/protocols/utils/gemini-tool-schema.ts b/packages/ai/src/protocols/utils/gemini-tool-schema.ts similarity index 97% rename from packages/llm/src/protocols/utils/gemini-tool-schema.ts rename to packages/ai/src/protocols/utils/gemini-tool-schema.ts index 7690b2e60018..efdbe3f6ec65 100644 --- a/packages/llm/src/protocols/utils/gemini-tool-schema.ts +++ b/packages/ai/src/protocols/utils/gemini-tool-schema.ts @@ -1,4 +1,4 @@ -import { ProviderShared } from "../shared" +import { isRecord } from "../../utils/record" // Gemini accepts a JSON Schema-like dialect for tool parameters, but rejects a // handful of common JSON Schema shapes. Keep this projection isolated so the @@ -20,8 +20,6 @@ const SCHEMA_INTENT_KEYS = [ "else", ] -const isRecord = ProviderShared.isRecord - const hasCombiner = (schema: unknown) => isRecord(schema) && (Array.isArray(schema.anyOf) || Array.isArray(schema.oneOf) || Array.isArray(schema.allOf)) diff --git a/packages/ai/src/protocols/utils/image-input.ts b/packages/ai/src/protocols/utils/image-input.ts new file mode 100644 index 000000000000..7b16191f191c --- /dev/null +++ b/packages/ai/src/protocols/utils/image-input.ts @@ -0,0 +1,34 @@ +import { Effect, Encoding } from "effect" +import type { ImageInput } from "../../image" +import { InvalidRequestReason, LLMError } from "../../schema" + +const invalid = (module: string, message: string) => + new LLMError({ + module, + method: "generate", + reason: new InvalidRequestReason({ message }), + }) + +export const dataUrl = (input: Extract) => + `data:${input.mediaType};base64,${Encoding.encodeBase64(input.data)}` + +export const decodeDataUrl = ( + url: string, + module: string, +): Effect.Effect<{ readonly mediaType: string; readonly data: Uint8Array } | undefined, LLMError> => { + if (!url.startsWith("data:")) return Effect.succeed(undefined) + const match = /^data:([^;,]+);base64,(.*)$/s.exec(url) + if (!match) return Effect.fail(invalid(module, "Image data URLs must contain a MIME type and base64 data")) + return Effect.fromResult(Encoding.decodeBase64(match[2])).pipe( + Effect.mapError(() => invalid(module, "Image data URL contains invalid base64 data")), + Effect.map((data) => ({ mediaType: match[1], data })), + ) +} + +export const invalidImageInput = invalid + +export const ImageInputs = { + dataUrl, + decodeDataUrl, + invalid: invalidImageInput, +} as const diff --git a/packages/ai/src/protocols/utils/lifecycle.ts b/packages/ai/src/protocols/utils/lifecycle.ts new file mode 100644 index 000000000000..1ee8b608f672 --- /dev/null +++ b/packages/ai/src/protocols/utils/lifecycle.ts @@ -0,0 +1,105 @@ +import { LLMEvent, type FinishReasonDetails, type ProviderMetadata, type Usage } from "../../schema" + +export interface State { + readonly stepStarted: boolean + readonly text: ReadonlySet + readonly reasoning: ReadonlySet +} + +export const initial = (): State => ({ stepStarted: false, text: new Set(), reasoning: new Set() }) + +export const stepStart = (state: State, events: LLMEvent[]): State => { + if (state.stepStarted) return state + events.push(LLMEvent.stepStart({ index: 0 })) + return { ...state, stepStarted: true } +} + +export const textStart = (state: State, events: LLMEvent[], id: string, providerMetadata?: ProviderMetadata): State => { + if (state.text.has(id)) return state + const stepped = stepStart(state, events) + events.push(LLMEvent.textStart({ id, providerMetadata })) + return { ...stepped, text: new Set([...stepped.text, id]) } +} + +export const textDelta = (state: State, events: LLMEvent[], id: string, text: string): State => { + const started = textStart(state, events, id) + events.push(LLMEvent.textDelta({ id, text })) + return started +} + +export const reasoningStart = ( + state: State, + events: LLMEvent[], + id: string, + providerMetadata?: ProviderMetadata, +): State => { + if (state.reasoning.has(id)) return state + const stepped = stepStart(state, events) + events.push(LLMEvent.reasoningStart({ id, providerMetadata })) + return { ...stepped, reasoning: new Set([...stepped.reasoning, id]) } +} + +export const reasoningDelta = ( + state: State, + events: LLMEvent[], + id: string, + text: string, + providerMetadata?: ProviderMetadata, +): State => { + const started = reasoningStart(state, events, id, providerMetadata) + events.push(LLMEvent.reasoningDelta({ id, text, providerMetadata })) + return started +} + +export const reasoningEnd = ( + state: State, + events: LLMEvent[], + id: string, + providerMetadata?: ProviderMetadata, +): State => { + if (!state.reasoning.has(id)) return state + const stepped = stepStart(state, events) + events.push(LLMEvent.reasoningEnd({ id, providerMetadata })) + const reasoning = new Set(stepped.reasoning) + reasoning.delete(id) + return { ...stepped, reasoning } +} + +export const textEnd = (state: State, events: LLMEvent[], id: string, providerMetadata?: ProviderMetadata): State => { + if (!state.text.has(id)) return state + const stepped = stepStart(state, events) + events.push(LLMEvent.textEnd({ id, providerMetadata })) + const text = new Set(stepped.text) + text.delete(id) + return { ...stepped, text } +} + +const closeOpenBlocks = (state: State, events: LLMEvent[]): State => { + for (const id of state.reasoning) events.push(LLMEvent.reasoningEnd({ id })) + for (const id of state.text) events.push(LLMEvent.textEnd({ id })) + return { ...state, text: new Set(), reasoning: new Set() } +} + +export const finish = ( + state: State, + events: LLMEvent[], + input: { + readonly reason: FinishReasonDetails + readonly usage?: Usage + readonly providerMetadata?: ProviderMetadata + }, +): State => { + const stepped = closeOpenBlocks(stepStart(state, events), events) + events.push( + LLMEvent.stepFinish({ + index: 0, + reason: input.reason, + usage: input.usage, + providerMetadata: input.providerMetadata, + }), + LLMEvent.finish(input), + ) + return { ...stepped, stepStarted: false } +} + +export * as Lifecycle from "./lifecycle" diff --git a/packages/ai/src/protocols/utils/open-responses-options.ts b/packages/ai/src/protocols/utils/open-responses-options.ts new file mode 100644 index 000000000000..80288ca5cb1d --- /dev/null +++ b/packages/ai/src/protocols/utils/open-responses-options.ts @@ -0,0 +1,65 @@ +import { Schema } from "effect" +import { TextVerbosity, type LLMRequest } from "../../schema" + +export const ResponseIncludables = [ + "file_search_call.results", + "web_search_call.results", + "web_search_call.action.sources", + "message.input_image.image_url", + "computer_call_output.output.image_url", + "code_interpreter_call.outputs", + "reasoning.encrypted_content", + "message.output_text.logprobs", +] as const +export type ResponseIncludable = (typeof ResponseIncludables)[number] + +export const ServiceTiers = ["auto", "default", "flex", "priority"] as const +export type ServiceTier = (typeof ServiceTiers)[number] + +const TEXT_VERBOSITY = new Set(["low", "medium", "high"]) +const INCLUDABLES = new Set(ResponseIncludables) +const SERVICE_TIERS = new Set(ServiceTiers) + +const isTextVerbosity = (value: unknown): value is Schema.Schema.Type => + typeof value === "string" && TEXT_VERBOSITY.has(value) + +const isServiceTier = (value: unknown): value is ServiceTier => typeof value === "string" && SERVICE_TIERS.has(value) + +export const ReasoningEffort = Schema.String +export const TextVerbositySchema = TextVerbosity +export const ResponseIncludableSchema = Schema.Literals(ResponseIncludables) +export const ServiceTierSchema = Schema.Literals(ServiceTiers) + +export interface Resolved { + readonly instructions?: string + readonly store?: boolean + readonly promptCacheKey?: string + readonly reasoningEffort?: string + readonly reasoningSummary?: "auto" | "concise" | "detailed" + readonly include?: ReadonlyArray + readonly textVerbosity?: Schema.Schema.Type + readonly serviceTier?: ServiceTier +} + +export const resolve = (request: LLMRequest): Resolved => { + const input = request.providerOptions?.[request.model.route.providerMetadataKey ?? "openresponses"] + const include = Array.isArray(input?.include) + ? input.include.filter((entry): entry is ResponseIncludable => INCLUDABLES.has(entry)) + : [] + const reasoningSummary = input?.reasoningSummary + return { + instructions: typeof input?.instructions === "string" ? input.instructions : undefined, + store: typeof input?.store === "boolean" ? input.store : undefined, + promptCacheKey: typeof input?.promptCacheKey === "string" ? input.promptCacheKey : undefined, + reasoningEffort: typeof input?.reasoningEffort === "string" ? input.reasoningEffort : undefined, + reasoningSummary: + reasoningSummary === "auto" || reasoningSummary === "concise" || reasoningSummary === "detailed" + ? reasoningSummary + : undefined, + include: include.length > 0 ? include : undefined, + textVerbosity: isTextVerbosity(input?.textVerbosity) ? input.textVerbosity : undefined, + serviceTier: isServiceTier(input?.serviceTier) ? input.serviceTier : undefined, + } +} + +export * as OpenResponsesOptions from "./open-responses-options" diff --git a/packages/ai/src/protocols/utils/openai-image.ts b/packages/ai/src/protocols/utils/openai-image.ts new file mode 100644 index 000000000000..765c99ce166c --- /dev/null +++ b/packages/ai/src/protocols/utils/openai-image.ts @@ -0,0 +1,20 @@ +import { Schema } from "effect" + +const dimensions = (value: string) => { + const match = /^(\d+)x(\d+)$/.exec(value) + if (!match) return undefined + return { width: Number(match[1]), height: Number(match[2]) } +} + +export const Size = Schema.String.check( + Schema.makeFilter((value) => { + if (value === "auto") return undefined + const parsed = dimensions(value) + if (!parsed) return "image size must be `auto` or `{width}x{height}`" + return parsed.width > 0 && parsed.height > 0 ? undefined : "image dimensions must be positive integers" + }), +) + +export const OpenAIImage = { + Size, +} as const diff --git a/packages/ai/src/protocols/utils/openai-options.ts b/packages/ai/src/protocols/utils/openai-options.ts new file mode 100644 index 000000000000..fc95e6a36233 --- /dev/null +++ b/packages/ai/src/protocols/utils/openai-options.ts @@ -0,0 +1,23 @@ +import { ReasoningEfforts } from "../../schema" +import { OpenResponsesOptions } from "./open-responses-options" + +export const OpenAIReasoningEfforts = ReasoningEfforts +export type OpenAIReasoningEffort = string + +// Mirrors OpenAI's `ResponseIncludable` union from the official SDK. Keep this +// in lockstep with `openai-node/src/resources/responses/responses.ts`. +export const OpenAIResponseIncludables = OpenResponsesOptions.ResponseIncludables +export type OpenAIResponseIncludable = OpenResponsesOptions.ResponseIncludable +export const OpenAIServiceTiers = OpenResponsesOptions.ServiceTiers +export type OpenAIServiceTier = OpenResponsesOptions.ServiceTier + +export const OpenAIReasoningEffort = OpenResponsesOptions.ReasoningEffort +export const OpenAITextVerbosity = OpenResponsesOptions.TextVerbositySchema +export const OpenAIResponseIncludable = OpenResponsesOptions.ResponseIncludableSchema +export const OpenAIServiceTier = OpenResponsesOptions.ServiceTierSchema + +export const isReasoningEffort = (effort: unknown): effort is OpenAIReasoningEffort => typeof effort === "string" + +export const resolve = OpenResponsesOptions.resolve + +export * as OpenAIOptions from "./openai-options" diff --git a/packages/ai/src/protocols/utils/tool-schema.ts b/packages/ai/src/protocols/utils/tool-schema.ts new file mode 100644 index 000000000000..473942939ce3 --- /dev/null +++ b/packages/ai/src/protocols/utils/tool-schema.ts @@ -0,0 +1,89 @@ +import type { JsonSchema, ModelToolSchemaCompatibility } from "../../schema" +import { isRecord } from "../../utils/record" +import { GeminiToolSchema } from "./gemini-tool-schema" + +const removeNullSchemas = (value: unknown): unknown => { + if (Array.isArray(value)) return value.map(removeNullSchemas) + if (!isRecord(value)) return value + const fields = Object.fromEntries( + Object.entries(value) + .filter(([key]) => key !== "anyOf") + .map(([key, field]) => [key, removeNullSchemas(field)]), + ) + if (!Array.isArray(value.anyOf)) return fields + const variants = value.anyOf.filter((variant) => !isRecord(variant) || variant.type !== "null").map(removeNullSchemas) + if (variants.length === 1 && isRecord(variants[0])) return { ...fields, ...variants[0] } + return { ...fields, anyOf: variants } +} + +const tupleItemsSchema = (items: ReadonlyArray) => { + const projected = items.map(moonshotNode) + if (projected.length === 0) return {} + if (projected.length === 1) return projected[0] + return { anyOf: projected } +} + +const moonshotNode = (schema: unknown): unknown => { + if (Array.isArray(schema)) return schema.map(moonshotNode) + if (!isRecord(schema)) return schema + if (typeof schema.$ref === "string") return { $ref: schema.$ref } + return Object.fromEntries( + Object.entries(schema).flatMap(([key, value]) => { + if (key === "items" && Array.isArray(value)) return [[key, tupleItemsSchema(value)]] + if (key === "prefixItems") { + if ("items" in schema) return [] + return [["items", tupleItemsSchema(Array.isArray(value) ? value : [])]] + } + if (key === "unevaluatedItems") return [] + return [[key, moonshotNode(value)]] + }), + ) +} + +const moonshot = (schema: JsonSchema): JsonSchema => { + const projected = moonshotNode(schema) + return isRecord(projected) ? projected : {} +} + +const openAI = (schema: JsonSchema): JsonSchema => { + const variants = Array.isArray(schema.anyOf) ? schema.anyOf.filter(isRecord) : [] + const flattened = + variants.length === 0 + ? { ...schema, type: "object" } + : { + ...Object.fromEntries(Object.entries(schema).filter(([key]) => key !== "anyOf")), + type: "object", + properties: variants.reduce( + (properties, variant) => ({ ...(isRecord(variant.properties) ? variant.properties : {}), ...properties }), + {}, + ), + additionalProperties: false, + } + const normalized = removeNullSchemas(flattened) + return isRecord(normalized) ? normalized : { type: "object" } +} + +const responses = openAI + +const gemini = (schema: JsonSchema): JsonSchema => GeminiToolSchema.convert(schema) ?? {} + +const modelCompatibility = ( + schema: JsonSchema, + compatibility: ModelToolSchemaCompatibility | undefined, +): JsonSchema => { + if (compatibility === undefined) return schema + switch (compatibility) { + case "gemini": + return gemini(schema) + case "moonshot": + return moonshot(schema) + } +} + +export const ToolSchemaProjection = { + gemini, + modelCompatibility, + moonshot, + openAI, + responses, +} as const diff --git a/packages/llm/src/protocols/utils/tool-stream.ts b/packages/ai/src/protocols/utils/tool-stream.ts similarity index 80% rename from packages/llm/src/protocols/utils/tool-stream.ts rename to packages/ai/src/protocols/utils/tool-stream.ts index 8e07a64bfed8..fbea376e709f 100644 --- a/packages/llm/src/protocols/utils/tool-stream.ts +++ b/packages/ai/src/protocols/utils/tool-stream.ts @@ -1,5 +1,5 @@ import { Effect } from "effect" -import { LLMError, LLMEvent, type ProviderMetadata, type ToolCall } from "../../schema" +import { LLMError, LLMEvent, type ProviderMetadata, type ToolCall, type ToolInputError } from "../../schema" import { eventError, parseToolInput, type ToolAccumulator } from "../shared" type StreamKey = string | number @@ -53,6 +53,7 @@ const inputStart = (tool: PendingTool) => LLMEvent.toolInputStart({ id: tool.id, name: tool.name, + providerExecuted: tool.providerExecuted ? true : undefined, providerMetadata: tool.providerMetadata, }) @@ -63,19 +64,36 @@ const inputDelta = (tool: PendingTool, text: string) => text, }) -const toolCall = (route: string, tool: PendingTool, inputOverride?: string) => - parseToolInput(route, tool.name, inputOverride ?? tool.input).pipe( - Effect.map( - (input): ToolCall => - LLMEvent.toolCall({ - id: tool.id, - name: tool.name, - input, - providerExecuted: tool.providerExecuted ? true : undefined, - providerMetadata: tool.providerMetadata, - }), +const toolCall = (route: string, tool: PendingTool, inputOverride?: string) => { + const raw = inputOverride ?? tool.input + return parseToolInput(route, tool.name, raw).pipe( + Effect.map((input): ToolCall | ToolInputError => + LLMEvent.toolCall({ + id: tool.id, + name: tool.name, + input, + providerExecuted: tool.providerExecuted ? true : undefined, + providerMetadata: tool.providerMetadata, + }), + ), + Effect.catch((error) => + tool.providerExecuted + ? Effect.fail(error) + : Effect.succeed( + LLMEvent.toolInputError({ + id: tool.id, + name: tool.name, + raw, + }), + ), ), ) +} + +const finishEvents = (tool: PendingTool, event: ToolCall | ToolInputError): ReadonlyArray => + event.type === "tool-input-error" + ? [event] + : [LLMEvent.toolInputEnd({ id: tool.id, name: tool.name, providerMetadata: tool.providerMetadata }), event] /** Store the updated tool and produce the optional public delta event. */ const appendTool = ( @@ -122,8 +140,8 @@ export const appendOrStart = ( missingToolMessage: string, ): AppendOutcome | LLMError => { const current = tools[key] - const id = delta.id ?? current?.id - const name = delta.name ?? current?.name + const id = current?.id ?? delta.id + const name = current?.name ?? delta.name if (!id || !name) return eventError(route, missingToolMessage) const tool = { @@ -158,8 +176,9 @@ export const appendExisting = ( /** * Finalize one pending tool call: parse the accumulated raw JSON, remove it - * from state, and return the optional public `tool-call` event. Missing keys are - * a no-op because some providers emit stop events for non-tool content blocks. + * from state, and return either a call or a non-executable local input error. + * Missing keys are a no-op because some providers emit stop events for + * non-tool content blocks. */ export const finish = (route: string, tools: State, key: K) => Effect.gen(function* () { @@ -167,10 +186,7 @@ export const finish = (route: string, tools: State, key: if (!tool) return { tools } return { tools: withoutTool(tools, key), - events: [ - LLMEvent.toolInputEnd({ id: tool.id, name: tool.name, providerMetadata: tool.providerMetadata }), - yield* toolCall(route, tool), - ], + events: finishEvents(tool, yield* toolCall(route, tool)), } }) @@ -185,17 +201,14 @@ export const finishWithInput = (route: string, tools: State if (!tool) return { tools } return { tools: withoutTool(tools, key), - events: [ - LLMEvent.toolInputEnd({ id: tool.id, name: tool.name, providerMetadata: tool.providerMetadata }), - yield* toolCall(route, tool, input), - ], + events: finishEvents(tool, yield* toolCall(route, tool, input)), } }) /** * Finalize every pending tool call at once. OpenAI Chat has this shape: it does - * not emit per-tool stop events, so all accumulated calls finish when the choice - * receives a terminal `finish_reason`. + * not emit per-tool stop events, so all accumulated calls finish independently + * when the choice receives a terminal `finish_reason`. */ export const finishAll = (route: string, tools: State) => Effect.gen(function* () { @@ -205,12 +218,7 @@ export const finishAll = (route: string, tools: State) = return { tools: empty(), events: yield* Effect.forEach(pending, (tool) => - toolCall(route, tool).pipe( - Effect.map((call) => [ - LLMEvent.toolInputEnd({ id: tool.id, name: tool.name, providerMetadata: tool.providerMetadata }), - call, - ]), - ), + toolCall(route, tool).pipe(Effect.map((event) => finishEvents(tool, event))), ).pipe(Effect.map((events) => events.flat())), } }) diff --git a/packages/ai/src/protocols/xai-images.ts b/packages/ai/src/protocols/xai-images.ts new file mode 100644 index 000000000000..f297fe66ee8a --- /dev/null +++ b/packages/ai/src/protocols/xai-images.ts @@ -0,0 +1,202 @@ +import { Effect, Encoding, Schema } from "effect" +import { Headers, HttpClientRequest } from "effect/unstable/http" +import { GeneratedImage, ImageModel, ImageResponse, type ImageRequestFor, type ImageRoute } from "../image" +import { Auth, type Definition as AuthDefinition } from "../route/auth" +import { + InvalidProviderOutputReason, + LLMError, + Usage, + mergeHttpOptions, + mergeJsonRecords, + type HttpOptions, +} from "../schema" +import { ProviderShared, optionalNull } from "./shared" +import { ImageInputs } from "./utils/image-input" + +const ADAPTER = "xai-images" +export const DEFAULT_BASE_URL = "https://api.x.ai/v1" +export const PATH = "/images/generations" +export const EDIT_PATH = "/images/edits" + +export type XAIImageString = Known | (string & {}) + +export type XAIImageOptions = { + readonly n?: number + readonly aspectRatio?: XAIImageString< + | "1:1" + | "3:4" + | "4:3" + | "9:16" + | "16:9" + | "2:3" + | "3:2" + | "9:19.5" + | "19.5:9" + | "9:20" + | "20:9" + | "1:2" + | "2:1" + | "auto" + > + readonly aspect_ratio?: XAIImageString< + | "1:1" + | "3:4" + | "4:3" + | "9:16" + | "16:9" + | "2:3" + | "3:2" + | "9:19.5" + | "19.5:9" + | "9:20" + | "20:9" + | "1:2" + | "2:1" + | "auto" + > + readonly resolution?: XAIImageString<"1k" | "2k"> + readonly responseFormat?: XAIImageString<"url" | "b64_json"> + readonly response_format?: XAIImageString<"url" | "b64_json"> +} & Record + +type XAIImageBody = Record & { + readonly model: string + readonly prompt: string +} + +const XAIImageResponse = Schema.Struct({ + data: Schema.Array( + Schema.Struct({ + b64_json: optionalNull(Schema.String), + url: optionalNull(Schema.String), + revised_prompt: optionalNull(Schema.String), + mime_type: optionalNull(Schema.String), + }), + ), + usage: Schema.optional(Schema.Unknown), +}) + +export interface ModelInput { + readonly id: string + readonly auth: AuthDefinition + readonly baseURL?: string + readonly headers?: Record + readonly http?: HttpOptions +} + +const nativeOptions = (options: XAIImageOptions | undefined) => { + if (!options) return undefined + const { aspectRatio, responseFormat, ...native } = options + return { + aspect_ratio: aspectRatio, + response_format: responseFormat, + ...native, + } +} + +const invalidOutput = (message: string) => + new LLMError({ + module: ADAPTER, + method: "generate", + reason: new InvalidProviderOutputReason({ message, route: ADAPTER }), + }) + +const applyQuery = (url: string, query: Record | undefined) => { + if (!query) return url + const next = new URL(url) + Object.entries(query).forEach(([key, value]) => next.searchParams.set(key, value)) + return next.toString() +} + +export const model = (input: ModelInput) => { + const route: ImageRoute = { + id: ADAPTER, + generate: Effect.fn("XAIImages.generate")(function* (request: ImageRequestFor, execute) { + const http = mergeHttpOptions(request.model.http, request.http) + const imageReferences = (request.images ?? []).map((image) => { + if (image.type === "bytes") return { url: ImageInputs.dataUrl(image), type: "image_url" as const } + if (image.type === "url") return { url: image.url, type: "image_url" as const } + if (image.type === "file-id") return { file_id: image.id } + return undefined + }) + if (imageReferences.some((image) => image === undefined)) + return yield* ImageInputs.invalid(ADAPTER, "xAI Images accepts image URLs, data URLs, bytes, and file IDs") + const requestBody = mergeJsonRecords( + { + model: request.model.id, + prompt: request.prompt, + image: imageReferences.length === 1 ? imageReferences[0] : undefined, + images: imageReferences.length > 1 ? imageReferences : undefined, + }, + nativeOptions(request.options), + http?.body, + ) as XAIImageBody + const text = ProviderShared.encodeJson(requestBody) + const url = applyQuery( + `${(input.baseURL ?? DEFAULT_BASE_URL).replace(/\/$/, "")}${imageReferences.length === 0 ? PATH : EDIT_PATH}`, + http?.query, + ) + const headers = yield* Auth.toEffect(input.auth)({ + request, + method: "POST", + url, + body: text, + headers: Headers.fromInput({ ...input.headers, ...http?.headers }), + }) + const response = yield* execute( + HttpClientRequest.post(url).pipe( + HttpClientRequest.setHeaders(headers), + HttpClientRequest.bodyText(text, "application/json"), + ), + ) + const payload = yield* response.json.pipe( + Effect.mapError(() => invalidOutput("Failed to read the xAI Images response")), + ) + const decoded = yield* Schema.decodeUnknownEffect(XAIImageResponse)(payload).pipe( + Effect.mapError(() => invalidOutput("xAI Images returned an invalid response")), + ) + const images = yield* Effect.forEach(decoded.data, (item, index) => { + const mediaType = item.mime_type ?? "application/octet-stream" + if (item.b64_json) + return Effect.fromResult(Encoding.decodeBase64(item.b64_json)).pipe( + Effect.mapError(() => invalidOutput(`xAI Images result ${index} contains invalid base64 data`)), + Effect.map( + (data) => + new GeneratedImage({ + mediaType, + data, + providerMetadata: + item.revised_prompt === undefined || item.revised_prompt === null + ? undefined + : { xai: { revisedPrompt: item.revised_prompt } }, + }), + ), + ) + if (item.url) + return Effect.succeed( + new GeneratedImage({ + mediaType, + data: item.url, + providerMetadata: + item.revised_prompt === undefined || item.revised_prompt === null + ? undefined + : { xai: { revisedPrompt: item.revised_prompt } }, + }), + ) + return Effect.fail(invalidOutput(`xAI Images result ${index} has neither image data nor a URL`)) + }) + if (images.length === 0) return yield* invalidOutput("xAI Images returned no images") + const usage = ProviderShared.isRecord(decoded.usage) ? decoded.usage : undefined + return new ImageResponse({ + images, + usage: usage === undefined ? undefined : new Usage({ providerMetadata: { xai: usage } }), + providerMetadata: usage === undefined ? undefined : { xai: { usage } }, + }) + }), + } + return ImageModel.make({ id: input.id, provider: "xai", route, http: input.http }) +} + +export const XAIImages = { + model, +} as const diff --git a/packages/ai/src/protocols/zai-images.ts b/packages/ai/src/protocols/zai-images.ts new file mode 100644 index 000000000000..670c9c6c0144 --- /dev/null +++ b/packages/ai/src/protocols/zai-images.ts @@ -0,0 +1,132 @@ +import { Effect, Schema } from "effect" +import { Headers, HttpClientRequest } from "effect/unstable/http" +import { GeneratedImage, ImageModel, ImageResponse, type ImageRequestFor, type ImageRoute } from "../image" +import { Auth, type Definition as AuthDefinition } from "../route/auth" +import { InvalidProviderOutputReason, LLMError, mergeHttpOptions, mergeJsonRecords, type HttpOptions } from "../schema" +import { ProviderShared } from "./shared" +import { ImageInputs } from "./utils/image-input" + +const ADAPTER = "zai-images" +export const DEFAULT_BASE_URL = "https://api.z.ai/api/paas/v4" +export const PATH = "/images/generations" + +export type ZAIImageString = Known | (string & {}) + +export type ZAIImageOptions = { + readonly size?: ZAIImageString< + "1024x1024" | "768x1344" | "864x1152" | "1344x768" | "1152x864" | "1440x720" | "720x1440" + > + readonly quality?: ZAIImageString<"hd" | "standard"> + readonly userID?: string +} & Record + +type ZAIImageBody = Record & { + readonly model: string + readonly prompt: string +} + +const ZAIImageResponse = Schema.Struct({ + created: Schema.optional(Schema.Int), + id: Schema.optional(Schema.String), + request_id: Schema.optional(Schema.String), + data: Schema.Array(Schema.Struct({ url: Schema.String })), + content_filter: Schema.optional( + Schema.Array( + Schema.Struct({ + role: Schema.optional(Schema.String), + level: Schema.optional(Schema.Number), + }), + ), + ), +}) + +export interface ModelInput { + readonly id: string + readonly auth: AuthDefinition + readonly baseURL?: string + readonly headers?: Record + readonly http?: HttpOptions +} + +const nativeOptions = (options: ZAIImageOptions | undefined) => { + if (!options) return undefined + const { userID, ...native } = options + return { + user_id: userID, + ...native, + } +} + +const invalidOutput = (message: string) => + new LLMError({ + module: ADAPTER, + method: "generate", + reason: new InvalidProviderOutputReason({ message, route: ADAPTER }), + }) + +const applyQuery = (url: string, query: Record | undefined) => { + if (!query) return url + const next = new URL(url) + Object.entries(query).forEach(([key, value]) => next.searchParams.set(key, value)) + return next.toString() +} + +export const model = (input: ModelInput) => { + const route: ImageRoute = { + id: ADAPTER, + generate: Effect.fn("ZAIImages.generate")(function* (request: ImageRequestFor, execute) { + if ((request.images?.length ?? 0) > 0) + return yield* ImageInputs.invalid(ADAPTER, "Z.ai hosted image generation does not support image inputs") + const http = mergeHttpOptions(request.model.http, request.http) + const requestBody = mergeJsonRecords( + { model: request.model.id, prompt: request.prompt }, + nativeOptions(request.options), + http?.body, + ) as ZAIImageBody + const text = ProviderShared.encodeJson(requestBody) + const url = applyQuery(`${(input.baseURL ?? DEFAULT_BASE_URL).replace(/\/$/, "")}${PATH}`, http?.query) + const headers = yield* Auth.toEffect(input.auth)({ + request, + method: "POST", + url, + body: text, + headers: Headers.fromInput({ ...input.headers, ...http?.headers }), + }) + const response = yield* execute( + HttpClientRequest.post(url).pipe( + HttpClientRequest.setHeaders(headers), + HttpClientRequest.bodyText(text, "application/json"), + ), + ) + const payload = yield* response.json.pipe( + Effect.mapError(() => invalidOutput("Failed to read the Z.ai Images response")), + ) + const decoded = yield* Schema.decodeUnknownEffect(ZAIImageResponse)(payload).pipe( + Effect.mapError(() => invalidOutput("Z.ai Images returned an invalid response")), + ) + if (decoded.data.length === 0) return yield* invalidOutput("Z.ai Images returned no images") + return new ImageResponse({ + images: decoded.data.map( + (item) => + new GeneratedImage({ + mediaType: "application/octet-stream", + data: item.url, + }), + ), + providerMetadata: { + zai: { + created: decoded.created, + id: decoded.id, + requestID: decoded.request_id, + contentFilter: decoded.content_filter, + }, + }, + }) + }), + } + return ImageModel.make({ id: input.id, provider: "zai", route, http: input.http }) +} + +export const ZAIImages = { + model, +} as const diff --git a/packages/ai/src/provider-error.ts b/packages/ai/src/provider-error.ts new file mode 100644 index 000000000000..963c7599cf7a --- /dev/null +++ b/packages/ai/src/provider-error.ts @@ -0,0 +1,165 @@ +import { Option, Schema } from "effect" +import { + AuthenticationReason, + ContentPolicyReason, + InvalidRequestReason, + LLMError, + ProviderErrorEvent, + ProviderInternalReason, + QuotaExceededReason, + RateLimitReason, + UnknownProviderReason, + type HttpContext, + type HttpRateLimitDetails, + type ProviderMetadata, +} from "./schema" + +const patterns = [ + /prompt is too long/i, + /request_too_large/i, + /input is too long for requested model/i, + /exceeds the context window/i, + /exceeds (?:the )?(?:model'?s )?maximum context length(?: of [\d,]+ tokens?|\s*\([\d,]+\))/i, + /input token count.*exceeds the maximum/i, + /tokens in request more than max tokens allowed/i, + /maximum prompt length is \d+/i, + /reduce the length of the messages/i, + /maximum context length is \d+ tokens/i, + /exceeds (?:the )?maximum allowed input length of [\d,]+ tokens?/i, + /input \(\d+ tokens\) is longer than the model'?s context length \(\d+ tokens\)/i, + /exceeds the limit of \d+/i, + /exceeds the available context size/i, + /greater than the context length/i, + /context window exceeds limit/i, + /exceeded model token limit/i, + /context[_ ]length[_ ]exceeded/i, + /request entity too large/i, + /context length is only \d+ tokens/i, + /input length.*exceeds.*context length/i, + /prompt too long; exceeded (?:max )?context length/i, + /too large for model with \d+ maximum context length/i, + /prompt has [\d,]+ tokens?, but the configured context size is [\d,]+ tokens?/i, + /model_context_window_exceeded/i, + /too many tokens/i, + /token limit exceeded/i, +] + +const exclusions = [/^(throttling error|service unavailable):/i, /rate limit/i, /too many requests/i] + +export const isContextOverflow = (message: string) => + !exclusions.some((pattern) => pattern.test(message)) && + (patterns.some((pattern) => pattern.test(message)) || /^4(00|13)\s*(status code)?\s*\(no body\)/i.test(message)) + +export const isContextOverflowFailure = (failure: unknown) => + failure instanceof LLMError + ? failure.reason._tag === "InvalidRequest" && failure.reason.classification === "context-overflow" + : Schema.is(ProviderErrorEvent)(failure) && failure.classification === "context-overflow" + +const decodeJson = Schema.decodeUnknownOption(Schema.UnknownFromJsonString) +const QUOTA_CODES = new Set(["insufficient_quota", "usage_not_included", "billing_error"]) +const SERVER_CODES = new Set([ + "api_error", + "internal_error", + "internalserverexception", + "modelstreamerrorexception", + "overloaded_error", + "server_error", + "server_is_overloaded", + "serviceunavailableexception", +]) +const INVALID_REQUEST_CODES = new Set(["invalid_prompt", "invalid_request_error", "validationexception"]) +const RATE_LIMIT_TEXT = /rate increased too quickly|rate[-_\s]?limit|too[_\s]?many[_\s]?requests/i +const QUOTA_TEXT = /insufficient[-_\s]?quota|quota[-_\s]?exceeded/i +const CONTENT_POLICY_TEXT = /content[-_\s]?policy|content_filter|safety/i + +export interface ProviderFailure { + readonly message: string + readonly status?: number | undefined + readonly code?: string | undefined + readonly retryAfterMs?: number | undefined + readonly rateLimit?: HttpRateLimitDetails | undefined + readonly http?: HttpContext | undefined + readonly providerMetadata?: ProviderMetadata | undefined +} + +// Keep HTTP failures and provider-reported stream failures on one typed path so +// session retry policy never needs provider-specific string matching. +export function classifyProviderFailure(input: ProviderFailure): LLMError["reason"] { + const body = input.http?.body ?? "" + const codes = [input.code, ...providerCodes(body), ...providerCodes(input.message)] + .filter((code): code is string => code !== undefined) + .map((code) => code.toLowerCase()) + const text = body || input.message + const common = { message: input.message, providerMetadata: input.providerMetadata, http: input.http } + const clientScoped = input.status === undefined || (input.status >= 400 && input.status < 500) + + if ( + clientScoped && + (codes.includes("context_length_exceeded") || + codes.includes("model_context_window_exceeded") || + isContextOverflow(text)) + ) + return new InvalidRequestReason({ ...common, classification: "context-overflow" }) + if (CONTENT_POLICY_TEXT.test(text)) return new ContentPolicyReason(common) + if (codes.some((code) => QUOTA_CODES.has(code)) || (input.status === 429 && QUOTA_TEXT.test(text))) + return new QuotaExceededReason(common) + if (input.status === 401) return new AuthenticationReason({ ...common, kind: "invalid" }) + if (input.status === 403) return new AuthenticationReason({ ...common, kind: "insufficient-permissions" }) + if (codes.includes("authentication_error")) return new AuthenticationReason({ ...common, kind: "invalid" }) + if (codes.includes("permission_error")) + return new AuthenticationReason({ ...common, kind: "insufficient-permissions" }) + if ( + codes.some((code) => code.includes("rate_limit") || code === "too_many_requests" || code === "throttlingexception") + ) + return new RateLimitReason({ + ...common, + retryAfterMs: input.retryAfterMs, + rateLimit: input.rateLimit, + }) + if (RATE_LIMIT_TEXT.test(text)) + return new RateLimitReason({ + ...common, + retryAfterMs: input.retryAfterMs, + rateLimit: input.rateLimit, + }) + if (codes.some((code) => SERVER_CODES.has(code) || code.includes("exhausted") || code.includes("unavailable"))) + return new ProviderInternalReason({ + ...common, + status: input.status, + retryAfterMs: input.retryAfterMs, + }) + if (input.status === 429) { + return new RateLimitReason({ + ...common, + retryAfterMs: input.retryAfterMs, + rateLimit: input.rateLimit, + }) + } + if (input.status !== undefined && input.status >= 500) + return new ProviderInternalReason({ + ...common, + status: input.status, + retryAfterMs: input.retryAfterMs, + }) + if (codes.some((code) => INVALID_REQUEST_CODES.has(code))) return new InvalidRequestReason(common) + if ( + input.status === 400 || + input.status === 404 || + input.status === 409 || + input.status === 413 || + input.status === 422 + ) + return new InvalidRequestReason(common) + return new UnknownProviderReason({ ...common, status: input.status }) +} + +function providerCodes(value: string) { + const decoded = Option.getOrUndefined(decodeJson(value)) + if (!isRecord(decoded)) return [] + const error = isRecord(decoded.error) ? decoded.error : undefined + return [decoded.code, error?.code, error?.type].filter((value): value is string => typeof value === "string") +} + +function isRecord(value: unknown): value is Record { + return typeof value === "object" && value !== null +} diff --git a/packages/ai/src/provider-package.ts b/packages/ai/src/provider-package.ts new file mode 100644 index 000000000000..fd878a9d06ce --- /dev/null +++ b/packages/ai/src/provider-package.ts @@ -0,0 +1,16 @@ +import type { Model } from "./schema" + +export interface Settings extends Readonly> { + readonly headers?: Readonly> + readonly body?: Readonly> + readonly limits?: { + readonly context: number + readonly output: number + } +} + +export interface Definition { + readonly model: (modelID: string, settings: ProviderSettings) => Model +} + +export * as ProviderPackage from "./provider-package" diff --git a/packages/ai/src/provider.ts b/packages/ai/src/provider.ts new file mode 100644 index 000000000000..c0406f3da02d --- /dev/null +++ b/packages/ai/src/provider.ts @@ -0,0 +1,36 @@ +import type { Model, ModelID, ProviderID } from "./schema" + +export type ModelOptions = Pick + +/** + * Advanced structural provider definition helper. Built-in providers should + * prefer explicit `configure(options).model(id)` facades so deployment config is + * chosen before model selection. The optional `apis` map remains for external + * structural providers that expose multiple route selectors behind one provider. + */ +export type ModelFactory = ( + id: string | ModelID, + options?: Options, +) => Model + +type AnyModelFactory = (...args: never[]) => Model + +export interface Definition { + readonly id: ProviderID + readonly model: Factory + readonly apis?: Record +} + +type DefinitionShape = { + readonly id: ProviderID + readonly model: (...args: never[]) => Model + readonly apis?: Record Model> +} + +type NoExtraFields = Input & Record, never> + +export const make = ( + definition: NoExtraFields, +) => definition + +export * as Provider from "./provider" diff --git a/packages/ai/src/providers.ts b/packages/ai/src/providers.ts new file mode 100644 index 000000000000..e43654f0548b --- /dev/null +++ b/packages/ai/src/providers.ts @@ -0,0 +1 @@ +export * from "./providers/index" diff --git a/packages/ai/src/providers/amazon-bedrock.ts b/packages/ai/src/providers/amazon-bedrock.ts new file mode 100644 index 000000000000..4e5040c9ec00 --- /dev/null +++ b/packages/ai/src/providers/amazon-bedrock.ts @@ -0,0 +1,68 @@ +import type { RouteDefaultsInput } from "../route/client" +import { Auth } from "../route/auth" +import type { ProviderPackage } from "../provider-package" +import { ProviderID, type ModelID } from "../schema" +import * as BedrockConverse from "../protocols/bedrock-converse" +import type { BedrockCredentials } from "../protocols/bedrock-converse" + +export const id = ProviderID.make("amazon-bedrock") + +export type Config = RouteDefaultsInput & { + readonly apiKey?: string + readonly headers?: Record + readonly credentials?: BedrockCredentials + /** AWS region. Defaults to `us-east-1` when neither this nor `credentials.region` is set. */ + readonly region?: string + /** Override the computed `https://bedrock-runtime..amazonaws.com` URL. */ + readonly baseURL?: string +} + +export interface Settings extends ProviderPackage.Settings { + readonly apiKey?: string + readonly auth?: "bearer" | "sigv4" + readonly baseURL?: string + readonly credentials?: BedrockCredentials + readonly region?: string + readonly topP?: number +} +export const routes = [BedrockConverse.route] + +const bedrockBaseURL = (region: string) => `https://bedrock-runtime.${region}.amazonaws.com` + +const configuredRoute = (input: Config) => { + const { apiKey, credentials, region, baseURL, ...rest } = input + const resolvedRegion = region ?? credentials?.region ?? "us-east-1" + return BedrockConverse.route.with({ + ...rest, + provider: id, + endpoint: { baseURL: baseURL ?? bedrockBaseURL(resolvedRegion) }, + auth: apiKey === undefined ? BedrockConverse.sigV4Auth(credentials) : Auth.bearer(apiKey), + }) +} + +export const configure = (input: Config = {}) => { + const route = configuredRoute(input) + return { + id, + model: (modelID: string | ModelID) => route.model({ id: modelID }), + configure, + } +} + +export const provider = configure() +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => { + if (settings.auth === "bearer" && settings.apiKey === undefined) + throw new Error("Amazon Bedrock bearer auth requires apiKey") + if (settings.auth === "sigv4" && settings.apiKey !== undefined) + throw new Error("Amazon Bedrock SigV4 auth does not accept apiKey") + return configure({ + apiKey: settings.auth === "sigv4" ? undefined : settings.apiKey, + baseURL: settings.baseURL, + credentials: settings.credentials, + generation: settings.topP === undefined ? undefined : { topP: settings.topP }, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + region: settings.region, + }).model(modelID) +} diff --git a/packages/ai/src/providers/anthropic-compatible.ts b/packages/ai/src/providers/anthropic-compatible.ts new file mode 100644 index 000000000000..56cc7cee3229 --- /dev/null +++ b/packages/ai/src/providers/anthropic-compatible.ts @@ -0,0 +1,74 @@ +import type { ProviderPackage } from "../provider-package" +import { AnthropicMessages } from "../protocols/anthropic-messages" +import { Auth } from "../route/auth" +import type { ProviderAuthOption } from "../route/auth-options" +import type { RouteDefaultsInput } from "../route/client" +import { ProviderID, type ModelID } from "../schema" + +export type AnthropicOptionsInput = AnthropicMessages.OptionsInput +export type AnthropicProviderOptionsInput = AnthropicMessages.ProviderOptionsInput +export type AnthropicThinkingInput = AnthropicMessages.ThinkingInput + +export const id = ProviderID.make("anthropic-compatible") + +export type Config = RouteDefaultsInput & + ProviderAuthOption<"optional"> & { + readonly provider?: string + readonly baseURL: string + readonly providerOptions?: AnthropicMessages.ProviderOptionsInput + } + +export type Settings = ProviderPackage.Settings & + ( + | { readonly apiKey?: string; readonly authToken?: never } + | { readonly apiKey?: never; readonly authToken?: string } + ) & { + readonly baseURL: string + readonly provider?: string + readonly providerOptions?: AnthropicMessages.ProviderOptionsInput + } + +export const routes = [AnthropicMessages.route] + +const auth = (input: ProviderAuthOption<"optional">) => { + if ("auth" in input && input.auth) return input.auth + return Auth.optional("apiKey" in input ? input.apiKey : undefined, "apiKey").pipe(Auth.header("x-api-key")) +} + +export const configure = (input: Config) => { + if (!input.baseURL) throw new Error("Anthropic-compatible providers require a baseURL") + const provider = input.provider ?? "anthropic-compatible" + const { provider: _, baseURL, apiKey: _apiKey, auth: _auth, ...rest } = input + const route = AnthropicMessages.route.with({ + ...rest, + provider, + endpoint: { baseURL }, + auth: auth(input), + }) + return { + id: ProviderID.make(provider), + model: (modelID: string | ModelID) => route.model({ id: modelID }), + configure, + } +} + +export const provider = { + id, + configure, +} + +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => { + if (settings.apiKey !== undefined && settings.authToken !== undefined) + throw new Error("Anthropic-compatible apiKey cannot be combined with authToken") + return configure({ + ...(settings.authToken === undefined ? { apiKey: settings.apiKey } : { auth: Auth.bearer(settings.authToken) }), + baseURL: settings.baseURL, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + provider: settings.provider, + providerOptions: settings.providerOptions, + }).model(modelID) +} + +export * as AnthropicCompatible from "./anthropic-compatible" diff --git a/packages/ai/src/providers/anthropic.ts b/packages/ai/src/providers/anthropic.ts new file mode 100644 index 000000000000..eb175ec50c69 --- /dev/null +++ b/packages/ai/src/providers/anthropic.ts @@ -0,0 +1,66 @@ +import type { RouteDefaultsInput } from "../route/client" +import { Auth } from "../route/auth" +import type { ProviderAuthOption } from "../route/auth-options" +import type { ProviderPackage } from "../provider-package" +import { ProviderID, type ModelID } from "../schema" +import { AnthropicMessages } from "../protocols/anthropic-messages" +import { AnthropicCompatible } from "./anthropic-compatible" + +export type AnthropicOptionsInput = AnthropicMessages.OptionsInput +export type AnthropicProviderOptionsInput = AnthropicMessages.ProviderOptionsInput +export type AnthropicThinkingInput = AnthropicMessages.ThinkingInput + +export const id = ProviderID.make("anthropic") + +export const routes = [AnthropicMessages.route] + +export type Config = RouteDefaultsInput & + ProviderAuthOption<"optional"> & { + readonly baseURL?: string + readonly providerOptions?: AnthropicMessages.ProviderOptionsInput + } + +export type Settings = ProviderPackage.Settings & + ( + | { readonly apiKey?: string; readonly authToken?: never } + | { readonly apiKey?: never; readonly authToken?: string } + ) & { + readonly baseURL?: string + readonly providerOptions?: AnthropicMessages.ProviderOptionsInput + } + +const auth = (options: ProviderAuthOption<"optional">) => { + if ("auth" in options && options.auth) return options.auth + return Auth.optional("apiKey" in options ? options.apiKey : undefined, "apiKey") + .orElse(Auth.config("ANTHROPIC_API_KEY")) + .pipe(Auth.header("x-api-key")) +} + +export const configure = (input: Config = {}) => { + const { apiKey: _, auth: _auth, baseURL, ...rest } = input + const compatible = AnthropicCompatible.configure({ + ...rest, + auth: auth(input), + baseURL: baseURL ?? AnthropicMessages.DEFAULT_BASE_URL, + provider: id, + }) + return { + id, + model: (modelID: string | ModelID) => compatible.model(modelID), + configure, + } +} + +export const provider = configure() +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => { + if (settings.apiKey !== undefined && settings.authToken !== undefined) + throw new Error("Anthropic apiKey cannot be combined with authToken") + return configure({ + ...(settings.authToken === undefined ? { apiKey: settings.apiKey } : { auth: Auth.bearer(settings.authToken) }), + baseURL: settings.baseURL, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + providerOptions: settings.providerOptions, + }).model(modelID) +} diff --git a/packages/ai/src/providers/azure.ts b/packages/ai/src/providers/azure.ts new file mode 100644 index 000000000000..dd0691a53913 --- /dev/null +++ b/packages/ai/src/providers/azure.ts @@ -0,0 +1,140 @@ +import { Auth } from "../route/auth" +import { type AtLeastOne, type ProviderAuthOption } from "../route/auth-options" +import type { Route as RouteDef, RouteDefaultsInput } from "../route/client" +import type { ProviderPackage } from "../provider-package" +import { ProviderID, type ModelID } from "../schema" +import * as OpenAIChat from "../protocols/openai-chat" +import * as OpenAIResponses from "../protocols/openai-responses" +import { withOpenAIOptions, type OpenAIProviderOptionsInput } from "./openai-options" + +export const id = ProviderID.make("azure") +const routeAuth = Auth.remove("authorization") + +// Azure needs the customer's resource URL; supply either `resourceName` +// (helper builds the URL) or `baseURL` directly. +type AzureURL = AtLeastOne<{ readonly resourceName: string; readonly baseURL: string }> + +export type ModelOptions = AzureURL & + RouteDefaultsInput & + ProviderAuthOption<"optional"> & { + readonly apiVersion?: string + readonly queryParams?: Record + readonly useCompletionUrls?: boolean + readonly providerOptions?: OpenAIProviderOptionsInput + } +export type Config = ModelOptions + +export type Settings = ProviderPackage.Settings & + AzureURL & { + readonly apiKey?: string + readonly apiVersion?: string + readonly queryParams?: Readonly> + readonly providerOptions?: OpenAIProviderOptionsInput + } + +const resourceBaseURL = (resourceName: string) => `https://${resourceName.trim()}.openai.azure.com/openai/v1` + +const responsesRoute = OpenAIResponses.route.with({ + id: "azure-openai-responses", + provider: id, + auth: routeAuth, + endpoint: { + query: { "api-version": "v1" }, + }, +}) + +const chatRoute = OpenAIChat.route.with({ + id: "azure-openai-chat", + provider: id, + auth: routeAuth, + endpoint: { + query: { "api-version": "v1" }, + }, +}) + +export const routes = [responsesRoute, chatRoute] + +const defaults = (input: Config) => { + const { + apiKey: _, + apiVersion: _apiVersion, + resourceName: _resourceName, + useCompletionUrls: _useCompletionUrls, + baseURL: _baseURL, + queryParams: _queryParams, + ...rest + } = input + if ("auth" in rest) { + const { auth: _, ...withoutAuth } = rest + return withoutAuth + } + return rest +} + +const auth = (input: Config) => { + if ("auth" in input && input.auth) return input.auth + return Auth.remove("authorization").andThen( + Auth.optional("apiKey" in input ? input.apiKey : undefined, "apiKey") + .orElse(Auth.config("AZURE_OPENAI_API_KEY")) + .pipe(Auth.header("api-key")), + ) +} + +const configuredRoute = (route: RouteDef, input: Config) => + route.with({ + auth: auth(input), + endpoint: { + // AtLeastOne guarantees at least one is set; baseURL wins if both are. + baseURL: input.baseURL ?? resourceBaseURL(input.resourceName!), + query: { + ...(input.apiVersion ? { "api-version": input.apiVersion } : {}), + ...input.queryParams, + }, + }, + }) + +export const configure = (input: Config) => { + const configuredResponsesRoute = configuredRoute(responsesRoute, input) + const configuredChatRoute = configuredRoute(chatRoute, input) + const modelDefaults = defaults(input) + + const responses = (modelID: string | ModelID) => + configuredResponsesRoute.with(withOpenAIOptions(modelID, modelDefaults)).model({ id: modelID }) + + const chat = (modelID: string | ModelID) => + configuredChatRoute.with(withOpenAIOptions(modelID, modelDefaults)).model({ id: modelID }) + + return { + id, + model: (modelID: string | ModelID) => (input.useCompletionUrls === true ? chat(modelID) : responses(modelID)), + responses, + chat, + configure, + } +} + +export const provider = { + id, + configure, +} + +const config = (settings: Settings): Config => { + const common = { + apiKey: settings.apiKey, + apiVersion: settings.apiVersion, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + providerOptions: settings.providerOptions, + queryParams: settings.queryParams === undefined ? undefined : { ...settings.queryParams }, + } + if (settings.baseURL !== undefined) return { ...common, baseURL: settings.baseURL } + if (settings.resourceName !== undefined) return { ...common, resourceName: settings.resourceName } + throw new Error("Azure requires resourceName or baseURL") +} + +export const responsesModel: ProviderPackage.Definition["model"] = (modelID, settings) => + configure(config(settings)).responses(modelID) +export const chatModel: ProviderPackage.Definition["model"] = (modelID, settings) => + configure(config(settings)).chat(modelID) +export const model = responsesModel diff --git a/packages/ai/src/providers/azure/chat.ts b/packages/ai/src/providers/azure/chat.ts new file mode 100644 index 000000000000..ff3e474332ec --- /dev/null +++ b/packages/ai/src/providers/azure/chat.ts @@ -0,0 +1,2 @@ +export { chatModel as model } from "../azure" +export type { Settings } from "../azure" diff --git a/packages/ai/src/providers/azure/responses.ts b/packages/ai/src/providers/azure/responses.ts new file mode 100644 index 000000000000..e7b8ab15ae4e --- /dev/null +++ b/packages/ai/src/providers/azure/responses.ts @@ -0,0 +1,2 @@ +export { responsesModel as model } from "../azure" +export type { Settings } from "../azure" diff --git a/packages/llm/src/providers/cloudflare.ts b/packages/ai/src/providers/cloudflare.ts similarity index 100% rename from packages/llm/src/providers/cloudflare.ts rename to packages/ai/src/providers/cloudflare.ts diff --git a/packages/llm/src/providers/github-copilot.ts b/packages/ai/src/providers/github-copilot.ts similarity index 82% rename from packages/llm/src/providers/github-copilot.ts rename to packages/ai/src/providers/github-copilot.ts index fa6bba74229c..cc776d3b15f4 100644 --- a/packages/llm/src/providers/github-copilot.ts +++ b/packages/ai/src/providers/github-copilot.ts @@ -12,10 +12,12 @@ export const id = ProviderID.make("github-copilot") export type ModelOptions = Omit & ProviderAuthOption<"optional"> & { readonly baseURL: string + readonly endpoint?: "chat" | "responses" readonly providerOptions?: OpenAIProviderOptionsInput } -export const shouldUseResponsesApi = (modelID: string | ModelID) => { +export const shouldUseResponsesApi = (modelID: string | ModelID, endpoint?: ModelOptions["endpoint"]) => { + if (endpoint) return endpoint === "responses" const model = String(modelID) const match = /^gpt-(\d+)/.exec(model) if (!match) return false @@ -28,7 +30,7 @@ const chatRoute = OpenAIChat.route.with({ provider: id }) const responsesRoute = OpenAIResponses.route.with({ provider: id }) const defaults = (options: ModelOptions) => { - const { apiKey: _, auth: _auth, baseURL: _baseURL, ...rest } = options + const { apiKey: _, auth: _auth, baseURL: _baseURL, endpoint: _endpoint, ...rest } = options return rest } @@ -53,7 +55,8 @@ export const configure = (options: ModelOptions) => { chatRoute.with(withOpenAIOptions(modelID, defaults(options))).model({ id: modelID }) return { id, - model: (modelID: string | ModelID) => (shouldUseResponsesApi(modelID) ? responses(modelID) : chat(modelID)), + model: (modelID: string | ModelID) => + shouldUseResponsesApi(modelID, options.endpoint) ? responses(modelID) : chat(modelID), responses, chat, configure, diff --git a/packages/ai/src/providers/google-vertex-chat.ts b/packages/ai/src/providers/google-vertex-chat.ts new file mode 100644 index 000000000000..e2f9c1a41577 --- /dev/null +++ b/packages/ai/src/providers/google-vertex-chat.ts @@ -0,0 +1,81 @@ +import type { ProviderPackage } from "../provider-package" +import { OpenAICompatibleChat } from "../protocols/openai-compatible-chat" +import type { RouteDefaultsInput } from "../route/client" +import { ProviderID, type ModelID, type ProviderOptions } from "../schema" +import { GoogleVertexShared } from "./google-vertex-shared" + +export const id = ProviderID.make("google-vertex") + +export type Config = RouteDefaultsInput & + GoogleVertexShared.OAuthOptions & { + readonly baseURL?: string + readonly location?: string + readonly project?: string + } + +export interface Settings extends ProviderPackage.Settings { + readonly accessToken?: string + readonly apiKey?: never + readonly baseURL?: string + readonly location?: string + readonly project?: string + readonly providerOptions?: ProviderOptions +} + +const route = OpenAICompatibleChat.route.with({ + id: "google-vertex-chat", + provider: id, +}) + +export const routes = [route] + +const configuredRoute = (input: Config) => { + if ("apiKey" in input && input.apiKey !== undefined) throw new Error("Google Vertex Chat does not support API keys") + const { + accessToken: _accessToken, + auth: _auth, + baseURL, + location: inputLocation, + project: inputProject, + ...rest + } = input + const location = GoogleVertexShared.location(inputLocation, "global") + const project = GoogleVertexShared.project(inputProject) + return route.with({ + ...rest, + endpoint: { + baseURL: + baseURL ?? + `https://aiplatform.googleapis.com/v1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}/endpoints/openapi`, + }, + auth: GoogleVertexShared.oauth(input, project), + }) +} + +export const configure = (input: Config = {}) => { + const route = configuredRoute(input) + return { + id, + model: (modelID: string | ModelID) => route.model({ id: modelID }), + configure, + } +} + +export const provider = { + id, + configure, +} + +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => { + if (settings.apiKey !== undefined) throw new Error("Google Vertex Chat does not support API keys") + return configure({ + accessToken: settings.accessToken, + baseURL: settings.baseURL, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + location: settings.location, + project: settings.project, + providerOptions: settings.providerOptions, + }).model(modelID) +} diff --git a/packages/ai/src/providers/google-vertex-messages.ts b/packages/ai/src/providers/google-vertex-messages.ts new file mode 100644 index 000000000000..53c4e16b0d02 --- /dev/null +++ b/packages/ai/src/providers/google-vertex-messages.ts @@ -0,0 +1,116 @@ +import { Effect, Schema, Struct } from "effect" +import type { ProviderPackage } from "../provider-package" +import { AnthropicMessages } from "../protocols/anthropic-messages" +import { Auth } from "../route/auth" +import { Route, type RouteDefaultsInput } from "../route/client" +import { Endpoint } from "../route/endpoint" +import { Framing } from "../route/framing" +import { Protocol } from "../route/protocol" +import { ProviderID, type ModelID } from "../schema" +import { GoogleVertexShared } from "./google-vertex-shared" + +export type AnthropicOptionsInput = AnthropicMessages.OptionsInput +export type AnthropicProviderOptionsInput = AnthropicMessages.ProviderOptionsInput +export type AnthropicThinkingInput = AnthropicMessages.ThinkingInput + +const VERSION = "vertex-2023-10-16" as const + +// models.dev uses this provider id even though the API contract is Anthropic Messages. +export const id = ProviderID.make("google-vertex-anthropic") + +export type Config = RouteDefaultsInput & + GoogleVertexShared.OAuthOptions & { + readonly baseURL?: string + readonly location?: string + readonly project?: string + readonly providerOptions?: AnthropicMessages.ProviderOptionsInput + } + +export interface Settings extends ProviderPackage.Settings { + readonly accessToken?: string + readonly apiKey?: never + readonly baseURL?: string + readonly location?: string + readonly project?: string + readonly providerOptions?: AnthropicMessages.ProviderOptionsInput +} + +const route = Route.make({ + id: "google-vertex-messages", + provider: id, + providerMetadataKey: "anthropic", + protocol: Protocol.make({ + id: AnthropicMessages.protocol.id, + body: { + schema: Schema.Struct({ + ...Struct.omit(AnthropicMessages.AnthropicMessagesBody.fields, ["model"]), + anthropic_version: Schema.Literal(VERSION), + }), + from: (request) => + AnthropicMessages.protocol.body.from(request).pipe( + Effect.map((body) => ({ + ...Struct.omit(body, ["model"]), + anthropic_version: VERSION, + })), + ), + }, + stream: AnthropicMessages.protocol.stream, + }), + endpoint: Endpoint.path(({ request }) => `/${request.model.id}:streamRawPredict`), + auth: Auth.none, + framing: Framing.sse, +}) + +export const routes = [route] + +const configuredRoute = (input: Config) => { + if ("apiKey" in input && input.apiKey !== undefined) + throw new Error("Google Vertex Messages does not support API keys") + const { + accessToken: _accessToken, + auth: _auth, + baseURL, + location: inputLocation, + project: inputProject, + ...rest + } = input + const location = GoogleVertexShared.location(inputLocation, "global") + const project = GoogleVertexShared.project(inputProject) + return route.with({ + ...rest, + endpoint: { + baseURL: + baseURL ?? + `https://${GoogleVertexShared.host(location)}/v1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}/publishers/anthropic/models`, + }, + auth: GoogleVertexShared.oauth(input, project), + }) +} + +export const configure = (input: Config = {}) => { + const route = configuredRoute(input) + return { + id, + model: (modelID: string | ModelID) => route.model({ id: modelID }), + configure, + } +} + +export const provider = { + id, + configure, +} + +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => { + if (settings.apiKey !== undefined) throw new Error("Google Vertex Messages does not support API keys") + return configure({ + accessToken: settings.accessToken, + baseURL: settings.baseURL, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + location: settings.location, + project: settings.project, + providerOptions: settings.providerOptions, + }).model(modelID) +} diff --git a/packages/ai/src/providers/google-vertex-responses.ts b/packages/ai/src/providers/google-vertex-responses.ts new file mode 100644 index 000000000000..e36c67472c1a --- /dev/null +++ b/packages/ai/src/providers/google-vertex-responses.ts @@ -0,0 +1,83 @@ +import type { ProviderPackage } from "../provider-package" +import { OpenAICompatibleResponses } from "../protocols/openai-compatible-responses" +import type { RouteDefaultsInput } from "../route/client" +import { ProviderID, type ModelID, type ProviderOptions } from "../schema" +import { GoogleVertexShared } from "./google-vertex-shared" + +export const id = ProviderID.make("google-vertex") + +export type Config = RouteDefaultsInput & + GoogleVertexShared.OAuthOptions & { + readonly baseURL?: string + readonly location?: string + readonly project?: string + } + +export interface Settings extends ProviderPackage.Settings { + readonly accessToken?: string + readonly apiKey?: never + readonly baseURL?: string + readonly location?: string + readonly project?: string + readonly providerOptions?: ProviderOptions +} + +const route = OpenAICompatibleResponses.route.with({ + id: "google-vertex-responses", + provider: id, + providerOptions: { openresponses: { store: false } }, +}) + +export const routes = [route] + +const configuredRoute = (input: Config) => { + if ("apiKey" in input && input.apiKey !== undefined) + throw new Error("Google Vertex Responses does not support API keys") + const { + accessToken: _accessToken, + auth: _auth, + baseURL, + location: inputLocation, + project: inputProject, + ...rest + } = input + const location = GoogleVertexShared.location(inputLocation, "global") + const project = GoogleVertexShared.project(inputProject) + return route.with({ + ...rest, + endpoint: { + baseURL: + baseURL ?? + `https://aiplatform.googleapis.com/v1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}/endpoints/openapi`, + }, + auth: GoogleVertexShared.oauth(input, project), + }) +} + +export const configure = (input: Config = {}) => { + const route = configuredRoute(input) + return { + id, + model: (modelID: string | ModelID) => route.model({ id: modelID }), + configure, + } +} + +export const provider = { + id, + configure, +} + +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => { + if (settings.apiKey !== undefined) throw new Error("Google Vertex Responses does not support API keys") + return configure({ + accessToken: settings.accessToken, + baseURL: settings.baseURL, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + location: settings.location, + project: settings.project, + providerOptions: settings.providerOptions, + }).model(modelID) +} diff --git a/packages/ai/src/providers/google-vertex-shared.ts b/packages/ai/src/providers/google-vertex-shared.ts new file mode 100644 index 000000000000..cd8a4168e6c8 --- /dev/null +++ b/packages/ai/src/providers/google-vertex-shared.ts @@ -0,0 +1,77 @@ +import type { AnyAuthClient } from "google-auth-library" +import { Effect, Redacted } from "effect" +import { Auth, MissingCredentialError } from "../route/auth" + +const SCOPE = "https://www.googleapis.com/auth/cloud-platform" + +export type OAuthOptions = + | { readonly accessToken?: string; readonly auth?: never } + | { readonly accessToken?: never; readonly auth?: Auth.Definition } + +export type ApiKeyOptions = + | (OAuthOptions & { readonly apiKey?: never }) + | { readonly accessToken?: never; readonly apiKey?: string; readonly auth?: never } + +export const project = (value?: string) => + value ?? + process.env.GOOGLE_VERTEX_PROJECT ?? + process.env.GOOGLE_CLOUD_PROJECT ?? + process.env.GCP_PROJECT ?? + process.env.GCLOUD_PROJECT + +export const location = (value: string | undefined, fallback: string) => + value ?? + process.env.GOOGLE_VERTEX_LOCATION ?? + process.env.GOOGLE_CLOUD_LOCATION ?? + process.env.VERTEX_LOCATION ?? + fallback + +export const host = (location: string) => { + if (location === "global") return "aiplatform.googleapis.com" + // Jurisdictional multi-regions use Regional Endpoint Platform domains. + if (location === "eu" || location === "us") return `aiplatform.${location}.rep.googleapis.com` + return `${location}-aiplatform.googleapis.com` +} + +export const requireProject = (value: string | undefined) => { + if (value) return value + throw new Error("Google Vertex requires a project when baseURL is not configured") +} + +export const apiKey = (input: ApiKeyOptions) => { + if (input.apiKey !== undefined && (input.accessToken !== undefined || input.auth !== undefined)) + throw new Error("Google Vertex apiKey cannot be combined with accessToken or auth") + if (input.accessToken !== undefined || input.auth !== undefined) return undefined + return input.apiKey ?? process.env.GOOGLE_VERTEX_API_KEY +} + +const adc = (project?: string) => { + let client: Promise | undefined + const loadClient = () => { + if (client) return client + client = import("google-auth-library").then(({ GoogleAuth }) => + new GoogleAuth({ projectId: project, scopes: [SCOPE] }).getClient(), + ) + return client + } + return Auth.effect( + Effect.tryPromise({ + try: async () => { + const token = await (await loadClient()).getAccessToken() + if (!token.token) throw new Error("Google ADC returned an empty access token") + return Redacted.make(token.token) + }, + catch: () => new MissingCredentialError("Google Application Default Credentials"), + }), + ).bearer() +} + +export const oauth = (input: OAuthOptions, project?: string) => { + if (input.accessToken !== undefined && input.auth !== undefined) + throw new Error("Google Vertex accessToken cannot be combined with auth") + if (input.auth) return input.auth + if (input.accessToken !== undefined) return Auth.bearer(input.accessToken) + return adc(project) +} + +export * as GoogleVertexShared from "./google-vertex-shared" diff --git a/packages/ai/src/providers/google-vertex.ts b/packages/ai/src/providers/google-vertex.ts new file mode 100644 index 000000000000..78f4e0764da6 --- /dev/null +++ b/packages/ai/src/providers/google-vertex.ts @@ -0,0 +1,102 @@ +import type { ProviderPackage } from "../provider-package" +import { Gemini } from "../protocols/gemini" +import { Auth } from "../route/auth" +import { Route, type RouteDefaultsInput } from "../route/client" +import { Endpoint } from "../route/endpoint" +import { Framing } from "../route/framing" +import { ProviderID, type ModelID } from "../schema" +import { GoogleVertexShared } from "./google-vertex-shared" + +export type GeminiOptionsInput = Gemini.OptionsInput +export type GeminiProviderOptionsInput = Gemini.ProviderOptionsInput + +export const id = ProviderID.make("google-vertex") + +export type Config = RouteDefaultsInput & + GoogleVertexShared.ApiKeyOptions & { + readonly baseURL?: string + readonly location?: string + readonly project?: string + readonly providerOptions?: Gemini.ProviderOptionsInput + } + +export type Settings = ProviderPackage.Settings & + ( + | { readonly accessToken?: string; readonly apiKey?: never } + | { readonly accessToken?: never; readonly apiKey?: string } + ) & { + readonly baseURL?: string + readonly location?: string + readonly project?: string + readonly providerOptions?: Gemini.ProviderOptionsInput + } + +const route = Route.make({ + id: "google-vertex-gemini", + provider: id, + providerMetadataKey: "google", + protocol: Gemini.protocol, + endpoint: Endpoint.path(({ request }) => { + const model = String(request.model.id) + return `/${model.startsWith("endpoints/") ? model : `models/${model}`}:streamGenerateContent?alt=sse` + }), + auth: Auth.none, + framing: Framing.sse, +}) + +export const routes = [route] + +const configuredRoute = (input: Config, modelID: string | ModelID) => { + const { + accessToken: _accessToken, + apiKey: _apiKey, + auth: _auth, + baseURL, + location: inputLocation, + project: inputProject, + ...rest + } = input + const apiKey = GoogleVertexShared.apiKey(input) + const endpointModel = String(modelID).startsWith("endpoints/") + if (apiKey !== undefined && endpointModel) + throw new Error("Google Vertex tuned models do not support Express Mode API keys") + const location = GoogleVertexShared.location(inputLocation, "us-central1") + const project = GoogleVertexShared.project(inputProject) + const endpoint = + baseURL ?? + (apiKey + ? "https://aiplatform.googleapis.com/v1/publishers/google" + : `https://${GoogleVertexShared.host(location)}/v1beta1/projects/${GoogleVertexShared.requireProject(project)}/locations/${location}${endpointModel ? "" : "/publishers/google"}`) + return route.with({ + ...rest, + endpoint: { baseURL: endpoint }, + auth: apiKey === undefined ? GoogleVertexShared.oauth(input, project) : Auth.header("x-goog-api-key", apiKey), + }) +} + +export const configure = (input: Config = {}) => { + return { + id, + model: (modelID: string | ModelID) => configuredRoute(input, modelID).model({ id: modelID }), + configure, + } +} + +export const provider = { + id, + configure, +} +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => { + if (settings.apiKey !== undefined && settings.accessToken !== undefined) + throw new Error("Google Vertex apiKey cannot be combined with accessToken or auth") + return configure({ + ...(settings.apiKey === undefined ? { accessToken: settings.accessToken } : { apiKey: settings.apiKey }), + baseURL: settings.baseURL, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + location: settings.location, + project: settings.project, + providerOptions: settings.providerOptions, + }).model(modelID) +} diff --git a/packages/ai/src/providers/google-vertex/chat.ts b/packages/ai/src/providers/google-vertex/chat.ts new file mode 100644 index 000000000000..085e5e1a28ae --- /dev/null +++ b/packages/ai/src/providers/google-vertex/chat.ts @@ -0,0 +1,2 @@ +export { model } from "../google-vertex-chat" +export type { Settings } from "../google-vertex-chat" diff --git a/packages/ai/src/providers/google-vertex/gemini.ts b/packages/ai/src/providers/google-vertex/gemini.ts new file mode 100644 index 000000000000..d48c49351356 --- /dev/null +++ b/packages/ai/src/providers/google-vertex/gemini.ts @@ -0,0 +1,2 @@ +export { model } from "../google-vertex" +export type { Settings } from "../google-vertex" diff --git a/packages/ai/src/providers/google-vertex/messages.ts b/packages/ai/src/providers/google-vertex/messages.ts new file mode 100644 index 000000000000..0ef1b3a427b2 --- /dev/null +++ b/packages/ai/src/providers/google-vertex/messages.ts @@ -0,0 +1,2 @@ +export { model } from "../google-vertex-messages" +export type { Settings } from "../google-vertex-messages" diff --git a/packages/ai/src/providers/google-vertex/responses.ts b/packages/ai/src/providers/google-vertex/responses.ts new file mode 100644 index 000000000000..9ed9fd99db6c --- /dev/null +++ b/packages/ai/src/providers/google-vertex/responses.ts @@ -0,0 +1,2 @@ +export { model } from "../google-vertex-responses" +export type { Settings } from "../google-vertex-responses" diff --git a/packages/ai/src/providers/google.ts b/packages/ai/src/providers/google.ts new file mode 100644 index 000000000000..2c3476117c71 --- /dev/null +++ b/packages/ai/src/providers/google.ts @@ -0,0 +1,70 @@ +import type { RouteDefaultsInput } from "../route/client" +import { Auth } from "../route/auth" +import type { ProviderAuthOption } from "../route/auth-options" +import type { ProviderPackage } from "../provider-package" +import { HttpOptions, ProviderID, mergeHttpOptions, type ModelID } from "../schema" +import { Gemini } from "../protocols/gemini" +import { GoogleImages } from "../protocols/google-images" + +export type { GoogleImageOptions } from "../protocols/google-images" +export type GeminiOptionsInput = Gemini.OptionsInput +export type GeminiProviderOptionsInput = Gemini.ProviderOptionsInput + +export const id = ProviderID.make("google") + +export const routes = [Gemini.route] + +export type Config = RouteDefaultsInput & + ProviderAuthOption<"optional"> & { + readonly baseURL?: string + readonly providerOptions?: Gemini.ProviderOptionsInput + } + +export interface Settings extends ProviderPackage.Settings { + readonly apiKey?: string + readonly baseURL?: string + readonly providerOptions?: Gemini.ProviderOptionsInput +} + +const auth = (options: ProviderAuthOption<"optional">) => { + if ("auth" in options && options.auth) return options.auth + return Auth.optional("apiKey" in options ? options.apiKey : undefined, "apiKey") + .orElse(Auth.config("GOOGLE_GENERATIVE_AI_API_KEY")) + .pipe(Auth.header("x-goog-api-key")) +} + +const configuredRoute = (input: Config) => { + const { apiKey: _, auth: _auth, baseURL, ...rest } = input + return Gemini.route.with({ ...rest, endpoint: { baseURL }, auth: auth(input) }) +} + +export const configure = (input: Config = {}) => { + const route = configuredRoute(input) + const image = (modelID: string | ModelID) => + GoogleImages.model({ + id: modelID, + auth: auth(input), + baseURL: input.baseURL, + headers: input.headers, + http: mergeHttpOptions(input.http === undefined ? undefined : HttpOptions.make(input.http)), + }) + return { + id, + model: (modelID: string | ModelID) => route.model({ id: modelID }), + image, + configure, + } +} + +export const provider = configure() +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => + configure({ + apiKey: settings.apiKey, + baseURL: settings.baseURL, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + providerOptions: settings.providerOptions, + }).model(modelID) + +export const image = provider.image diff --git a/packages/ai/src/providers/index.ts b/packages/ai/src/providers/index.ts new file mode 100644 index 000000000000..8b794f9a3026 --- /dev/null +++ b/packages/ai/src/providers/index.ts @@ -0,0 +1,18 @@ +export * as Anthropic from "./anthropic" +export * as AnthropicCompatible from "./anthropic-compatible" +export * as AmazonBedrock from "./amazon-bedrock" +export * as Azure from "./azure" +export * as Cloudflare from "./cloudflare" +export { CloudflareAIGateway, CloudflareWorkersAI } from "./cloudflare" +export * as GitHubCopilot from "./github-copilot" +export * as Google from "./google" +export * as GoogleVertex from "./google-vertex" +export * as GoogleVertexChat from "./google-vertex-chat" +export * as GoogleVertexMessages from "./google-vertex-messages" +export * as GoogleVertexResponses from "./google-vertex-responses" +export * as OpenAI from "./openai" +export * as OpenAICompatible from "./openai-compatible" +export * as OpenAICompatibleResponses from "./openai-compatible-responses" +export * as OpenRouter from "./openrouter" +export * as XAI from "./xai" +export * as ZAI from "./zai" diff --git a/packages/ai/src/providers/open-responses-options.ts b/packages/ai/src/providers/open-responses-options.ts new file mode 100644 index 000000000000..686cdcb80836 --- /dev/null +++ b/packages/ai/src/providers/open-responses-options.ts @@ -0,0 +1,20 @@ +import type { ResponseIncludable, ServiceTier } from "../protocols/utils/open-responses-options" +import type { ProviderOptions, ReasoningEffort, TextVerbosity } from "../schema" + +export interface OpenResponsesOptionsInput { + readonly [key: string]: unknown + readonly instructions?: string + readonly store?: boolean + readonly promptCacheKey?: string + readonly reasoningEffort?: ReasoningEffort + readonly reasoningSummary?: "auto" | "concise" | "detailed" + readonly include?: ReadonlyArray + readonly textVerbosity?: TextVerbosity + readonly serviceTier?: ServiceTier +} + +export type OpenResponsesProviderOptionsInput = ProviderOptions & { + readonly openresponses?: OpenResponsesOptionsInput +} + +export * as OpenResponsesProviderOptions from "./open-responses-options" diff --git a/packages/llm/src/providers/openai-compatible-profile.ts b/packages/ai/src/providers/openai-compatible-profile.ts similarity index 100% rename from packages/llm/src/providers/openai-compatible-profile.ts rename to packages/ai/src/providers/openai-compatible-profile.ts diff --git a/packages/ai/src/providers/openai-compatible-responses.ts b/packages/ai/src/providers/openai-compatible-responses.ts new file mode 100644 index 000000000000..38293eb1d8de --- /dev/null +++ b/packages/ai/src/providers/openai-compatible-responses.ts @@ -0,0 +1,58 @@ +import type { ProviderPackage } from "../provider-package" +import { OpenAICompatibleResponses } from "../protocols/openai-compatible-responses" +import { AuthOptions, type ProviderAuthOption } from "../route/auth-options" +import type { RouteDefaultsInput } from "../route/client" +import { ProviderID, type ModelID } from "../schema" +import type { OpenResponsesProviderOptionsInput } from "./open-responses-options" + +export type { OpenResponsesOptionsInput, OpenResponsesProviderOptionsInput } from "./open-responses-options" + +export const id = ProviderID.make("openai-compatible") + +export type Config = RouteDefaultsInput & + ProviderAuthOption<"optional"> & { + readonly provider?: string + readonly baseURL: string + readonly providerOptions?: OpenResponsesProviderOptionsInput + } + +export interface Settings extends ProviderPackage.Settings { + readonly apiKey?: string + readonly baseURL: string + readonly provider?: string + readonly providerOptions?: OpenResponsesProviderOptionsInput +} + +export const routes = [OpenAICompatibleResponses.route] + +export const configure = (input: Config) => { + const provider = input.provider ?? "openai-compatible" + const { provider: _, baseURL, apiKey: _apiKey, auth: _auth, ...rest } = input + const route = OpenAICompatibleResponses.route.with({ + ...rest, + provider, + endpoint: { baseURL }, + auth: AuthOptions.bearer(input, []), + }) + return { + id: ProviderID.make(provider), + model: (modelID: string | ModelID) => route.model({ id: modelID }), + configure, + } +} + +export const provider = { + id, + configure, +} + +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => + configure({ + apiKey: settings.apiKey, + baseURL: settings.baseURL, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + provider: settings.provider, + providerOptions: settings.providerOptions, + }).model(modelID) diff --git a/packages/llm/src/providers/openai-compatible.ts b/packages/ai/src/providers/openai-compatible.ts similarity index 76% rename from packages/llm/src/providers/openai-compatible.ts rename to packages/ai/src/providers/openai-compatible.ts index a79f65f6dfe0..8b5d23eed735 100644 --- a/packages/llm/src/providers/openai-compatible.ts +++ b/packages/ai/src/providers/openai-compatible.ts @@ -2,6 +2,7 @@ import { ProviderID, type ModelID } from "../schema" import * as OpenAICompatibleChat from "../protocols/openai-compatible-chat" import type { RouteDefaultsInput } from "../route/client" import { AuthOptions, type ProviderAuthOption } from "../route/auth-options" +import type { ProviderPackage } from "../provider-package" import { profiles, type OpenAICompatibleProfile } from "./openai-compatible-profile" export const id = ProviderID.make("openai-compatible") @@ -12,6 +13,12 @@ type GenericModelOptions = RouteDefaultsInput & readonly baseURL: string } +export interface Settings extends ProviderPackage.Settings { + readonly apiKey?: string + readonly baseURL: string + readonly provider?: string +} + export type FamilyModelOptions = RouteDefaultsInput & ProviderAuthOption<"optional"> & { readonly baseURL?: string @@ -56,6 +63,16 @@ export const provider = { configure, } +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => + configure({ + apiKey: settings.apiKey, + baseURL: settings.baseURL, + headers: settings.headers === undefined ? undefined : { ...settings.headers }, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + provider: settings.provider, + }).model(modelID) + export const baseten = define(profiles.baseten) export const cerebras = define(profiles.cerebras) export const deepinfra = define(profiles.deepinfra) diff --git a/packages/ai/src/providers/openai-compatible/responses.ts b/packages/ai/src/providers/openai-compatible/responses.ts new file mode 100644 index 000000000000..03404ca68b74 --- /dev/null +++ b/packages/ai/src/providers/openai-compatible/responses.ts @@ -0,0 +1 @@ +export * from "../openai-compatible-responses" diff --git a/packages/ai/src/providers/openai-options.ts b/packages/ai/src/providers/openai-options.ts new file mode 100644 index 000000000000..86c7c2e33457 --- /dev/null +++ b/packages/ai/src/providers/openai-options.ts @@ -0,0 +1,71 @@ +import type { ProviderOptions } from "../schema" +import { mergeProviderOptions } from "../schema" +import type { OpenResponsesOptionsInput } from "./open-responses-options" + +export type { OpenAIResponseIncludable, OpenAIServiceTier } from "../protocols/utils/openai-options" + +export type OpenAIOptionsInput = OpenResponsesOptionsInput + +export type OpenAIProviderOptionsInput = ProviderOptions & { + readonly openai?: OpenAIOptionsInput +} + +const definedEntries = (input: Record) => + Object.entries(input).filter((entry) => entry[1] !== undefined) + +const openAIProviderOptions = (options: OpenAIOptionsInput | undefined): ProviderOptions | undefined => { + const openai = Object.fromEntries( + definedEntries({ + store: options?.store, + promptCacheKey: options?.promptCacheKey, + reasoningEffort: options?.reasoningEffort, + reasoningSummary: options?.reasoningSummary, + include: options?.include, + textVerbosity: options?.textVerbosity, + serviceTier: options?.serviceTier, + }), + ) + if (Object.keys(openai).length === 0) return undefined + return { openai } +} + +export const gpt5DefaultOptions = ( + modelID: string, + options: { readonly textVerbosity?: boolean } = {}, +): ProviderOptions | undefined => { + const id = modelID.toLowerCase() + if (!id.includes("gpt-5") || id.includes("gpt-5-chat") || id.includes("gpt-5-pro")) return undefined + return openAIProviderOptions({ + reasoningEffort: "medium", + reasoningSummary: "auto", + // GPT-5 reasoning models are configured stateless (`store: false`) by + // `openAIDefaultOptions` below, so the only way a follow-up turn can + // carry reasoning state is via the encrypted reasoning include. Without + // this, callers using the default model facade get reasoning summaries + // they cannot replay statelessly. + include: ["reasoning.encrypted_content"], + textVerbosity: + options.textVerbosity === true && id.includes("gpt-5.") && !id.includes("codex") && !id.includes("-chat") + ? "low" + : undefined, + }) +} + +export const openAIDefaultOptions = ( + modelID: string, + options: { readonly textVerbosity?: boolean } = {}, +): ProviderOptions | undefined => + mergeProviderOptions(openAIProviderOptions({ store: false }), gpt5DefaultOptions(modelID, options)) + +export const withOpenAIOptions = ( + modelID: string, + options: Options, + defaults: { readonly textVerbosity?: boolean } = {}, +): Omit & { readonly providerOptions?: ProviderOptions } => { + return { + ...options, + providerOptions: mergeProviderOptions(openAIDefaultOptions(modelID, defaults), options.providerOptions), + } +} + +export * as OpenAIProviderOptions from "./openai-options" diff --git a/packages/ai/src/providers/openai.ts b/packages/ai/src/providers/openai.ts new file mode 100644 index 000000000000..862333e2e52a --- /dev/null +++ b/packages/ai/src/providers/openai.ts @@ -0,0 +1,147 @@ +import { AuthOptions, type ProviderAuthOption } from "../route/auth-options" +import type { Route, RouteDefaultsInput } from "../route/client" +import type { ProviderPackage } from "../provider-package" +import { HttpOptions, ProviderID, ToolDefinition, mergeHttpOptions, type ModelID } from "../schema" +import * as OpenAIChat from "../protocols/openai-chat" +import * as OpenAIResponses from "../protocols/openai-responses" +import { withOpenAIOptions, type OpenAIProviderOptionsInput } from "./openai-options" +import { OpenAIImages, type OpenAIImageString } from "../protocols/openai-images" + +export type { OpenAIOptionsInput, OpenAIResponseIncludable } from "./openai-options" +export type { OpenAIImageOptions } from "../protocols/openai-images" + +export const id = ProviderID.make("openai") + +export const routes = [OpenAIResponses.route, OpenAIResponses.webSocketRoute, OpenAIChat.route] + +// This provider facade wraps the lower-level Responses and Chat model factories +// with OpenAI-specific conveniences: typed options, API-key sugar, env fallback, +// and default option normalization. +export type Config = RouteDefaultsInput & + ProviderAuthOption<"optional"> & { + readonly baseURL?: string + readonly queryParams?: Record + readonly providerOptions?: OpenAIProviderOptionsInput + } + +export interface ImageGenerationOptions { + readonly action?: OpenAIImageString<"auto" | "generate" | "edit"> + readonly background?: OpenAIImageString<"auto" | "opaque" | "transparent"> + readonly inputFidelity?: OpenAIImageString<"low" | "high"> + readonly outputCompression?: number + readonly outputFormat?: OpenAIImageString<"png" | "jpeg" | "webp"> + readonly partialImages?: number + readonly quality?: OpenAIImageString<"auto" | "low" | "medium" | "high" | "standard" | "hd"> + readonly size?: OpenAIImageString< + "auto" | "256x256" | "512x512" | "1024x1024" | "1536x1024" | "1024x1536" | "1792x1024" | "1024x1792" + > +} + +export const imageGeneration = (options: ImageGenerationOptions = {}) => + ToolDefinition.make({ + name: "image_generation", + description: "Generate or edit an image using OpenAI's hosted image generation tool.", + inputSchema: { type: "object", properties: {}, additionalProperties: false }, + native: { + openai: { + type: "image_generation", + action: options.action, + background: options.background, + input_fidelity: options.inputFidelity, + output_compression: options.outputCompression, + output_format: options.outputFormat, + partial_images: options.partialImages, + quality: options.quality, + size: options.size, + }, + }, + }) + +export interface Settings extends ProviderPackage.Settings { + readonly apiKey?: string + readonly baseURL?: string + readonly organization?: string + readonly project?: string + readonly queryParams?: Readonly> + readonly transport?: "http" | "websocket" + readonly providerOptions?: OpenAIProviderOptionsInput +} + +const auth = (options: ProviderAuthOption<"optional">) => AuthOptions.bearer(options, "OPENAI_API_KEY") + +const defaults = (input: Config) => { + const { apiKey: _, auth: _auth, baseURL: _baseURL, queryParams: _queryParams, ...rest } = input + return rest +} + +const configuredRoute = (route: Route, input: Config) => + route.with({ + auth: auth(input), + endpoint: { baseURL: input.baseURL, query: input.queryParams }, + }) + +export const configure = (input: Config = {}) => { + const responsesRoute = configuredRoute(OpenAIResponses.route, input) + const responsesWebSocketRoute = configuredRoute(OpenAIResponses.webSocketRoute, input) + const chatRoute = configuredRoute(OpenAIChat.route, input) + const modelDefaults = defaults(input) + const responses = (id: string | ModelID) => + responsesRoute.with(withOpenAIOptions(id, modelDefaults, { textVerbosity: true })).model({ id }) + const responsesWebSocket = (id: string | ModelID) => + responsesWebSocketRoute.with(withOpenAIOptions(id, modelDefaults, { textVerbosity: true })).model({ id }) + const chat = (id: string | ModelID) => chatRoute.with(withOpenAIOptions(id, modelDefaults)).model({ id }) + const image = (modelID: string | ModelID) => + OpenAIImages.model({ + id: modelID, + auth: auth(input), + baseURL: input.baseURL, + headers: input.headers, + http: mergeHttpOptions( + input.http === undefined ? undefined : HttpOptions.make(input.http), + input.queryParams === undefined ? undefined : new HttpOptions({ query: input.queryParams }), + ), + }) + + return { + id, + model: responses, + responses, + responsesWebSocket, + chat, + image, + configure, + } +} + +export const provider = configure() + +const config = (settings: Settings): Config => { + const headers = { + ...(settings.organization === undefined ? {} : { "OpenAI-Organization": settings.organization }), + ...(settings.project === undefined ? {} : { "OpenAI-Project": settings.project }), + ...settings.headers, + } + return { + apiKey: settings.apiKey, + baseURL: settings.baseURL, + headers: Object.keys(headers).length === 0 ? undefined : headers, + http: settings.body === undefined ? undefined : { body: { ...settings.body } }, + limits: settings.limits, + providerOptions: settings.providerOptions, + queryParams: settings.queryParams === undefined ? undefined : { ...settings.queryParams }, + } +} + +export const model: ProviderPackage.Definition["model"] = (modelID, settings) => { + const configured = configure(config(settings)) + if (settings.transport === undefined || settings.transport === "http") return configured.responses(modelID) + if (settings.transport === "websocket") return configured.responsesWebSocket(modelID) + throw new Error(`Unsupported OpenAI Responses transport: ${String(settings.transport)}`) +} + +export const chatModel: ProviderPackage.Definition["model"] = (modelID, settings) => + configure(config(settings)).chat(modelID) +export const responses = provider.responses +export const responsesWebSocket = provider.responsesWebSocket +export const chat = provider.chat +export const image = provider.image diff --git a/packages/ai/src/providers/openai/chat.ts b/packages/ai/src/providers/openai/chat.ts new file mode 100644 index 000000000000..eb92db8ac507 --- /dev/null +++ b/packages/ai/src/providers/openai/chat.ts @@ -0,0 +1,2 @@ +export { chatModel as model } from "../openai" +export type { Settings } from "../openai" diff --git a/packages/ai/src/providers/openai/responses.ts b/packages/ai/src/providers/openai/responses.ts new file mode 100644 index 000000000000..4db3a232c7b2 --- /dev/null +++ b/packages/ai/src/providers/openai/responses.ts @@ -0,0 +1,2 @@ +export { model } from "../openai" +export type { Settings } from "../openai" diff --git a/packages/ai/src/providers/openrouter.ts b/packages/ai/src/providers/openrouter.ts new file mode 100644 index 000000000000..10b7fdd1e91c --- /dev/null +++ b/packages/ai/src/providers/openrouter.ts @@ -0,0 +1,116 @@ +import { Effect, Schema } from "effect" +import { Route, type RouteDefaultsInput } from "../route/client" +import { Endpoint } from "../route/endpoint" +import { Framing } from "../route/framing" +import { Protocol } from "../route/protocol" +import { AuthOptions, type ProviderAuthOption } from "../route/auth-options" +import { ProviderID, type ModelID, type ProviderOptions } from "../schema" +import * as OpenAICompatibleProfiles from "./openai-compatible-profile" +import * as OpenAIChat from "../protocols/openai-chat" +import { isRecord } from "../protocols/shared" + +export const profile = OpenAICompatibleProfiles.profiles.openrouter +export const id = ProviderID.make(profile.provider) +const ADAPTER = "openrouter" + +export interface OpenRouterOptions { + readonly [key: string]: unknown + readonly usage?: boolean | Record + readonly reasoning?: Record + readonly promptCacheKey?: string +} + +export type OpenRouterProviderOptionsInput = ProviderOptions & { + readonly openrouter?: OpenRouterOptions +} + +export type ModelOptions = Omit & + ProviderAuthOption<"optional"> & { + readonly baseURL?: string + readonly providerOptions?: OpenRouterProviderOptionsInput + } + +const OpenRouterBody = Schema.StructWithRest(Schema.Struct(OpenAIChat.bodyFields), [ + Schema.Record(Schema.String, Schema.Any), +]) +export type OpenRouterBody = Schema.Schema.Type + +export const protocol = Protocol.make({ + id: "openrouter-chat", + body: { + schema: OpenRouterBody, + from: (request) => + OpenAIChat.protocol.body.from(request).pipe( + Effect.map((body) => { + const sourceAssistants = request.messages.filter((message) => message.role === "assistant") + let assistantIndex = 0 + const messages = body.messages.map((message) => { + if (message.role !== "assistant") return message + const source = sourceAssistants[assistantIndex++] + const reasoning = source?.content + .filter((part) => part.type === "reasoning") + .map((part) => part.text) + .join("") + const reasoningDetails = Array.isArray(message.reasoning_details) ? message.reasoning_details : undefined + return { + ...message, + reasoning_content: undefined, + reasoning_text: undefined, + reasoning: reasoning && reasoningDetails && reasoningDetails.length > 0 ? reasoning : undefined, + reasoning_details: reasoningDetails, + } + }) + return { + ...body, + messages, + ...bodyOptions(request.providerOptions?.openrouter), + } as OpenRouterBody + }), + ), + }, + stream: OpenAIChat.protocol.stream, +}) + +const bodyOptions = (input: unknown) => { + const openrouter = isRecord(input) ? input : {} + return { + ...(openrouter.usage === true + ? { usage: { include: true } } + : isRecord(openrouter.usage) + ? { usage: openrouter.usage } + : {}), + ...(isRecord(openrouter.reasoning) ? { reasoning: openrouter.reasoning } : {}), + ...(typeof openrouter.promptCacheKey === "string" ? { prompt_cache_key: openrouter.promptCacheKey } : {}), + } +} + +export const route = Route.make({ + id: ADAPTER, + provider: profile.provider, + protocol, + endpoint: Endpoint.path("/chat/completions", { baseURL: profile.baseURL }), + framing: Framing.sse, +}) + +export const routes = [route] + +const configuredRoute = (input: ModelOptions) => { + const { apiKey: _, auth: _auth, baseURL, ...rest } = input + return route.with({ + ...rest, + endpoint: { baseURL: baseURL ?? profile.baseURL }, + auth: AuthOptions.bearer(input, "OPENROUTER_API_KEY"), + }) +} + +export const configure = (input: ModelOptions = {}) => { + const route = configuredRoute(input) + return { + id, + model: (modelID: string | ModelID) => route.model({ id: modelID }), + configure, + } +} + +export const provider = configure() +export const model = provider.model diff --git a/packages/ai/src/providers/xai.ts b/packages/ai/src/providers/xai.ts new file mode 100644 index 000000000000..c5d3220ee724 --- /dev/null +++ b/packages/ai/src/providers/xai.ts @@ -0,0 +1,69 @@ +import { AuthOptions, type ProviderAuthOption } from "../route/auth-options" +import type { RouteDefaultsInput } from "../route/client" +import { HttpOptions, ProviderID, type ModelID } from "../schema" +import * as OpenAICompatibleProfiles from "./openai-compatible-profile" +import * as OpenAICompatibleChat from "../protocols/openai-compatible-chat" +import * as OpenAIResponses from "../protocols/openai-responses" +import { XAIImages } from "../protocols/xai-images" + +export const id = ProviderID.make("xai") + +export type ModelOptions = RouteDefaultsInput & + ProviderAuthOption<"optional"> & { + readonly baseURL?: string + } + +export type { XAIImageOptions } from "../protocols/xai-images" + +export const routes = [OpenAIResponses.route, OpenAICompatibleChat.route] + +const auth = (options: ProviderAuthOption<"optional">) => AuthOptions.bearer(options, "XAI_API_KEY") + +const configuredResponsesRoute = (input: ModelOptions) => { + const { apiKey: _, auth: _auth, baseURL, ...rest } = input + return OpenAIResponses.route.with({ + ...rest, + provider: id, + endpoint: { baseURL: baseURL ?? OpenAICompatibleProfiles.profiles.xai.baseURL }, + auth: auth(input), + }) +} + +const configuredChatRoute = (input: ModelOptions) => { + const { apiKey: _, auth: _auth, baseURL, ...rest } = input + return OpenAICompatibleChat.route.with({ + ...rest, + provider: id, + endpoint: { baseURL: baseURL ?? OpenAICompatibleProfiles.profiles.xai.baseURL }, + auth: auth(input), + }) +} + +export const configure = (input: ModelOptions = {}) => { + const responsesRoute = configuredResponsesRoute(input) + const chatRoute = configuredChatRoute(input) + const responses = (modelID: string | ModelID) => responsesRoute.model({ id: modelID }) + const chat = (modelID: string | ModelID) => chatRoute.model({ id: modelID }) + const image = (modelID: string | ModelID) => + XAIImages.model({ + id: modelID, + auth: auth(input), + baseURL: input.baseURL ?? OpenAICompatibleProfiles.profiles.xai.baseURL, + headers: input.headers, + http: input.http === undefined ? undefined : HttpOptions.make(input.http), + }) + return { + id, + model: responses, + responses, + chat, + image, + configure, + } +} + +export const provider = configure() +export const model = provider.model +export const responses = provider.responses +export const chat = provider.chat +export const image = provider.image diff --git a/packages/ai/src/providers/zai.ts b/packages/ai/src/providers/zai.ts new file mode 100644 index 000000000000..e170f1113525 --- /dev/null +++ b/packages/ai/src/providers/zai.ts @@ -0,0 +1,35 @@ +import { ZAIImages } from "../protocols/zai-images" +import { AuthOptions, type ProviderAuthOption } from "../route/auth-options" +import { HttpOptions, ProviderID, type ModelID } from "../schema" + +export const id = ProviderID.make("zai") + +export type Config = ProviderAuthOption<"optional"> & { + readonly baseURL?: string + readonly headers?: Record + readonly http?: HttpOptions.Input +} + +export type { ZAIImageOptions } from "../protocols/zai-images" + +const auth = (options: ProviderAuthOption<"optional">) => AuthOptions.bearer(options, "ZAI_API_KEY") + +export const configure = (input: Config = {}) => { + const image = (modelID: string | ModelID) => + ZAIImages.model({ + id: modelID, + auth: auth(input), + baseURL: input.baseURL, + headers: input.headers, + http: input.http === undefined ? undefined : HttpOptions.make(input.http), + }) + + return { + id, + image, + configure, + } +} + +export const provider = configure() +export const image = provider.image diff --git a/packages/ai/src/route.ts b/packages/ai/src/route.ts new file mode 100644 index 000000000000..e76b133a7ab5 --- /dev/null +++ b/packages/ai/src/route.ts @@ -0,0 +1 @@ +export * from "./route/index" diff --git a/packages/llm/src/route/auth-options.ts b/packages/ai/src/route/auth-options.ts similarity index 91% rename from packages/llm/src/route/auth-options.ts rename to packages/ai/src/route/auth-options.ts index 7e40aa12a210..957ae9b3111a 100644 --- a/packages/llm/src/route/auth-options.ts +++ b/packages/ai/src/route/auth-options.ts @@ -4,7 +4,7 @@ import { Auth } from "./auth" export type ApiKeyMode = "optional" | "required" export type AuthOverride = { - readonly auth: Auth + readonly auth: Auth.Definition readonly apiKey?: never } @@ -44,7 +44,10 @@ export type AtLeastOne = { * override, otherwise resolve `apiKey` (option > config var) and apply it as * a bearer token. */ -export const bearer = (options: ProviderAuthOption<"optional">, envVar: string | ReadonlyArray): Auth => { +export const bearer = ( + options: ProviderAuthOption<"optional">, + envVar: string | ReadonlyArray, +): Auth.Definition => { if ("auth" in options && options.auth) return options.auth return (Array.isArray(envVar) ? envVar : [envVar]) .reduce( diff --git a/packages/ai/src/route/auth.ts b/packages/ai/src/route/auth.ts new file mode 100644 index 000000000000..6dc87d3a91f1 --- /dev/null +++ b/packages/ai/src/route/auth.ts @@ -0,0 +1,156 @@ +import { Config, Effect, Redacted } from "effect" +import { Headers } from "effect/unstable/http" +import { AuthenticationReason, InvalidRequestReason, LLMError, type HttpOptions } from "../schema" + +export class MissingCredentialError extends Error { + readonly _tag = "MissingCredentialError" + + constructor(readonly source: string) { + super(`Missing auth credential: ${source}`) + } +} + +export type CredentialError = MissingCredentialError | Config.ConfigError +export type AuthError = CredentialError | LLMError +type Secret = string | Redacted.Redacted | Config.Config + +export interface AuthInput { + readonly request: { readonly http?: HttpOptions } + readonly method: "POST" | "GET" + readonly url: string + readonly body: string + readonly headers: Headers.Headers +} + +export interface Credential { + readonly load: Effect.Effect + readonly orElse: (that: Credential) => Credential + readonly bearer: () => Definition + readonly header: (name: string) => Definition + readonly pipe: (f: (self: Credential) => A) => A +} + +export interface Definition { + readonly apply: (input: AuthInput) => Effect.Effect + readonly andThen: (that: Definition) => Definition + readonly orElse: (that: Definition) => Definition + readonly pipe: (f: (self: Definition) => A) => A +} + +export const isAuth = (input: unknown): input is Definition => + typeof input === "object" && input !== null && "apply" in input && typeof input.apply === "function" + +const credential = (load: Effect.Effect): Credential => { + const self: Credential = { + load, + orElse: (that) => credential(load.pipe(Effect.catch(() => that.load))), + bearer: () => fromCredential(self, (secret) => ({ authorization: `Bearer ${secret}` })), + header: (name) => fromCredential(self, (secret) => ({ [name]: secret })), + pipe: (f) => f(self), + } + return self +} + +const auth = (apply: Definition["apply"]): Definition => { + const self: Definition = { + apply, + andThen: (that) => + auth((input) => apply(input).pipe(Effect.flatMap((headers) => that.apply({ ...input, headers })))), + orElse: (that) => auth((input) => apply(input).pipe(Effect.catch(() => that.apply(input)))), + pipe: (f) => f(self), + } + return self +} + +const fromCredential = (source: Credential, render: (secret: string) => Headers.Input) => + auth((input) => + source.load.pipe(Effect.map((secret) => Headers.setAll(input.headers, render(Redacted.value(secret))))), + ) + +const secretEffect = (secret: string | Redacted.Redacted, source: string) => { + const redacted = typeof secret === "string" ? Redacted.make(secret) : secret + if (Redacted.value(redacted) === "") return Effect.fail(new MissingCredentialError(source)) + return Effect.succeed(redacted) +} + +const credentialFromSecret = (secret: Secret, source: string) => { + if (typeof secret === "string" || Redacted.isRedacted(secret)) return credential(secretEffect(secret, source)) + return credential( + Effect.gen(function* () { + return yield* secretEffect(yield* secret, source) + }), + ) +} + +export const value = (secret: string, source = "value") => credentialFromSecret(secret, source) + +export const optional = (secret: Secret | undefined, source = "optional value") => + secret === undefined + ? credential(Effect.fail(new MissingCredentialError(source))) + : credentialFromSecret(secret, source) + +export const config = (name: string) => credentialFromSecret(Config.redacted(name), name) + +export const effect = (load: Effect.Effect) => credential(load) + +export const none = auth((input) => Effect.succeed(input.headers)) + +export const headers = (input: Headers.Input) => + auth((inputAuth) => Effect.succeed(Headers.setAll(inputAuth.headers, input))) + +export const remove = (name: string) => auth((input) => Effect.succeed(Headers.remove(input.headers, name))) + +export const custom = (apply: (input: AuthInput) => Effect.Effect) => auth(apply) + +export const passthrough = none + +const credentialInput = (source: Secret | Credential) => + typeof source === "string" || Redacted.isRedacted(source) || Config.isConfig(source) + ? credentialFromSecret(source, "value") + : source + +export function bearer(source: Secret | Credential): Definition +export function bearer(source: Secret | Credential) { + return credentialInput(source).bearer() +} + +export const apiKey = bearer + +export function header(name: string): (source: Secret | Credential) => Definition +export function header(name: string, source: Secret | Credential): Definition +export function header(name: string, source?: Secret | Credential) { + if (source === undefined) { + return (next: Secret | Credential) => credentialInput(next).header(name) + } + return credentialInput(source).header(name) +} + +export function bearerHeader(name: string): (source: Secret | Credential) => Definition +export function bearerHeader(name: string, source: Secret | Credential): Definition +export function bearerHeader(name: string, source?: Secret | Credential) { + const render = (input: Secret | Credential) => + fromCredential(credentialInput(input), (secret) => ({ [name]: `Bearer ${secret}` })) + if (source === undefined) return render + return render(source) +} + +const toLLMError = (error: AuthError): LLMError => { + if (error instanceof MissingCredentialError || error instanceof Config.ConfigError) { + return new LLMError({ + module: "Auth", + method: "apply", + reason: + error instanceof MissingCredentialError + ? new AuthenticationReason({ message: error.message, kind: "missing" }) + : new InvalidRequestReason({ message: `Failed to resolve auth config: ${error.message}` }), + }) + } + return error +} + +export const toEffect = + (input: Definition) => + (authInput: AuthInput): Effect.Effect => + input.apply(authInput).pipe(Effect.mapError(toLLMError)) + +export * as Auth from "./auth" diff --git a/packages/ai/src/route/client.ts b/packages/ai/src/route/client.ts new file mode 100644 index 000000000000..067292329be1 --- /dev/null +++ b/packages/ai/src/route/client.ts @@ -0,0 +1,468 @@ +import { Cause, Context, Effect, Layer, Schema, Stream } from "effect" +import * as Option from "effect/Option" +import { Auth } from "./auth" +import { Endpoint, type EndpointPatch } from "./endpoint" +import { RequestExecutor } from "./executor" +import { Framing } from "./framing" +import { HttpTransport } from "./transport" +import type { Transport, TransportRuntime } from "./transport" +import { WebSocketExecutor } from "./transport" +import type { Protocol } from "./protocol" +import { applyCachePolicy } from "../cache-policy" +import * as ProviderShared from "../protocols/shared" +import type { LLMError, PreparedRequestOf, ProtocolID, ProviderOptions } from "../schema" +import { + GenerationOptions, + HttpOptions, + LLMRequest, + LLMResponse, + Model, + ModelLimits, + LLMError as LLMErrorClass, + LLMEvent, + PreparedRequest, + ProviderID, + mergeGenerationOptions, + mergeHttpOptions, + mergeProviderOptions, +} from "../schema" + +export interface RouteBody { + /** Schema for the validated provider-native body sent as the JSON request. */ + readonly schema: Schema.Codec + /** Build the provider-native body from a common `LLMRequest`. */ + readonly from: (request: LLMRequest) => Effect.Effect +} + +export interface Route { + readonly id: string + readonly provider?: ProviderID + /** ProviderMetadata namespace emitted and consumed by this route. */ + readonly providerMetadataKey?: string + readonly protocol: ProtocolID + readonly endpoint: Endpoint.Definition + readonly auth: Auth.Definition + readonly transport: Transport + readonly defaults: RouteDefaults + readonly body: RouteBody + readonly with: (patch: RoutePatch) => Route + readonly model: (input: RouteMappedModelInput) => Model + readonly prepareTransport: (body: Body, request: LLMRequest) => Effect.Effect + readonly streamPrepared: ( + prepared: Prepared, + request: LLMRequest, + runtime: TransportRuntime, + ) => Stream.Stream +} + +// Route registries intentionally erase body generics after construction. +// Normal call sites use `OpenAIChat.route`; callers only need body types +// when preparing a request with a protocol-specific type assertion. +// oxlint-disable-next-line typescript-eslint/no-explicit-any +export type AnyRoute = Route + +export type HttpOptionsInput = HttpOptions.Input + +export type RouteModelInput = Omit + +export type RouteRoutedModelInput = Omit + +export interface RouteDefaults { + readonly headers?: Record + readonly limits?: ModelLimits + readonly generation?: GenerationOptions + readonly providerOptions?: ProviderOptions + readonly http?: HttpOptions +} + +export interface RouteDefaultsInput { + readonly headers?: Record + readonly limits?: ModelLimits.Input + readonly generation?: GenerationOptions.Input + readonly providerOptions?: ProviderOptions + readonly http?: HttpOptions.Input +} + +export interface RoutePatch extends RouteDefaultsInput { + readonly id?: string + readonly provider?: string | ProviderID + readonly auth?: Auth.Definition + readonly transport?: Transport + readonly endpoint?: EndpointPatch +} + +type RouteMappedModelInput = RouteModelInput | RouteRoutedModelInput + +const makeRouteModel = (route: AnyRoute, mapped: RouteMappedModelInput) => { + const provider = route.provider ?? ("provider" in mapped ? mapped.provider : undefined) + if (!provider) throw new Error(`Route.model(${route.id}) requires a provider`) + if (!endpointBaseURL(route.endpoint)) + throw new Error(`Route.model(${route.id}) requires an endpoint baseURL — configure it on the route first`) + return Model.make({ + ...mapped, + provider, + route, + }) +} + +const mergeRouteDefaults = (base: RouteDefaults | undefined, patch: RouteDefaultsInput): RouteDefaults => { + const headers = mergeHeaders(base?.headers, patch.headers) + return { + ...base, + ...patch, + headers, + limits: patch.limits === undefined ? base?.limits : ModelLimits.make(patch.limits), + generation: mergeGenerationOptions(generationOptions(base?.generation), generationOptions(patch.generation)), + providerOptions: mergeProviderOptions(base?.providerOptions, patch.providerOptions), + http: mergeHttpOptions( + base?.http, + httpOptions(patch.http), + headers === undefined ? undefined : new HttpOptions({ headers }), + ), + } +} + +const endpointBaseURL = (endpoint: Endpoint.Definition) => + typeof endpoint.baseURL === "string" ? endpoint.baseURL : undefined + +const mergeHeaders = (...items: ReadonlyArray | undefined>) => { + const entries = items.flatMap((item) => + item === undefined ? [] : Object.entries(item).filter((entry): entry is [string, string] => entry[1] !== undefined), + ) + if (entries.length === 0) return undefined + return Object.fromEntries(entries) +} + +export const generationOptions = (input: GenerationOptions.Input | undefined) => + input === undefined ? undefined : GenerationOptions.make(input) + +export const httpOptions = (input: HttpOptionsInput | undefined) => { + if (input === undefined) return input + return HttpOptions.make(input) +} + +export interface Interface { + /** + * Compile a request through protocol body construction, validation, and HTTP + * preparation without sending it. Returns the prepared request including the + * provider-native body. + * + * Pass a `Body` type argument to statically expose the route's body + * shape (e.g. `prepare(...)`) — the runtime body is + * identical, so this is a type-level assertion the caller makes about which + * route the request will resolve to. + */ + readonly prepare: (request: LLMRequest) => Effect.Effect, LLMError> + readonly stream: StreamMethod + readonly generate: GenerateMethod +} + +export interface StreamMethod { + (request: LLMRequest): Stream.Stream +} + +export interface GenerateMethod { + (request: LLMRequest): Effect.Effect +} + +export class Service extends Context.Service()("@opencode/LLMClient") {} + +const resolveRequestOptions = (request: LLMRequest) => { + const routeDefaults = request.model.route.defaults + const modelDefaults = request.model.defaults + const generation = mergeGenerationOptions(routeDefaults.generation, modelDefaults?.generation, request.generation) + return LLMRequest.update(request, { + generation: generation ?? new GenerationOptions({}), + providerOptions: mergeProviderOptions( + routeDefaults.providerOptions, + modelDefaults?.providerOptions, + request.providerOptions, + ), + http: mergeHttpOptions(routeDefaults.http, modelDefaults?.http, request.http), + }) +} + +export interface MakeInput { + /** Route id used in diagnostics and prepared request metadata. */ + readonly id: string + /** Provider identity for route-owned model construction. */ + readonly provider?: string | ProviderID + /** ProviderMetadata namespace emitted and consumed by this route. */ + readonly providerMetadataKey?: string + /** Semantic API contract — owns body construction, body schema, and parsing. */ + readonly protocol: Protocol + /** Where the request is sent. */ + readonly endpoint: Endpoint.Definition + /** Per-request transport auth. Provider facades override this via `route.with(...)`. */ + readonly auth?: Auth.Definition + /** Stream framing — bytes -> frames before `protocol.stream.event` decoding. */ + readonly framing: Framing.Definition + /** Static / per-request headers added before `auth` runs. */ + readonly headers?: (input: { readonly request: LLMRequest }) => Record + /** Route/request defaults used when compiling requests for this route. */ + readonly defaults?: RouteDefaultsInput +} + +export interface MakeTransportInput { + /** Route id used in diagnostics and prepared request metadata. */ + readonly id: string + /** Provider identity for route-owned model construction. */ + readonly provider?: string | ProviderID + /** ProviderMetadata namespace emitted and consumed by this route. */ + readonly providerMetadataKey?: string + /** Semantic API contract — owns body construction, body schema, and parsing. */ + readonly protocol: Protocol + /** Where the request is sent. */ + readonly endpoint: Endpoint.Definition + /** Per-request transport auth. Provider facades override this via `route.with(...)`. */ + readonly auth?: Auth.Definition + /** Static / per-request headers added before `auth` runs. */ + readonly headers?: (input: { readonly request: LLMRequest }) => Record + /** Runnable transport route. */ + readonly transport: Transport + /** Route/request defaults used when compiling requests for this route. */ + readonly defaults?: RouteDefaultsInput +} + +const streamError = (route: string, message: string, cause: Cause.Cause) => { + const failed = cause.reasons.find(Cause.isFailReason)?.error + if (failed instanceof LLMErrorClass) return failed + return ProviderShared.eventError(route, message, Cause.pretty(cause)) +} + +const requireTerminalEvent = (route: string) => (events: Stream.Stream) => + Stream.suspend(() => { + let terminal = false + return events.pipe( + Stream.mapEffect((event) => { + if (terminal) + return Effect.fail( + ProviderShared.eventError(route, `Provider emitted ${event.type} after the terminal event`), + ) + if (LLMEvent.is.finish(event) || LLMEvent.is.providerError(event)) terminal = true + return Effect.succeed(event) + }), + Stream.onEnd( + Effect.suspend(() => + terminal + ? Effect.void + : Effect.fail(ProviderShared.eventError(route, "Provider stream ended without a terminal finish event")), + ), + ), + ) + }) + +function makeFromTransport( + input: MakeTransportInput, +): Route { + const protocol = input.protocol + const encodeBody = Schema.encodeSync(Schema.fromJsonString(protocol.body.schema)) + const decodeEventEffect = Schema.decodeUnknownEffect(protocol.stream.event) + const decodeEvent = (route: string) => (frame: Frame) => + decodeEventEffect(frame).pipe( + Effect.mapError(() => + ProviderShared.eventError( + input.id, + `Invalid ${route} stream event`, + typeof frame === "string" ? frame : ProviderShared.encodeJson(frame), + ), + ), + ) + + type BuiltRouteInput = Omit, "defaults"> & { + readonly defaults?: RouteDefaults + } + + const build = (routeInput: BuiltRouteInput): Route => { + const route: Route = { + id: routeInput.id, + provider: routeInput.provider === undefined ? undefined : ProviderID.make(routeInput.provider), + providerMetadataKey: routeInput.providerMetadataKey, + protocol: protocol.id, + endpoint: routeInput.endpoint, + auth: routeInput.auth ?? Auth.none, + transport: routeInput.transport, + defaults: routeInput.defaults ?? {}, + body: protocol.body, + with: (patch: RoutePatch) => { + const { id, provider, auth, transport, endpoint, ...defaults } = patch + return build({ + ...routeInput, + id: id ?? routeInput.id, + provider: provider ?? routeInput.provider, + auth: auth ?? routeInput.auth, + endpoint: endpoint ? Endpoint.merge(routeInput.endpoint, endpoint) : routeInput.endpoint, + transport: (transport as Transport | undefined) ?? routeInput.transport, + defaults: mergeRouteDefaults(route.defaults, defaults), + }) + }, + model: (input) => makeRouteModel(route, input), + prepareTransport: (body, request) => + routeInput.transport.prepare({ + body, + request, + endpoint: routeInput.endpoint, + auth: routeInput.auth ?? Auth.none, + encodeBody, + headers: routeInput.headers, + }), + streamPrepared: (prepared: Prepared, request: LLMRequest, runtime: TransportRuntime) => { + const route = `${request.model.provider}/${request.model.route.id}` + const events = routeInput.transport + .frames(prepared, request, runtime) + .pipe( + Stream.mapEffect(decodeEvent(route)), + protocol.stream.terminal ? Stream.takeUntil(protocol.stream.terminal) : (stream) => stream, + ) + return events.pipe( + Stream.mapAccumEffect( + () => protocol.stream.initial(request), + protocol.stream.step, + protocol.stream.onHalt ? { onHalt: protocol.stream.onHalt } : undefined, + ), + Stream.catchCause((cause) => Stream.fail(streamError(route, `Failed to read ${route} stream`, cause))), + requireTerminalEvent(route), + ) + }, + } satisfies Route + return route + } + + return build({ ...input, defaults: mergeRouteDefaults(undefined, input.defaults ?? {}) }) +} + +export function make( + input: MakeTransportInput, +): Route +/** + * Build a `Route` by composing the four orthogonal pieces of a deployment: + * + * - `Protocol` — what is the API I'm speaking? + * - `Endpoint` — where do I send the request? + * - `Auth` — how do I authenticate it? + * - `Framing` — how do I cut the response stream into protocol frames? + * + * Plus optional `headers` for cross-cutting deployment concerns (provider + * version pins, per-deployment quirks). + * + * This is the canonical route constructor. If a new route does not fit + * this four-axis model, add a purpose-built constructor rather than widening + * the public surface preemptively. + */ +export function make( + input: MakeInput, +): Route> +export function make( + input: MakeInput | MakeTransportInput, +): Route | Route> { + if ("transport" in input) return makeFromTransport(input) + const protocol = input.protocol + return makeFromTransport({ + id: input.id, + provider: input.provider, + providerMetadataKey: input.providerMetadataKey, + protocol, + endpoint: input.endpoint, + auth: input.auth, + headers: input.headers, + transport: HttpTransport.httpJson({ framing: input.framing }), + defaults: input.defaults, + }) +} + +// `compile` is the important boundary: it turns a common `LLMRequest` into a +// validated provider body plus transport-private prepared data, but does not +// execute transport. +const compile = Effect.fn("LLM.compile")(function* (request: LLMRequest) { + const resolved = applyCachePolicy(resolveRequestOptions(request)) + const route = resolved.model.route + + const body = yield* route.body + .from(resolved) + .pipe(Effect.flatMap(ProviderShared.validateWith(Schema.decodeUnknownEffect(route.body.schema)))) + const prepared = yield* route.prepareTransport(body, resolved) + + return { + request: resolved, + route, + body, + prepared, + } +}) + +const prepareWith = Effect.fn("LLMClient.prepare")(function* (request: LLMRequest) { + const compiled = yield* compile(request) + + return new PreparedRequest({ + id: compiled.request.id ?? "request", + route: compiled.route.id, + protocol: compiled.route.protocol, + model: compiled.request.model, + body: compiled.body, + metadata: { transport: compiled.route.transport.id }, + }) +}) + +const streamRequestWith = (runtime: TransportRuntime) => (request: LLMRequest) => + Stream.unwrap( + Effect.gen(function* () { + const compiled = yield* compile(request) + return compiled.route.streamPrepared(compiled.prepared, compiled.request, runtime) + }), + ) + +const generateWith = (stream: Interface["stream"]) => + Effect.fn("LLM.generate")(function* (request: LLMRequest) { + const state = yield* stream(request).pipe(Stream.runFold(LLMResponse.empty, LLMResponse.reduce)) + const response = LLMResponse.complete(state) + if (response) return response + return yield* ProviderShared.eventError( + `${request.model.provider}/${request.model.route.id}`, + "Provider stream ended without a terminal finish event", + ) + }) + +export const prepare = (request: LLMRequest) => + prepareWith(request) as Effect.Effect, LLMError> + +export function stream(request: LLMRequest): Stream.Stream { + return Stream.unwrap( + Effect.gen(function* () { + return (yield* Service).stream(request) + }), + ) as Stream.Stream +} + +export function generate(request: LLMRequest): Effect.Effect { + return Effect.gen(function* () { + return yield* (yield* Service).generate(request) + }) as Effect.Effect +} + +export const streamRequest = (request: LLMRequest) => + Stream.unwrap( + Effect.gen(function* () { + return (yield* Service).stream(request) + }), + ) + +export const layer: Layer.Layer = Layer.effect( + Service, + Effect.gen(function* () { + const stream = streamRequestWith({ + http: yield* RequestExecutor.Service, + webSocket: Option.getOrUndefined(yield* Effect.serviceOption(WebSocketExecutor.Service)), + }) + return Service.of({ prepare: prepareWith as Interface["prepare"], stream, generate: generateWith(stream) }) + }), +) + +export const Route = { make } as const + +export const LLMClient = { + Service, + layer, + prepare, + stream, + generate, +} as const diff --git a/packages/llm/src/route/endpoint.ts b/packages/ai/src/route/endpoint.ts similarity index 78% rename from packages/llm/src/route/endpoint.ts rename to packages/ai/src/route/endpoint.ts index accbe5324311..2b2077907d7e 100644 --- a/packages/llm/src/route/endpoint.ts +++ b/packages/ai/src/route/endpoint.ts @@ -19,21 +19,24 @@ export type EndpointPart = string | ((input: EndpointInput) => strin * URL embeds the model id, region, or another body field (e.g. Bedrock, * Gemini). */ -export interface Endpoint { +export interface Definition { readonly baseURL?: string readonly path: EndpointPart readonly query?: Record } -export type EndpointPatch = Partial> +export type EndpointPatch = Partial> /** Construct an `Endpoint` from a path string or path function. */ -export const path = (value: EndpointPart, options: Omit, "path"> = {}): Endpoint => ({ +export const path = ( + value: EndpointPart, + options: Omit, "path"> = {}, +): Definition => ({ ...options, path: value, }) -export const merge = (base: Endpoint, patch: EndpointPatch): Endpoint => ({ +export const merge = (base: Definition, patch: EndpointPatch): Definition => ({ ...base, ...patch, baseURL: patch.baseURL ?? base.baseURL, @@ -44,7 +47,7 @@ export const merge = (base: Endpoint, patch: EndpointPatch): E const renderPart = (part: EndpointPart, input: EndpointInput) => typeof part === "function" ? part(input) : part -export const render = (endpoint: Endpoint, input: EndpointInput) => { +export const render = (endpoint: Definition, input: EndpointInput) => { const url = new URL(`${ProviderShared.trimBaseUrl(endpoint.baseURL ?? "")}${renderPart(endpoint.path, input)}`) for (const [key, value] of Object.entries(endpoint.query ?? {})) url.searchParams.set(key, value) return url diff --git a/packages/llm/src/route/executor.ts b/packages/ai/src/route/executor.ts similarity index 76% rename from packages/llm/src/route/executor.ts rename to packages/ai/src/route/executor.ts index 10d8273272a7..ab97bdaba89f 100644 --- a/packages/llm/src/route/executor.ts +++ b/packages/ai/src/route/executor.ts @@ -1,4 +1,4 @@ -import { Cause, Context, Effect, Layer, Random } from "effect" +import { Cause, Context, Effect, Layer } from "effect" import { FetchHttpClient, Headers, @@ -8,21 +8,14 @@ import { HttpClientResponse, } from "effect/unstable/http" import { - AuthenticationReason, - ContentPolicyReason, HttpContext, HttpRateLimitDetails, HttpRequestDetails, HttpResponseDetails, - InvalidRequestReason, LLMError, - ProviderInternalReason, - QuotaExceededReason, - RateLimitReason, TransportReason, - UnknownProviderReason, } from "../schema" -import { isContextOverflow } from "../provider-error" +import { classifyProviderFailure } from "../provider-error" export interface Interface { readonly execute: ( @@ -33,9 +26,6 @@ export interface Interface { export class Service extends Context.Service()("@opencode/LLM/RequestExecutor") {} const BODY_LIMIT = 16_384 -const MAX_RETRIES = 2 -const BASE_DELAY_MS = 500 -const MAX_DELAY_MS = 10_000 const REDACTED = "" // One source of truth for what counts as a sensitive name across headers, @@ -88,8 +78,6 @@ const requestId = (headers: Record) => { ) } -const retryableStatus = (status: number) => status === 429 || status === 503 || status === 504 || status === 529 - const retryAfterMs = (headers: Record) => { const millis = Number(headers["retry-after-ms"]) if (Number.isFinite(millis)) return Math.max(0, millis) @@ -222,58 +210,6 @@ const responseHttp = (input: { rateLimit: input.rateLimit, }) -const statusReason = (input: { - readonly status: number - readonly message: string - readonly retryAfterMs?: number | undefined - readonly rateLimit?: HttpRateLimitDetails | undefined - readonly http: HttpContext -}) => { - const body = input.http.body ?? "" - if (/content[-_\s]?policy|content_filter|safety/i.test(body)) { - return new ContentPolicyReason({ message: input.message, http: input.http }) - } - if (input.status === 401) { - return new AuthenticationReason({ message: input.message, kind: "invalid", http: input.http }) - } - if (input.status === 403) { - return new AuthenticationReason({ message: input.message, kind: "insufficient-permissions", http: input.http }) - } - if (input.status === 429) { - if (/insufficient[-_\s]?quota|quota[-_\s]?exceeded/i.test(body)) { - return new QuotaExceededReason({ message: input.message, http: input.http }) - } - return new RateLimitReason({ - message: input.message, - retryAfterMs: input.retryAfterMs, - rateLimit: input.rateLimit, - http: input.http, - }) - } - if ( - input.status === 400 || - input.status === 404 || - input.status === 409 || - input.status === 413 || - input.status === 422 - ) { - return new InvalidRequestReason({ - message: input.message, - classification: isContextOverflow(body) ? "context-overflow" : undefined, - http: input.http, - }) - } - if (input.status >= 500 || retryableStatus(input.status)) { - return new ProviderInternalReason({ - message: input.message, - status: input.status, - retryAfterMs: input.retryAfterMs, - http: input.http, - }) - } - return new UnknownProviderReason({ message: input.message, status: input.status, http: input.http }) -} - const statusError = (request: HttpClientRequest.HttpClientRequest, redactedNames: ReadonlyArray) => (response: HttpClientResponse.HttpClientResponse) => @@ -287,7 +223,7 @@ const statusError = return yield* new LLMError({ module: "RequestExecutor", method: "execute", - reason: statusReason({ + reason: classifyProviderFailure({ status: response.status, message: providerMessage(response.status, details), retryAfterMs: retryAfter, @@ -342,27 +278,6 @@ const toHttpError = (redactedNames: ReadonlyArray) => (error: u }) } -const retryDelay = (error: LLMError, attempt: number) => { - if (error.retryAfterMs !== undefined) return Effect.succeed(Math.min(error.retryAfterMs, MAX_DELAY_MS)) - return Random.nextBetween( - Math.min(BASE_DELAY_MS * 2 ** attempt * 0.8, MAX_DELAY_MS), - Math.min(BASE_DELAY_MS * 2 ** attempt * 1.2, MAX_DELAY_MS), - ).pipe(Effect.map((delay) => Math.round(delay))) -} - -const retryStatusFailures = ( - effect: Effect.Effect, - retries = MAX_RETRIES, - attempt = 0, -): Effect.Effect => - Effect.catchTag(effect, "LLM.Error", (error): Effect.Effect => { - if (!error.retryable || retries <= 0) return Effect.fail(error) - return retryDelay(error, attempt).pipe( - Effect.flatMap((delay) => Effect.sleep(delay)), - Effect.flatMap(() => retryStatusFailures(effect, retries - 1, attempt + 1)), - ) - }) - export const layer: Layer.Layer = Layer.effect( Service, Effect.gen(function* () { @@ -375,11 +290,11 @@ export const layer: Layer.Layer = Layer.e .pipe(Effect.mapError(toHttpError(redactedNames)), Effect.flatMap(statusError(request, redactedNames))) }) return Service.of({ - execute: (request) => retryStatusFailures(executeOnce(request)), + execute: executeOnce, }) }), ) -export const defaultLayer = layer.pipe(Layer.provide(FetchHttpClient.layer)) +export const fetchLayer = layer.pipe(Layer.provide(FetchHttpClient.layer)) export * as RequestExecutor from "./executor" diff --git a/packages/llm/src/route/framing.ts b/packages/ai/src/route/framing.ts similarity index 88% rename from packages/llm/src/route/framing.ts rename to packages/ai/src/route/framing.ts index ef4855817d08..f4ec86cbf9ee 100644 --- a/packages/llm/src/route/framing.ts +++ b/packages/ai/src/route/framing.ts @@ -16,12 +16,12 @@ import type { LLMError } from "../schema" * The frame type is opaque to this layer; the protocol's `decode` step turns * a frame into a typed chunk. */ -export interface Framing { +export interface Definition { readonly id: string readonly frame: (bytes: Stream.Stream) => Stream.Stream } /** Server-Sent Events framing. Used by every JSON-streaming HTTP provider. */ -export const sse: Framing = { id: "sse", frame: ProviderShared.sseFraming } +export const sse: Definition = { id: "sse", frame: ProviderShared.sseFraming } export * as Framing from "./framing" diff --git a/packages/ai/src/route/index.ts b/packages/ai/src/route/index.ts new file mode 100644 index 000000000000..70db881ea462 --- /dev/null +++ b/packages/ai/src/route/index.ts @@ -0,0 +1,25 @@ +export { Route, LLMClient } from "./client" +export type { + Route as RouteShape, + RouteModelInput, + RouteRoutedModelInput, + RouteDefaults, + RouteDefaultsInput, + AnyRoute, + Interface as LLMClientShape, + Service as LLMClientService, +} from "./client" +export * from "./executor" +export { Auth } from "./auth" +export { AuthOptions } from "./auth-options" +export { Endpoint } from "./endpoint" +export { Framing } from "./framing" +export { Protocol } from "./protocol" +export { HttpTransport, WebSocketExecutor, WebSocketTransport } from "./transport" +export * as Transport from "./transport" +export type { Definition as AuthShape, AuthInput, Credential, CredentialError } from "./auth" +export type { ApiKeyMode, AuthOverride, ProviderAuthOption } from "./auth-options" +export type { Definition as EndpointFn, EndpointInput } from "./endpoint" +export type { Definition as FramingDef } from "./framing" +export type { Protocol as ProtocolDef } from "./protocol" +export type { Transport as TransportDef, TransportRuntime } from "./transport" diff --git a/packages/llm/src/route/protocol.ts b/packages/ai/src/route/protocol.ts similarity index 96% rename from packages/llm/src/route/protocol.ts rename to packages/ai/src/route/protocol.ts index acb1e78c67bb..c7340ac063e5 100644 --- a/packages/llm/src/route/protocol.ts +++ b/packages/ai/src/route/protocol.ts @@ -12,7 +12,8 @@ import type { LLMError, LLMEvent, LLMRequest, ProtocolID } from "../schema" * Examples: * * - `OpenAIChat.protocol` — chat completions style - * - `OpenAIResponses.protocol` — responses API + * - `OpenResponses.protocol` — provider-neutral Responses API baseline + * - `OpenAIResponses.protocol` — OpenAI extensions to that baseline * - `AnthropicMessages.protocol` — messages API with content blocks * - `Gemini.protocol` — generateContent * - `BedrockConverse.protocol` — Converse with binary event-stream framing diff --git a/packages/llm/src/route/transport/http.ts b/packages/ai/src/route/transport/http.ts similarity index 76% rename from packages/llm/src/route/transport/http.ts rename to packages/ai/src/route/transport/http.ts index 00508957a76b..785e450a5e20 100644 --- a/packages/llm/src/route/transport/http.ts +++ b/packages/ai/src/route/transport/http.ts @@ -2,7 +2,7 @@ import { Effect, Stream } from "effect" import { Headers, HttpClientRequest } from "effect/unstable/http" import { Auth } from "../auth" import { render as renderEndpoint } from "../endpoint" -import { Framing, type Framing as FramingDef } from "../framing" +import { Framing } from "../framing" import type { Transport, TransportPrepareInput } from "./index" import * as ProviderShared from "../../protocols/shared" import { mergeJsonRecords, type LLMRequest } from "../../schema" @@ -18,7 +18,7 @@ export interface JsonRequestParts { export interface HttpPrepared { readonly request: HttpClientRequest.HttpClientRequest - readonly framing: FramingDef + readonly framing: Framing.Definition } const applyQuery = (url: string, query: Record | undefined) => { @@ -28,9 +28,57 @@ const applyQuery = (url: string, query: Record | undefined) => { return next.toString() } +const PROTOCOL_BODY_OVERLAY_DENYLIST = new Set([ + "anthropic_version", + "content", + "contents", + "frequencyPenalty", + "frequency_penalty", + "generationConfig", + "inferenceConfig", + "input", + "maxTokens", + "max_tokens", + "messages", + "model", + "presencePenalty", + "presence_penalty", + "responseFormat", + "response_format", + "seed", + "stop", + "stopSequences", + "stop_sequences", + "stream", + "streamOptions", + "stream_options", + "system", + "systemInstruction", + "system_instruction", + "temperature", + "thinking", + "toolChoice", + "toolConfig", + "tool_choice", + "tool_config", + "tools", + "topK", + "topP", + "top_k", + "top_p", +]) + +const forbiddenBodyOverlayKeys = (body: Record) => + Object.keys(body).filter((key) => PROTOCOL_BODY_OVERLAY_DENYLIST.has(key)) + const bodyWithOverlay = (body: Body, request: LLMRequest, encodeBody: (body: Body) => string) => Effect.gen(function* () { if (request.http?.body === undefined) return { jsonBody: body, bodyText: encodeBody(body) } + const forbiddenKeys = forbiddenBodyOverlayKeys(request.http.body) + if (forbiddenKeys.length > 0) + return yield* ProviderShared.invalidRequest( + `http.body cannot overlay protocol-owned field(s): ${forbiddenKeys.join(", ")}`, + ) if (ProviderShared.isRecord(body)) { const overlaid = mergeJsonRecords(body, request.http.body) ?? {} return { jsonBody: overlaid, bodyText: ProviderShared.encodeJson(overlaid) } @@ -59,7 +107,7 @@ export const jsonRequestParts = (input: JsonRequestInput) => }) export interface HttpJsonInput<_Body, Frame> { - readonly framing: FramingDef + readonly framing: Framing.Definition } export type HttpJsonPatch = Partial> diff --git a/packages/ai/src/route/transport/index.ts b/packages/ai/src/route/transport/index.ts new file mode 100644 index 000000000000..cf8fef1d08c6 --- /dev/null +++ b/packages/ai/src/route/transport/index.ts @@ -0,0 +1,33 @@ +import type { Effect, Stream } from "effect" +import { Endpoint } from "../endpoint" +import { Auth } from "../auth" +import type { Interface as RequestExecutorInterface } from "../executor" +import type { Interface as WebSocketExecutorInterface } from "./websocket" +import type { LLMError, LLMRequest } from "../../schema" + +export interface TransportRuntime { + readonly http: RequestExecutorInterface + readonly webSocket?: WebSocketExecutorInterface +} + +export interface Transport { + readonly id: string + readonly prepare: (input: TransportPrepareInput) => Effect.Effect + readonly frames: ( + prepared: Prepared, + request: LLMRequest, + runtime: TransportRuntime, + ) => Stream.Stream +} + +export interface TransportPrepareInput { + readonly body: Body + readonly request: LLMRequest + readonly endpoint: Endpoint.Definition + readonly auth: Auth.Definition + readonly encodeBody: (body: Body) => string + readonly headers?: (input: { readonly request: LLMRequest }) => Record +} + +export * as HttpTransport from "./http" +export { WebSocketExecutor, WebSocketTransport } from "./websocket" diff --git a/packages/llm/src/route/transport/websocket.ts b/packages/ai/src/route/transport/websocket.ts similarity index 100% rename from packages/llm/src/route/transport/websocket.ts rename to packages/ai/src/route/transport/websocket.ts diff --git a/packages/ai/src/schema/errors.ts b/packages/ai/src/schema/errors.ts new file mode 100644 index 000000000000..7b4cb96425b5 --- /dev/null +++ b/packages/ai/src/schema/errors.ts @@ -0,0 +1,156 @@ +import { Schema } from "effect" +import { Tool } from "@opencode-ai/schema/tool" +import { ModelID, ProviderID, ProviderMetadata, RouteID } from "./ids" + +export const ProviderFailureClassification = Schema.Literal("context-overflow") +export type ProviderFailureClassification = typeof ProviderFailureClassification.Type + +export class HttpRequestDetails extends Schema.Class("LLM.HttpRequestDetails")({ + method: Schema.String, + url: Schema.String, + headers: Schema.Record(Schema.String, Schema.String), +}) {} + +export class HttpResponseDetails extends Schema.Class("LLM.HttpResponseDetails")({ + status: Schema.Number, + headers: Schema.Record(Schema.String, Schema.String), +}) {} + +export class HttpRateLimitDetails extends Schema.Class("LLM.HttpRateLimitDetails")({ + retryAfterMs: Schema.optional(Schema.Number), + limit: Schema.optional(Schema.Record(Schema.String, Schema.String)), + remaining: Schema.optional(Schema.Record(Schema.String, Schema.String)), + reset: Schema.optional(Schema.Record(Schema.String, Schema.String)), +}) {} + +export class HttpContext extends Schema.Class("LLM.HttpContext")({ + request: HttpRequestDetails, + response: Schema.optional(HttpResponseDetails), + body: Schema.optional(Schema.String), + bodyTruncated: Schema.optional(Schema.Boolean), + requestId: Schema.optional(Schema.String), + rateLimit: Schema.optional(HttpRateLimitDetails), +}) {} + +export class InvalidRequestReason extends Schema.Class("LLM.Error.InvalidRequest")({ + _tag: Schema.tag("InvalidRequest"), + message: Schema.String, + parameter: Schema.optional(Schema.String), + classification: Schema.optional(ProviderFailureClassification), + providerMetadata: Schema.optional(ProviderMetadata), + http: Schema.optional(HttpContext), +}) {} + +export class NoRouteReason extends Schema.Class("LLM.Error.NoRoute")({ + _tag: Schema.tag("NoRoute"), + route: RouteID, + provider: ProviderID, + model: ModelID, +}) { + get message() { + return `No LLM route for ${this.provider}/${this.model} using ${this.route}` + } +} + +export class AuthenticationReason extends Schema.Class("LLM.Error.Authentication")({ + _tag: Schema.tag("Authentication"), + message: Schema.String, + kind: Schema.Literals(["missing", "invalid", "expired", "insufficient-permissions", "unknown"]), + providerMetadata: Schema.optional(ProviderMetadata), + http: Schema.optional(HttpContext), +}) {} + +export class RateLimitReason extends Schema.Class("LLM.Error.RateLimit")({ + _tag: Schema.tag("RateLimit"), + message: Schema.String, + retryAfterMs: Schema.optional(Schema.Number), + rateLimit: Schema.optional(HttpRateLimitDetails), + providerMetadata: Schema.optional(ProviderMetadata), + http: Schema.optional(HttpContext), +}) {} + +export class QuotaExceededReason extends Schema.Class("LLM.Error.QuotaExceeded")({ + _tag: Schema.tag("QuotaExceeded"), + message: Schema.String, + providerMetadata: Schema.optional(ProviderMetadata), + http: Schema.optional(HttpContext), +}) {} + +export class ContentPolicyReason extends Schema.Class("LLM.Error.ContentPolicy")({ + _tag: Schema.tag("ContentPolicy"), + message: Schema.String, + providerMetadata: Schema.optional(ProviderMetadata), + http: Schema.optional(HttpContext), +}) {} + +export class ProviderInternalReason extends Schema.Class("LLM.Error.ProviderInternal")({ + _tag: Schema.tag("ProviderInternal"), + message: Schema.String, + status: Schema.optional(Schema.Number), + retryAfterMs: Schema.optional(Schema.Number), + providerMetadata: Schema.optional(ProviderMetadata), + http: Schema.optional(HttpContext), +}) {} + +export class TransportReason extends Schema.Class("LLM.Error.Transport")({ + _tag: Schema.tag("Transport"), + message: Schema.String, + kind: Schema.optional(Schema.String), + url: Schema.optional(Schema.String), + http: Schema.optional(HttpContext), +}) {} + +export class InvalidProviderOutputReason extends Schema.Class( + "LLM.Error.InvalidProviderOutput", +)({ + _tag: Schema.tag("InvalidProviderOutput"), + message: Schema.String, + route: Schema.optional(Schema.String), + raw: Schema.optional(Schema.String), + providerMetadata: Schema.optional(ProviderMetadata), +}) {} + +export class UnknownProviderReason extends Schema.Class("LLM.Error.UnknownProvider")({ + _tag: Schema.tag("UnknownProvider"), + message: Schema.String, + status: Schema.optional(Schema.Number), + providerMetadata: Schema.optional(ProviderMetadata), + http: Schema.optional(HttpContext), +}) {} + +export const LLMErrorReason = Schema.Union([ + InvalidRequestReason, + NoRouteReason, + AuthenticationReason, + RateLimitReason, + QuotaExceededReason, + ContentPolicyReason, + ProviderInternalReason, + TransportReason, + InvalidProviderOutputReason, + UnknownProviderReason, +]).pipe(Schema.toTaggedUnion("_tag")) +export type LLMErrorReason = Schema.Schema.Type + +export class LLMError extends Schema.TaggedErrorClass()("LLM.Error", { + module: Schema.String, + method: Schema.String, + reason: LLMErrorReason, +}) { + override readonly cause = this.reason + + override get message() { + return `${this.module}.${this.method}: ${this.reason.message}` + } +} + +/** + * Failure type for tool execute handlers. Handlers must map their internal + * errors to this shape; the runtime catches `ToolFailure`s and surfaces them + * as `tool-error` events plus a `tool-result` of `type: "error"` so the model + * can self-correct. + * + * Anything thrown or yielded by a handler that is not a `ToolFailure` is + * treated as a defect and fails the stream. + */ +export class ToolFailure extends Tool.Error {} diff --git a/packages/ai/src/schema/events.ts b/packages/ai/src/schema/events.ts new file mode 100644 index 000000000000..654a892859fd --- /dev/null +++ b/packages/ai/src/schema/events.ts @@ -0,0 +1,642 @@ +import { Schema } from "effect" +import { ContentBlockID, FinishReason, ProtocolID, ProviderMetadata, RouteID, ToolCallID } from "./ids" +import { ModelSchema } from "./options" +import { Message, ToolCallPart, ToolOutput, ToolResultPart, ToolResultValue, type ContentPart } from "./messages" +import { ProviderFailureClassification } from "./errors" + +/** + * Token usage reported by an LLM provider. + * + * **Inclusive totals** (match AI SDK / OpenAI / LangChain convention — a + * reader from any of those ecosystems sees the number they expect): + * + * - `inputTokens` — total prompt tokens, *including* cached reads/writes. + * - `outputTokens` — total output tokens, *including* reasoning. + * - `totalTokens` — provider-supplied total, or `inputTokens + outputTokens`. + * + * **Non-overlapping breakdown** (every field is independently meaningful; + * consumers never have to subtract): + * + * - `nonCachedInputTokens` — the "fresh" portion of the prompt. + * - `cacheReadInputTokens` — input tokens served from cache. + * - `cacheWriteInputTokens` — input tokens written to cache. + * - `reasoningTokens` — subset of `outputTokens` spent on hidden reasoning. + * + * **Invariant**: `nonCachedInputTokens + cacheReadInputTokens + + * cacheWriteInputTokens = inputTokens`, and `reasoningTokens ≤ outputTokens`. + * Each protocol mapper computes whichever side it doesn't get natively, + * with `Math.max(0, …)` clamping for defense against provider bugs. Because + * every breakdown field is stored independently, downstream consumers can + * read whatever they need (cost-by-category, context-pressure, AI-SDK-style + * inclusive total) without ever subtracting — eliminating the underflow + * class of bug where a clamped difference would silently store the wrong + * value. + * + * **Semantics by provider**: + * + * - OpenAI Chat / Responses / Gemini: provider reports inclusive + * `inputTokens` and an inclusive `outputTokens`; mapper subtracts to + * derive the breakdown. + * - Anthropic and Bedrock report the input breakdown natively: Anthropic's + * `input_tokens` and Bedrock's `inputTokens` are non-cached only. Their + * mappers sum the breakdown to derive the inclusive `inputTokens`. + * Anthropic's `outputTokens` includes extended thinking. Newer responses + * expose that subset as `output_tokens_details.thinking_tokens`, which maps + * to `reasoningTokens`; older responses leave it undefined. + * + * `providerMetadata` always carries the provider's raw usage payload — + * keyed by provider name (`{ openai: ... }`, `{ anthropic: ... }`, etc.) + * — for fields we don't normalize and for billing-level audit trails. + * Matches the same escape-hatch field on `LLMEvent`. + */ +export class Usage extends Schema.Class("LLM.Usage")({ + inputTokens: Schema.optional(Schema.Number), + outputTokens: Schema.optional(Schema.Number), + nonCachedInputTokens: Schema.optional(Schema.Number), + cacheReadInputTokens: Schema.optional(Schema.Number), + cacheWriteInputTokens: Schema.optional(Schema.Number), + reasoningTokens: Schema.optional(Schema.Number), + totalTokens: Schema.optional(Schema.Number), + providerMetadata: Schema.optional(ProviderMetadata), +}) { + /** + * Visible output tokens — `outputTokens` minus `reasoningTokens`, clamped + * to zero. The one place subtraction happens in this contract; the clamp + * means a provider reporting `reasoningTokens > outputTokens` produces a + * harmless zero rather than a negative that crashes downstream schemas. + */ + get visibleOutputTokens() { + return Math.max(0, (this.outputTokens ?? 0) - (this.reasoningTokens ?? 0)) + } + + static from(input: UsageInput) { + return input instanceof Usage ? input : new Usage(input) + } +} + +export type UsageInput = Usage | ConstructorParameters[0] + +export const StepStart = Schema.Struct({ + type: Schema.tag("step-start"), + index: Schema.Number, +}).annotate({ identifier: "LLM.Event.StepStart" }) +export type StepStart = Schema.Schema.Type + +export const TextStart = Schema.Struct({ + type: Schema.tag("text-start"), + id: ContentBlockID, + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.TextStart" }) +export type TextStart = Schema.Schema.Type + +export const TextDelta = Schema.Struct({ + type: Schema.tag("text-delta"), + id: ContentBlockID, + text: Schema.String, + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.TextDelta" }) +export type TextDelta = Schema.Schema.Type + +export const TextEnd = Schema.Struct({ + type: Schema.tag("text-end"), + id: ContentBlockID, + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.TextEnd" }) +export type TextEnd = Schema.Schema.Type + +export const ReasoningStart = Schema.Struct({ + type: Schema.tag("reasoning-start"), + id: ContentBlockID, + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.ReasoningStart" }) +export type ReasoningStart = Schema.Schema.Type + +export const ReasoningDelta = Schema.Struct({ + type: Schema.tag("reasoning-delta"), + id: ContentBlockID, + text: Schema.String, + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.ReasoningDelta" }) +export type ReasoningDelta = Schema.Schema.Type + +export const ReasoningEnd = Schema.Struct({ + type: Schema.tag("reasoning-end"), + id: ContentBlockID, + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.ReasoningEnd" }) +export type ReasoningEnd = Schema.Schema.Type + +export const ToolInputStart = Schema.Struct({ + type: Schema.tag("tool-input-start"), + id: ToolCallID, + name: Schema.String, + providerExecuted: Schema.optional(Schema.Boolean), + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.ToolInputStart" }) +export type ToolInputStart = Schema.Schema.Type + +export const ToolInputDelta = Schema.Struct({ + type: Schema.tag("tool-input-delta"), + id: ToolCallID, + name: Schema.String, + text: Schema.String, +}).annotate({ identifier: "LLM.Event.ToolInputDelta" }) +export type ToolInputDelta = Schema.Schema.Type + +export const ToolInputEnd = Schema.Struct({ + type: Schema.tag("tool-input-end"), + id: ToolCallID, + name: Schema.String, + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.ToolInputEnd" }) +export type ToolInputEnd = Schema.Schema.Type + +/** A local tool call whose final input could not be decoded. */ +export const ToolInputError = Schema.Struct({ + type: Schema.tag("tool-input-error"), + id: ToolCallID, + name: Schema.String, + raw: Schema.String, +}).annotate({ identifier: "LLM.Event.ToolInputError" }) +export type ToolInputError = Schema.Schema.Type + +export const ToolCall = Schema.Struct({ + type: Schema.tag("tool-call"), + id: ToolCallID, + name: Schema.String, + input: Schema.Unknown, + providerExecuted: Schema.optional(Schema.Boolean), + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.ToolCall" }) +export type ToolCall = Schema.Schema.Type + +export const ToolResult = Schema.Struct({ + type: Schema.tag("tool-result"), + id: ToolCallID, + name: Schema.String, + result: ToolResultValue, + output: Schema.optional(ToolOutput), + providerExecuted: Schema.optional(Schema.Boolean), + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.ToolResult" }) +export type ToolResult = Schema.Schema.Type + +export const ToolError = Schema.Struct({ + type: Schema.tag("tool-error"), + id: ToolCallID, + name: Schema.String, + message: Schema.String, + error: Schema.optional(Schema.Defect()), + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.ToolError" }) +export type ToolError = Schema.Schema.Type + +export const FinishReasonDetails = Schema.Struct({ + normalized: FinishReason, + raw: Schema.optional(Schema.String), +}).annotate({ identifier: "LLM.FinishReasonDetails" }) +export type FinishReasonDetails = Schema.Schema.Type + +export const StepFinish = Schema.Struct({ + type: Schema.tag("step-finish"), + index: Schema.Number, + reason: FinishReasonDetails, + usage: Schema.optional(Usage), + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.StepFinish" }) +export type StepFinish = Schema.Schema.Type + +export const Finish = Schema.Struct({ + type: Schema.tag("finish"), + reason: FinishReasonDetails, + usage: Schema.optional(Usage), + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.Finish" }) +export type Finish = Schema.Schema.Type + +export const ProviderErrorEvent = Schema.Struct({ + type: Schema.tag("provider-error"), + message: Schema.String, + classification: Schema.optional(ProviderFailureClassification), + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Event.ProviderError" }) +export type ProviderErrorEvent = Schema.Schema.Type + +const llmEventTagged = Schema.Union([ + StepStart, + TextStart, + TextDelta, + TextEnd, + ReasoningStart, + ReasoningDelta, + ReasoningEnd, + ToolInputStart, + ToolInputDelta, + ToolInputEnd, + ToolInputError, + ToolCall, + ToolResult, + ToolError, + StepFinish, + Finish, + ProviderErrorEvent, +]).pipe(Schema.toTaggedUnion("type")) + +type WithID = Omit & { readonly id: ID | string } +type WithUsage = Omit & { + readonly usage?: UsageInput +} + +const contentBlockID = (value: ContentBlockID | string) => ContentBlockID.make(value) +const toolCallID = (value: ToolCallID | string) => ToolCallID.make(value) + +/** + * camelCase aliases for `LLMEvent.guards` (provided by `Schema.toTaggedUnion`). + * Lets consumers write `events.filter(LLMEvent.is.toolCall)` instead of + * `events.filter(LLMEvent.guards["tool-call"])`. + */ +export const LLMEvent = Object.assign(llmEventTagged, { + stepStart: StepStart.make, + textStart: (input: WithID) => TextStart.make({ ...input, id: contentBlockID(input.id) }), + textDelta: (input: WithID) => TextDelta.make({ ...input, id: contentBlockID(input.id) }), + textEnd: (input: WithID) => TextEnd.make({ ...input, id: contentBlockID(input.id) }), + reasoningStart: (input: WithID) => + ReasoningStart.make({ ...input, id: contentBlockID(input.id) }), + reasoningDelta: (input: WithID) => + ReasoningDelta.make({ ...input, id: contentBlockID(input.id) }), + reasoningEnd: (input: WithID) => + ReasoningEnd.make({ ...input, id: contentBlockID(input.id) }), + toolInputStart: (input: WithID) => + ToolInputStart.make({ ...input, id: toolCallID(input.id) }), + toolInputDelta: (input: WithID) => + ToolInputDelta.make({ ...input, id: toolCallID(input.id) }), + toolInputEnd: (input: WithID) => ToolInputEnd.make({ ...input, id: toolCallID(input.id) }), + toolInputError: (input: WithID) => + ToolInputError.make({ ...input, id: toolCallID(input.id) }), + toolCall: (input: WithID) => ToolCall.make({ ...input, id: toolCallID(input.id) }), + toolResult: (input: WithID) => + ToolResult.make({ + ...input, + id: toolCallID(input.id), + output: input.output === undefined ? undefined : ToolOutput.make(input.output.structured, input.output.content), + }), + toolError: (input: WithID) => ToolError.make({ ...input, id: toolCallID(input.id) }), + stepFinish: (input: WithUsage) => + StepFinish.make({ + ...input, + usage: input.usage === undefined ? undefined : Usage.from(input.usage), + }), + finish: (input: WithUsage) => + Finish.make({ + ...input, + usage: input.usage === undefined ? undefined : Usage.from(input.usage), + }), + providerError: ProviderErrorEvent.make, + is: { + stepStart: llmEventTagged.guards["step-start"], + textStart: llmEventTagged.guards["text-start"], + textDelta: llmEventTagged.guards["text-delta"], + textEnd: llmEventTagged.guards["text-end"], + reasoningStart: llmEventTagged.guards["reasoning-start"], + reasoningDelta: llmEventTagged.guards["reasoning-delta"], + reasoningEnd: llmEventTagged.guards["reasoning-end"], + toolInputStart: llmEventTagged.guards["tool-input-start"], + toolInputDelta: llmEventTagged.guards["tool-input-delta"], + toolInputEnd: llmEventTagged.guards["tool-input-end"], + toolInputError: llmEventTagged.guards["tool-input-error"], + toolCall: llmEventTagged.guards["tool-call"], + toolResult: llmEventTagged.guards["tool-result"], + toolError: llmEventTagged.guards["tool-error"], + stepFinish: llmEventTagged.guards["step-finish"], + finish: llmEventTagged.guards.finish, + providerError: llmEventTagged.guards["provider-error"], + }, +}) +export type LLMEvent = Schema.Schema.Type + +export class PreparedRequest extends Schema.Class("LLM.PreparedRequest")({ + id: Schema.String, + route: RouteID, + protocol: ProtocolID, + model: ModelSchema, + body: Schema.Unknown, + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), +}) {} + +/** + * A `PreparedRequest` whose `body` is typed as `Body`. Use with the generic + * on `LLMClient.prepare(...)` when the caller knows which route their + * request will resolve to and wants its native shape statically exposed + * (debug UIs, request previews, plan rendering). + * + * The runtime body is identical — the route still emits `body: unknown` — so + * this is a type-level assertion the caller makes about what they expect to + * find. The prepare runtime does not validate the assertion. + */ +export type PreparedRequestOf = Omit & { + readonly body: Body +} + +const responseText = (events: ReadonlyArray) => + events + .filter(LLMEvent.is.textDelta) + .map((event) => event.text) + .join("") + +const responseReasoning = (events: ReadonlyArray) => + events + .filter(LLMEvent.is.reasoningDelta) + .map((event) => event.text) + .join("") + +const responseUsage = (events: ReadonlyArray) => + events.reduce( + (usage, event) => ("usage" in event && event.usage !== undefined ? event.usage : usage), + undefined, + ) + +interface ContentAssembly { + readonly contentIndex: number + readonly text: string + readonly providerMetadata?: ProviderMetadata +} + +interface ToolInputAssembly { + readonly name: string + readonly text: string + readonly providerMetadata?: ProviderMetadata +} + +interface ResponseState { + readonly events: ReadonlyArray + readonly message: Message + readonly usage?: Usage + readonly finishReason?: FinishReasonDetails + readonly textParts: Readonly> + readonly reasoningParts: Readonly> + readonly toolInputs: Readonly> +} + +const emptyResponseState = (): ResponseState => ({ + events: [], + message: Message.assistant([]), + textParts: {}, + reasoningParts: {}, + toolInputs: {}, +}) + +const appendEvent = (state: ResponseState, event: LLMEvent): ResponseState => { + const events = [...state.events, event] + if (LLMEvent.is.finish(event)) { + return { + ...state, + events, + usage: event.usage ?? state.usage, + finishReason: event.reason, + } + } + if (LLMEvent.is.providerError(event)) { + return { + ...state, + events, + finishReason: state.finishReason ?? { normalized: "error" }, + } + } + return { + ...state, + events, + usage: "usage" in event && event.usage !== undefined ? event.usage : state.usage, + } +} + +const textContent = (text: string, providerMetadata: ProviderMetadata | undefined): ContentPart => + providerMetadata === undefined ? { type: "text", text } : { type: "text", text, providerMetadata } + +const reasoningContent = (text: string, providerMetadata: ProviderMetadata | undefined): ContentPart => + providerMetadata === undefined ? { type: "reasoning", text } : { type: "reasoning", text, providerMetadata } + +const contentWith = (state: ResponseState, content: ReadonlyArray): ResponseState => ({ + ...state, + message: Message.assistant(content), +}) + +const appendContent = (state: ResponseState, part: ContentPart) => contentWith(state, [...state.message.content, part]) + +const replaceContent = (state: ResponseState, index: number, part: ContentPart) => + contentWith( + state, + state.message.content.map((item, itemIndex) => (itemIndex === index ? part : item)), + ) + +const ensureText = (state: ResponseState, id: string, providerMetadata?: ProviderMetadata): ResponseState => { + if (state.textParts[id]) return state + return { + ...appendContent(state, textContent("", providerMetadata)), + textParts: { + ...state.textParts, + [id]: { contentIndex: state.message.content.length, text: "", providerMetadata }, + }, + } +} + +const reduceTextDelta = (state: ResponseState, event: TextDelta): ResponseState => { + const started = ensureText(state, event.id, event.providerMetadata) + const current = started.textParts[event.id] + if (!current) return started + const text = current.text + event.text + const providerMetadata = event.providerMetadata ?? current.providerMetadata + return { + ...replaceContent(started, current.contentIndex, textContent(text, providerMetadata)), + textParts: { ...started.textParts, [event.id]: { ...current, text, providerMetadata } }, + } +} + +const reduceTextEnd = (state: ResponseState, event: TextEnd): ResponseState => { + const current = state.textParts[event.id] + if (!current) return state + const providerMetadata = event.providerMetadata ?? current.providerMetadata + return { + ...replaceContent(state, current.contentIndex, textContent(current.text, providerMetadata)), + textParts: { ...state.textParts, [event.id]: { ...current, providerMetadata } }, + } +} + +const ensureReasoning = (state: ResponseState, id: string, providerMetadata?: ProviderMetadata): ResponseState => { + if (state.reasoningParts[id]) return state + return { + ...appendContent(state, reasoningContent("", providerMetadata)), + reasoningParts: { + ...state.reasoningParts, + [id]: { contentIndex: state.message.content.length, text: "", providerMetadata }, + }, + } +} + +const reduceReasoningDelta = (state: ResponseState, event: ReasoningDelta): ResponseState => { + const started = ensureReasoning(state, event.id, event.providerMetadata) + const current = started.reasoningParts[event.id] + if (!current) return started + const text = current.text + event.text + const providerMetadata = event.providerMetadata ?? current.providerMetadata + return { + ...replaceContent(started, current.contentIndex, reasoningContent(text, providerMetadata)), + reasoningParts: { ...started.reasoningParts, [event.id]: { ...current, text, providerMetadata } }, + } +} + +const reduceReasoningEnd = (state: ResponseState, event: ReasoningEnd): ResponseState => { + const current = state.reasoningParts[event.id] + if (!current) return state + const providerMetadata = event.providerMetadata ?? current.providerMetadata + return { + ...replaceContent(state, current.contentIndex, reasoningContent(current.text, providerMetadata)), + reasoningParts: { ...state.reasoningParts, [event.id]: { ...current, providerMetadata } }, + } +} + +const reduceToolInputStart = (state: ResponseState, event: ToolInputStart): ResponseState => ({ + ...state, + toolInputs: { + ...state.toolInputs, + [event.id]: { name: event.name, text: "", providerMetadata: event.providerMetadata }, + }, +}) + +const reduceToolInputDelta = (state: ResponseState, event: ToolInputDelta): ResponseState => { + const current = state.toolInputs[event.id] ?? { name: event.name, text: "" } + return { + ...state, + toolInputs: { ...state.toolInputs, [event.id]: { ...current, text: current.text + event.text } }, + } +} + +const reduceToolInputEnd = (state: ResponseState, event: ToolInputEnd): ResponseState => { + const current = state.toolInputs[event.id] ?? { name: event.name, text: "" } + return { + ...state, + toolInputs: { + ...state.toolInputs, + [event.id]: { + ...current, + name: event.name, + providerMetadata: event.providerMetadata ?? current.providerMetadata, + }, + }, + } +} + +const toolCallContent = (event: ToolCall): ContentPart => + ToolCallPart.make({ + id: event.id, + name: event.name, + input: event.input, + ...(event.providerExecuted === undefined ? {} : { providerExecuted: event.providerExecuted }), + ...(event.providerMetadata === undefined ? {} : { providerMetadata: event.providerMetadata }), + }) + +const toolResultContent = (event: ToolResult): ContentPart => + ToolResultPart.make({ + id: event.id, + name: event.name, + result: event.result, + ...(event.providerExecuted === undefined ? {} : { providerExecuted: event.providerExecuted }), + ...(event.providerMetadata === undefined ? {} : { providerMetadata: event.providerMetadata }), + }) + +const reduceToolCall = (state: ResponseState, event: ToolCall): ResponseState => { + const { [event.id]: _finished, ...toolInputs } = state.toolInputs + return { ...appendContent(state, toolCallContent(event)), toolInputs } +} + +const reduceResponseState = (state: ResponseState, event: LLMEvent): ResponseState => { + const next = appendEvent(state, event) + switch (event.type) { + case "text-start": + return ensureText(next, event.id, event.providerMetadata) + case "text-delta": + return reduceTextDelta(next, event) + case "text-end": + return reduceTextEnd(next, event) + case "reasoning-start": + return ensureReasoning(next, event.id, event.providerMetadata) + case "reasoning-delta": + return reduceReasoningDelta(next, event) + case "reasoning-end": + return reduceReasoningEnd(next, event) + case "tool-input-start": + return reduceToolInputStart(next, event) + case "tool-input-delta": + return reduceToolInputDelta(next, event) + case "tool-input-end": + return reduceToolInputEnd(next, event) + case "tool-input-error": { + const { [event.id]: _finished, ...toolInputs } = next.toolInputs + return { ...next, toolInputs } + } + case "tool-call": + return reduceToolCall(next, event) + case "tool-result": + return appendContent(next, toolResultContent(event)) + default: + return next + } +} + +export class LLMResponse extends Schema.Class("LLM.Response")({ + message: Message, + events: Schema.Array(LLMEvent), + usage: Schema.optional(Usage), + finishReason: FinishReasonDetails, +}) { + /** Concatenated assistant text assembled from streamed `text-delta` events. */ + get text() { + return responseText(this.events) + } + + /** Concatenated reasoning text assembled from streamed `reasoning-delta` events. */ + get reasoning() { + return responseReasoning(this.events) + } + + /** Completed tool calls emitted by the provider. */ + get toolCalls() { + return this.events.filter(LLMEvent.is.toolCall) + } +} + +export namespace LLMResponse { + export type State = ResponseState + export type Output = LLMResponse | { readonly events: ReadonlyArray; readonly usage?: Usage } + + /** Initial reducer state for assembling one provider attempt. */ + export const empty = emptyResponseState + + /** Purely fold one provider-neutral event into the attempt assembly state. */ + export const reduce = reduceResponseState + + /** Return a completed response only after a terminal finish or provider error. */ + export const complete = (state: State): LLMResponse | undefined => + state.finishReason === undefined + ? undefined + : new LLMResponse({ + message: state.message, + events: [...state.events], + usage: state.usage, + finishReason: state.finishReason, + }) + + /** Convenience reducer for callers that already have a collected event list. */ + export const fromEvents = (events: ReadonlyArray) => complete(events.reduce(reduce, empty())) + + /** Concatenate assistant text from a response or collected event list. */ + export const text = (response: Output) => responseText(response.events) + + /** Return response usage, falling back to the latest usage-bearing event. */ + export const usage = (response: Output) => response.usage ?? responseUsage(response.events) + + /** Return completed tool calls from a response or collected event list. */ + export const toolCalls = (response: Output) => response.events.filter(LLMEvent.is.toolCall) + + /** Concatenate reasoning text from a response or collected event list. */ + export const reasoning = (response: Output) => responseReasoning(response.events) +} diff --git a/packages/llm/src/schema/ids.ts b/packages/ai/src/schema/ids.ts similarity index 87% rename from packages/llm/src/schema/ids.ts rename to packages/ai/src/schema/ids.ts index 7eb7409802cd..4775caf2ef90 100644 --- a/packages/llm/src/schema/ids.ts +++ b/packages/ai/src/schema/ids.ts @@ -1,5 +1,5 @@ import { Schema } from "effect" -import { ProviderMetadata } from "@opencode-ai/schema/llm" +import { LLM, ProviderMetadata } from "@opencode-ai/schema/llm" export { ProviderMetadata } @@ -27,7 +27,7 @@ export const ToolCallID = Schema.String export type ToolCallID = Schema.Schema.Type export const ReasoningEfforts = ["none", "minimal", "low", "medium", "high", "xhigh", "max"] as const -export const ReasoningEffort = Schema.Literals(ReasoningEfforts) +export const ReasoningEffort = Schema.String export type ReasoningEffort = Schema.Schema.Type export const TextVerbosity = Schema.Literals(["low", "medium", "high"]) @@ -36,7 +36,7 @@ export type TextVerbosity = Schema.Schema.Type export const MessageRole = Schema.Literals(["system", "user", "assistant", "tool"]) export type MessageRole = Schema.Schema.Type -export const FinishReason = Schema.Literals(["stop", "length", "tool-calls", "content-filter", "error", "unknown"]) +export const FinishReason = LLM.FinishReason export type FinishReason = Schema.Schema.Type export const JsonSchema = Schema.Record(Schema.String, Schema.Unknown) diff --git a/packages/llm/src/schema/index.ts b/packages/ai/src/schema/index.ts similarity index 100% rename from packages/llm/src/schema/index.ts rename to packages/ai/src/schema/index.ts diff --git a/packages/ai/src/schema/messages.ts b/packages/ai/src/schema/messages.ts new file mode 100644 index 000000000000..bf859f946cf1 --- /dev/null +++ b/packages/ai/src/schema/messages.ts @@ -0,0 +1,301 @@ +import { Schema } from "effect" +import { Tool } from "@opencode-ai/schema/tool" +import { JsonSchema, MessageRole, ProviderMetadata } from "./ids" +import { CacheHint, CachePolicy, GenerationOptions, HttpOptions, ModelSchema, ProviderOptions } from "./options" +import { isRecord } from "../utils/record" + +const systemPartSchema = Schema.Struct({ + type: Schema.Literal("text"), + text: Schema.String, + cache: Schema.optional(CacheHint), + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), +}).annotate({ identifier: "LLM.SystemPart" }) +export type SystemPart = Schema.Schema.Type + +const makeSystemPart = (text: string): SystemPart => ({ type: "text", text }) + +export const SystemPart = Object.assign(systemPartSchema, { + make: makeSystemPart, + content: (input?: string | SystemPart | ReadonlyArray) => { + if (input === undefined) return [] + return typeof input === "string" ? [makeSystemPart(input)] : Array.isArray(input) ? [...input] : [input] + }, +}) + +export const TextPart = Schema.Struct({ + type: Schema.Literal("text"), + text: Schema.String, + cache: Schema.optional(CacheHint), + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Content.Text" }) +export type TextPart = Schema.Schema.Type + +export const MediaPart = Schema.Struct({ + type: Schema.Literal("media"), + mediaType: Schema.String, + data: Schema.Union([Schema.String, Schema.Uint8Array]), + filename: Schema.optional(Schema.String), + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), +}).annotate({ identifier: "LLM.Content.Media" }) +export type MediaPart = Schema.Schema.Type + +const isToolResultValue = (value: unknown): value is ToolResultValue => + isRecord(value) && + (value.type === "text" || value.type === "json" || value.type === "error" || value.type === "content") && + "value" in value + +export const ToolResultValue = Object.assign( + Schema.Union([ + Schema.Struct({ + type: Schema.Literal("json"), + value: Schema.Unknown, + }), + Schema.Struct({ + type: Schema.Literal("text"), + value: Schema.Unknown, + }), + Schema.Struct({ + type: Schema.Literal("error"), + value: Schema.Unknown, + }), + Schema.Struct({ + type: Schema.Literal("content"), + value: Schema.Array(Tool.Content), + }), + ]).annotate({ identifier: "LLM.ToolResult" }), + { + is: isToolResultValue, + make: (value: unknown, type: ToolResultValue["type"] = "json"): ToolResultValue => { + if (isToolResultValue(value)) return value + if (type === "content") return { type, value: Array.isArray(value) ? value : [] } + return { type, value } + }, + }, +) +export type ToolResultValue = Schema.Schema.Type + +export interface ToolOutput { + readonly structured: unknown + readonly content: ReadonlyArray +} + +export const ToolOutput = Object.assign( + Schema.Struct({ + structured: Schema.Unknown, + content: Schema.Array(Tool.Content), + }).annotate({ identifier: "LLM.ToolOutput" }), + { + make: (structured: unknown, content: ReadonlyArray = []): ToolOutput => ({ structured, content }), + fromResultValue: (result: ToolResultValue): ToolOutput | undefined => { + switch (result.type) { + case "json": + return { structured: result.value, content: [] } + case "text": + return { structured: {}, content: [{ type: "text", text: toolResultText(result.value) }] } + case "content": + return { structured: {}, content: result.value } + case "error": + return undefined + } + }, + toResultValue: (output: ToolOutput): ToolResultValue => { + if (output.content.length === 0) return { type: "json", value: output.structured } + if (output.content.length === 1 && output.content[0]?.type === "text") + return { type: "text", value: output.content[0].text } + return { type: "content", value: output.content } + }, + }, +) + +const toolResultText = (value: unknown) => { + if (typeof value === "string") return value + try { + return JSON.stringify(value) ?? String(value) + } catch { + return String(value) + } +} + +export const ToolCallPart = Object.assign( + Schema.Struct({ + type: Schema.Literal("tool-call"), + id: Schema.String, + name: Schema.String, + input: Schema.Unknown, + providerExecuted: Schema.optional(Schema.Boolean), + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), + providerMetadata: Schema.optional(ProviderMetadata), + }).annotate({ identifier: "LLM.Content.ToolCall" }), + { + make: (input: Omit): ToolCallPart => ({ type: "tool-call", ...input }), + }, +) +export type ToolCallPart = Schema.Schema.Type + +export const ToolResultPart = Object.assign( + Schema.Struct({ + type: Schema.Literal("tool-result"), + id: Schema.String, + name: Schema.String, + result: ToolResultValue, + providerExecuted: Schema.optional(Schema.Boolean), + cache: Schema.optional(CacheHint), + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), + providerMetadata: Schema.optional(ProviderMetadata), + }).annotate({ identifier: "LLM.Content.ToolResult" }), + { + make: ( + input: Omit & { + readonly result: unknown + readonly resultType?: ToolResultValue["type"] + }, + ): ToolResultPart => ({ + type: "tool-result", + id: input.id, + name: input.name, + result: ToolResultValue.make(input.result, input.resultType), + providerExecuted: input.providerExecuted, + cache: input.cache, + metadata: input.metadata, + providerMetadata: input.providerMetadata, + }), + }, +) +export type ToolResultPart = Schema.Schema.Type + +export const ReasoningPart = Schema.Struct({ + type: Schema.Literal("reasoning"), + text: Schema.String, + encrypted: Schema.optional(Schema.String), + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), + providerMetadata: Schema.optional(ProviderMetadata), +}).annotate({ identifier: "LLM.Content.Reasoning" }) +export type ReasoningPart = Schema.Schema.Type + +export const ContentPart = Schema.Union([TextPart, MediaPart, ToolCallPart, ToolResultPart, ReasoningPart]).pipe( + Schema.toTaggedUnion("type"), +) +export type ContentPart = Schema.Schema.Type + +export class Message extends Schema.Class("LLM.Message")({ + id: Schema.optional(Schema.String), + role: MessageRole, + content: Schema.Array(ContentPart), + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), + native: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), +}) {} + +export namespace Message { + export type ContentInput = string | ContentPart | ReadonlyArray + export type SystemContentInput = string | TextPart | ReadonlyArray + export type Input = Omit[0], "content"> & { + readonly content: ContentInput + } + + export const text = (value: string): ContentPart => ({ type: "text", text: value }) + + export const content = (input: ContentInput) => + typeof input === "string" ? [text(input)] : Array.isArray(input) ? [...input] : [input] + + export const make = (input: Message | Input) => { + if (input instanceof Message) return input + return new Message({ ...input, content: content(input.content) }) + } + + export const user = (content: ContentInput) => make({ role: "user", content }) + + export const assistant = (content: ContentInput) => make({ role: "assistant", content }) + + /** + * Add an operator-authored instruction at this chronological point in the + * conversation. This is distinct from the initial `LLMRequest.system` + * prompt. Keep raw retrieved, tool, and web content out of privileged system + * updates; pass that untrusted content through ordinary user/tool channels. + */ + export const system = (content: SystemContentInput) => make({ role: "system", content }) + + export const tool = (result: ToolResultPart | Parameters[0]) => + make({ role: "tool", content: ["type" in result ? result : ToolResultPart.make(result)] }) +} + +export class ToolDefinition extends Schema.Class("LLM.ToolDefinition")({ + name: Schema.String, + description: Schema.String, + inputSchema: JsonSchema, + outputSchema: Schema.optional(JsonSchema), + cache: Schema.optional(CacheHint), + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), + native: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), +}) {} + +export namespace ToolDefinition { + export type Input = ToolDefinition | ConstructorParameters[0] + + /** Normalize tool definition input into the canonical `ToolDefinition` class. */ + export const make = (input: Input) => (input instanceof ToolDefinition ? input : new ToolDefinition(input)) +} + +export class ToolChoice extends Schema.Class("LLM.ToolChoice")({ + type: Schema.Literals(["auto", "none", "required", "tool"]), + name: Schema.optional(Schema.String), +}) {} + +export namespace ToolChoice { + export type Mode = Exclude + export type Input = ToolChoice | ConstructorParameters[0] | ToolDefinition | string + + const isMode = (value: string): value is Mode => value === "auto" || value === "none" || value === "required" + + /** Select a specific named tool. */ + export const named = (value: string) => new ToolChoice({ type: "tool", name: value }) + + /** Normalize ergonomic tool-choice inputs into the canonical `ToolChoice` class. */ + export const make = (input: Input) => { + if (input instanceof ToolChoice) return input + if (input instanceof ToolDefinition) return named(input.name) + if (typeof input === "string") return isMode(input) ? new ToolChoice({ type: input }) : named(input) + return new ToolChoice(input) + } +} + +export class LLMRequest extends Schema.Class("LLM.Request")({ + id: Schema.optional(Schema.String), + model: ModelSchema, + system: Schema.Array(SystemPart), + messages: Schema.Array(Message), + tools: Schema.Array(ToolDefinition), + toolChoice: Schema.optional(ToolChoice), + generation: Schema.optional(GenerationOptions), + providerOptions: Schema.optional(ProviderOptions), + http: Schema.optional(HttpOptions), + cache: Schema.optional(CachePolicy), + metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), +}) {} + +export namespace LLMRequest { + export type Input = ConstructorParameters[0] + + export const input = (request: LLMRequest): Input => ({ + id: request.id, + model: request.model, + system: request.system, + messages: request.messages, + tools: request.tools, + toolChoice: request.toolChoice, + generation: request.generation, + providerOptions: request.providerOptions, + http: request.http, + cache: request.cache, + metadata: request.metadata, + }) + + export const update = (request: LLMRequest, patch: Partial) => { + if (Object.keys(patch).length === 0) return request + return new LLMRequest({ + ...input(request), + ...patch, + model: patch.model ?? request.model, + }) + } +} diff --git a/packages/ai/src/schema/options.ts b/packages/ai/src/schema/options.ts new file mode 100644 index 000000000000..c80bce0fda43 --- /dev/null +++ b/packages/ai/src/schema/options.ts @@ -0,0 +1,277 @@ +import { Schema } from "effect" +import { JsonSchema, ModelID, ProviderID } from "./ids" +import type { AnyRoute } from "../route/client" +import { isRecord } from "../utils/record" + +export const mergeJsonRecords = ( + ...items: ReadonlyArray | undefined> +): Record | undefined => { + const defined = items.filter((item): item is Record => item !== undefined) + if (defined.length === 0) return undefined + if (defined.length === 1 && Object.values(defined[0]).every((value) => value !== undefined)) return defined[0] + const result: Record = {} + for (const item of defined) { + for (const [key, value] of Object.entries(item)) { + if (value === undefined) continue + result[key] = isRecord(result[key]) && isRecord(value) ? mergeJsonRecords(result[key], value) : value + } + } + return Object.keys(result).length === 0 ? undefined : result +} + +const mergeStringRecords = ( + ...items: ReadonlyArray | undefined> +): Record | undefined => { + const defined = items.filter((item): item is Record => item !== undefined) + if (defined.length === 0) return undefined + if (defined.length === 1) return defined[0] + const result = Object.fromEntries( + defined.flatMap((item) => + Object.entries(item).filter((entry): entry is [string, string] => entry[1] !== undefined), + ), + ) + return Object.keys(result).length === 0 ? undefined : result +} + +export const ProviderOptions = Schema.Record(Schema.String, Schema.Record(Schema.String, Schema.Unknown)) +export type ProviderOptions = Schema.Schema.Type + +export const mergeProviderOptions = ( + ...items: ReadonlyArray +): ProviderOptions | undefined => { + const result: Record> = {} + for (const item of items) { + if (!item) continue + for (const [provider, options] of Object.entries(item)) { + const merged = mergeJsonRecords(result[provider], options) + if (merged) result[provider] = merged + } + } + return Object.keys(result).length === 0 ? undefined : result +} + +export class HttpOptions extends Schema.Class("LLM.HttpOptions")({ + body: Schema.optional(JsonSchema), + headers: Schema.optional(Schema.Record(Schema.String, Schema.String)), + query: Schema.optional(Schema.Record(Schema.String, Schema.String)), +}) {} + +export namespace HttpOptions { + export type Input = HttpOptions | ConstructorParameters[0] + + /** Normalize HTTP option input into the canonical `HttpOptions` class. */ + export const make = (input: Input) => (input instanceof HttpOptions ? input : new HttpOptions(input)) +} + +export const mergeHttpOptions = (...items: ReadonlyArray): HttpOptions | undefined => { + const body = mergeJsonRecords(...items.map((item) => item?.body)) + const headers = mergeStringRecords(...items.map((item) => item?.headers)) + const query = mergeStringRecords(...items.map((item) => item?.query)) + if (!body && !headers && !query) return undefined + return new HttpOptions({ body, headers, query }) +} + +export class GenerationOptions extends Schema.Class("LLM.GenerationOptions")({ + maxTokens: Schema.optional(Schema.Number), + temperature: Schema.optional(Schema.Number), + topP: Schema.optional(Schema.Number), + topK: Schema.optional(Schema.Number), + frequencyPenalty: Schema.optional(Schema.Number), + presencePenalty: Schema.optional(Schema.Number), + seed: Schema.optional(Schema.Number), + stop: Schema.optional(Schema.Array(Schema.String)), +}) {} + +export namespace GenerationOptions { + export type Input = GenerationOptions | ConstructorParameters[0] + + /** Normalize generation option input into the canonical `GenerationOptions` class. */ + export const make = (input: Input = {}) => (input instanceof GenerationOptions ? input : new GenerationOptions(input)) +} + +export type GenerationOptionsFields = { + readonly maxTokens?: number + readonly temperature?: number + readonly topP?: number + readonly topK?: number + readonly frequencyPenalty?: number + readonly presencePenalty?: number + readonly seed?: number + readonly stop?: ReadonlyArray +} + +export type GenerationOptionsInput = GenerationOptions | GenerationOptionsFields + +const latestGeneration = ( + items: ReadonlyArray, + key: Key, +) => items.findLast((item) => item?.[key] !== undefined)?.[key] + +export const mergeGenerationOptions = (...items: ReadonlyArray) => { + const result = new GenerationOptions({ + maxTokens: latestGeneration(items, "maxTokens"), + temperature: latestGeneration(items, "temperature"), + topP: latestGeneration(items, "topP"), + topK: latestGeneration(items, "topK"), + frequencyPenalty: latestGeneration(items, "frequencyPenalty"), + presencePenalty: latestGeneration(items, "presencePenalty"), + seed: latestGeneration(items, "seed"), + stop: latestGeneration(items, "stop"), + }) + return Object.values(result).some((value) => value !== undefined) ? result : undefined +} + +export class ModelLimits extends Schema.Class("LLM.ModelLimits")({ + context: Schema.optional(Schema.Number), + output: Schema.optional(Schema.Number), +}) {} + +export namespace ModelLimits { + export type Input = ModelLimits | ConstructorParameters[0] + + /** Normalize model limit input into the canonical `ModelLimits` class. */ + export const make = (input: Input | undefined) => + input instanceof ModelLimits ? input : new ModelLimits(input ?? {}) +} + +export class ModelDefaults extends Schema.Class("LLM.ModelDefaults")({ + limits: Schema.optional(ModelLimits), + generation: Schema.optional(GenerationOptions), + providerOptions: Schema.optional(ProviderOptions), + http: Schema.optional(HttpOptions), +}) {} + +export namespace ModelDefaults { + export type Input = + | ModelDefaults + | { + readonly limits?: ModelLimits.Input + readonly generation?: GenerationOptions.Input + readonly providerOptions?: ProviderOptions + readonly http?: HttpOptions.Input + } + + /** Normalize selected-model request defaults without applying precedence. */ + export const make = (input: Input) => { + if (input instanceof ModelDefaults) return input + return new ModelDefaults({ + limits: input.limits === undefined ? undefined : ModelLimits.make(input.limits), + generation: input.generation === undefined ? undefined : GenerationOptions.make(input.generation), + providerOptions: input.providerOptions, + http: input.http === undefined ? undefined : HttpOptions.make(input.http), + }) + } +} + +export const ModelToolSchemaCompatibility = Schema.Literals(["gemini", "moonshot"]) +export type ModelToolSchemaCompatibility = Schema.Schema.Type + +export class ModelCompatibility extends Schema.Class("LLM.ModelCompatibility")({ + toolSchema: Schema.optional(ModelToolSchemaCompatibility), + reasoningField: Schema.optional(Schema.String), +}) {} + +export namespace ModelCompatibility { + export type Input = ModelCompatibility | ConstructorParameters[0] + + /** Normalize model/upstream compatibility metadata without projecting requests. */ + export const make = (input: Input) => (input instanceof ModelCompatibility ? input : new ModelCompatibility(input)) +} + +export class Model { + readonly id: ModelID + readonly provider: ProviderID + readonly route: AnyRoute + readonly defaults?: ModelDefaults + readonly compatibility?: ModelCompatibility + + constructor(input: Model.ConstructorInput) { + this.id = input.id + this.provider = input.provider + this.route = input.route + this.defaults = input.defaults + this.compatibility = input.compatibility + } + + static make(input: Model.Input) { + return new Model({ + id: ModelID.make(input.id), + provider: ProviderID.make(input.provider), + route: input.route, + defaults: input.defaults === undefined ? undefined : ModelDefaults.make(input.defaults), + compatibility: input.compatibility === undefined ? undefined : ModelCompatibility.make(input.compatibility), + }) + } + + static input(model: Model): Model.ConstructorInput { + return { + id: model.id, + provider: model.provider, + route: model.route, + defaults: model.defaults, + compatibility: model.compatibility, + } + } + + static update(model: Model, patch: Partial) { + if (Object.keys(patch).length === 0) return model + return Model.make({ + ...Model.input(model), + ...patch, + }) + } +} + +export namespace Model { + export type ConstructorInput = { + readonly id: ModelID + readonly provider: ProviderID + readonly route: AnyRoute + readonly defaults?: ModelDefaults + readonly compatibility?: ModelCompatibility + } + + export type Input = Omit & { + readonly id: string | ModelID + readonly provider: string | ProviderID + readonly defaults?: ModelDefaults.Input + readonly compatibility?: ModelCompatibility.Input + } +} + +export type ModelInput = Model.Input + +export const ModelSchema = Schema.declare((value): value is Model => value instanceof Model, { expected: "LLM.Model" }) + +export class CacheHint extends Schema.Class("LLM.CacheHint")({ + type: Schema.Literals(["ephemeral", "persistent"]), + ttlSeconds: Schema.optional(Schema.Number), +}) {} + +// Auto-placement policy for prompt caching. The protocol-neutral lowering step +// reads this and injects `CacheHint`s at the configured boundaries; the +// per-protocol body builders then translate those hints into wire markers as +// usual. `"auto"` is the recommended default for agent loops — it places +// breakpoints at the last tool definition, the first and last distinct system +// parts, and the conversation tail. The rolling message breakpoint keeps a +// prior cache entry within Anthropic/Bedrock's 20-block lookback during long +// tool loops. +// +// Pass `"none"` to opt out entirely (the legacy behavior). Pass the granular +// object form to override individual choices. +export const CachePolicyObject = Schema.Struct({ + tools: Schema.optional(Schema.Boolean), + system: Schema.optional(Schema.Boolean), + messages: Schema.optional( + Schema.Union([ + Schema.Literal("latest-user-message"), + Schema.Literal("latest-assistant"), + Schema.Struct({ tail: Schema.Number }), + ]), + ), + ttlSeconds: Schema.optional(Schema.Number), +}) +export type CachePolicyObject = Schema.Schema.Type + +export const CachePolicy = Schema.Union([Schema.Literal("auto"), Schema.Literal("none"), CachePolicyObject]) +export type CachePolicy = Schema.Schema.Type diff --git a/packages/ai/src/tool-runtime.ts b/packages/ai/src/tool-runtime.ts new file mode 100644 index 000000000000..71958977cb78 --- /dev/null +++ b/packages/ai/src/tool-runtime.ts @@ -0,0 +1,97 @@ +import { Effect } from "effect" +import { + LLMEvent, + type ToolCallPart, + ToolFailure, + ToolOutput, + ToolResultValue, + type ToolOutput as ToolOutputType, + type ToolResultValue as ToolResultValueType, +} from "./schema" +import { type AnyTool, type Tools } from "./tool" + +export interface ToolSettlement { + readonly result: ToolResultValueType + readonly output?: ToolOutputType +} + +export interface DispatchResult extends ToolSettlement { + readonly events: ReadonlyArray +} + +/** Execute one canonical tool call without owning provider IO or continuation. */ +export const dispatch = (tools: Tools, call: ToolCallPart): Effect.Effect => { + const tool = tools[call.name] + if (!tool) return Effect.succeed(result(call, { type: "error", value: `Unknown tool: ${call.name}` })) + if (!tool.execute) + return Effect.succeed(result(call, { type: "error", value: `Tool has no execute handler: ${call.name}` })) + + return decodeAndExecute(tool, call).pipe( + Effect.map((value) => result(call, value)), + Effect.catchTag("Tool.Error", (failure) => + Effect.succeed(result(call, { type: "error", value: failure.message }, failure.error)), + ), + ) +} + +const decodeAndExecute = (tool: AnyTool, call: ToolCallPart): Effect.Effect => + tool._decode(call.input).pipe( + Effect.mapError((error) => new ToolFailure({ message: `Invalid tool input: ${error.message}` })), + Effect.flatMap((decoded) => + tool.execute!(decoded, { id: call.id, name: call.name }).pipe( + Effect.flatMap((value) => + tool._encode(value).pipe( + Effect.mapError( + (error) => + new ToolFailure({ + message: `Tool returned an invalid value for its success schema: ${error.message}`, + }), + ), + ), + ), + Effect.map((encoded) => { + if (tool._legacyResult && ToolResultValue.is(encoded)) + return { result: encoded, output: ToolOutput.fromResultValue(encoded) } + const output = tool._project(decoded, call.id, encoded) + const result = ToolOutput.toResultValue(output) + return result.type === "error" ? { result } : { result, output } + }), + ), + ), + ) + +const result = (call: ToolCallPart, value: ToolResultValueType | ToolSettlement, error?: unknown): DispatchResult => { + const settlement = ToolResultValue.is(value) ? { result: value } : value + return { + result: settlement.result, + output: settlement.output, + events: + settlement.result.type === "error" + ? [ + LLMEvent.toolError({ + id: call.id, + name: call.name, + message: String(settlement.result.value), + error, + providerMetadata: call.providerMetadata, + }), + LLMEvent.toolResult({ + id: call.id, + name: call.name, + result: settlement.result, + providerMetadata: call.providerMetadata, + }), + ] + : [ + LLMEvent.toolResult({ + id: call.id, + name: call.name, + result: settlement.result, + output: settlement.output, + providerMetadata: call.providerMetadata, + }), + ], + } +} + +export const ToolRuntime = { dispatch } as const diff --git a/packages/ai/src/tool.ts b/packages/ai/src/tool.ts new file mode 100644 index 000000000000..25df2be2878e --- /dev/null +++ b/packages/ai/src/tool.ts @@ -0,0 +1,253 @@ +import { Effect, JsonSchema, Schema } from "effect" +import { Tool } from "@opencode-ai/schema/tool" +import type { + ToolCallPart, + ToolDefinition as ToolDefinitionClass, + ToolOutput as ToolOutputType, +} from "./schema" +import { ToolDefinition, ToolFailure, ToolOutput } from "./schema" + +/** + * Schema constraint for tool parameters / success values: no decoding or + * encoding services are allowed. Tools should be self-contained — anything + * beyond pure data conversion belongs in the handler closure. + */ +export type ToolSchema = Schema.Codec +export interface ToolExecuteContext { + readonly id: ToolCallPart["id"] + readonly name: ToolCallPart["name"] +} + +export type ToolExecute, Success extends ToolSchema> = ( + params: Schema.Schema.Type, + context?: ToolExecuteContext, +) => Effect.Effect, ToolFailure> + +export interface ToolModelOutputInput { + readonly callID: ToolCallPart["id"] + readonly parameters: Parameters + readonly output: Output +} + +export type ToolToModelOutput, Success extends ToolSchema> = ( + input: ToolModelOutputInput, Success["Encoded"]>, +) => ReadonlyArray + +/** + * A type-safe LLM tool. Each tool bundles its own description, parameter + * Schema and success Schema. The execute handler is optional: omit it when you + * only want to expose a tool schema to the model and handle tool calls outside + * this package. + * + * Errors must be expressed as `ToolFailure`. Unmapped errors and defects fail + * the stream. + * + * Internally each tool also carries memoized codecs and a precomputed + * `ToolDefinition` so callers do not rebuild them per invocation. + */ +export interface Definition, Success extends ToolSchema> { + readonly description: string + readonly parameters: Parameters + readonly success: Success + readonly execute?: ToolExecute + readonly toModelOutput?: ToolToModelOutput + readonly toStructuredOutput?: (output: Success["Encoded"]) => unknown + /** @internal */ + readonly _decode: (input: unknown) => Effect.Effect, Schema.SchemaError> + /** @internal */ + readonly _encode: (value: Schema.Schema.Type) => Effect.Effect + /** @internal */ + readonly _project: ( + parameters: Schema.Schema.Type, + callID: ToolCallPart["id"], + output: unknown, + ) => ToolOutputType + /** @internal */ + readonly _legacyResult: boolean + /** @internal */ + readonly _definition: ToolDefinitionClass +} + +export type AnyTool = Definition + +export type ExecutableTool, Success extends ToolSchema> = Definition< + Parameters, + Success +> & { + readonly execute: ToolExecute +} + +export type AnyExecutableTool = ExecutableTool + +export type ExecutableTools = Record + +type TypedToolConfig = { + readonly description: string + readonly parameters: ToolSchema + readonly success: ToolSchema + readonly execute?: ToolExecute, ToolSchema> + readonly toModelOutput?: ToolToModelOutput, ToolSchema> + readonly toStructuredOutput?: (output: unknown) => unknown +} + +type DynamicToolConfig = { + readonly description: string + readonly jsonSchema: JsonSchema.JsonSchema + readonly outputSchema?: JsonSchema.JsonSchema + readonly execute?: (params: unknown, context?: ToolExecuteContext) => Effect.Effect + readonly toModelOutput?: (input: ToolModelOutputInput) => ReadonlyArray + readonly toStructuredOutput?: (output: unknown) => unknown +} + +/** + * Constructs a tool. Two input modes: + * + * 1. **Typed** — pass Effect `parameters` and `success` Schemas; inputs and + * outputs are statically typed and decoded/encoded automatically. + * + * ```ts + * Tool.make({ + * description: "Get current weather", + * parameters: Schema.Struct({ city: Schema.String }), + * success: Schema.Struct({ temperature: Schema.Number }), + * execute: ({ city }) => Effect.succeed({ temperature: 22 }), + * }) + * ``` + * + * 2. **Dynamic** — pass raw JSON Schema as `jsonSchema`. Use this when the + * schema comes from an external source (MCP server, plugin manifest, + * dynamic config) and is not known at compile time. Inputs are typed as + * `unknown`; the handler is responsible for any validation it needs. + * + * ```ts + * Tool.make({ + * description: "Look something up", + * jsonSchema: { type: "object", properties: { ... } }, + * execute: (params) => Effect.succeed(...), + * }) + * ``` + * + * In both modes the produced tool flows through `toDefinitions(...)` + * identically. + */ +export function make, Success extends ToolSchema>(config: { + readonly description: string + readonly parameters: Parameters + readonly success: Success + readonly execute: ToolExecute + readonly toModelOutput?: ToolToModelOutput + readonly toStructuredOutput?: (output: Success["Encoded"]) => unknown +}): ExecutableTool +export function make, Success extends ToolSchema>(config: { + readonly description: string + readonly parameters: Parameters + readonly success: Success + readonly execute?: undefined + readonly toModelOutput?: ToolToModelOutput + readonly toStructuredOutput?: (output: Success["Encoded"]) => unknown +}): Definition +export function make(config: { + readonly description: string + readonly jsonSchema: JsonSchema.JsonSchema + readonly outputSchema?: JsonSchema.JsonSchema + readonly execute: (params: unknown, context?: ToolExecuteContext) => Effect.Effect + readonly toModelOutput?: (input: ToolModelOutputInput) => ReadonlyArray + readonly toStructuredOutput?: (output: unknown) => unknown +}): AnyExecutableTool +export function make(config: { + readonly description: string + readonly jsonSchema: JsonSchema.JsonSchema + readonly outputSchema?: JsonSchema.JsonSchema + readonly execute?: undefined + readonly toModelOutput?: (input: ToolModelOutputInput) => ReadonlyArray + readonly toStructuredOutput?: (output: unknown) => unknown +}): AnyTool +export function make(config: TypedToolConfig | DynamicToolConfig): AnyTool { + if ("jsonSchema" in config) { + return { + description: config.description, + parameters: Schema.Unknown as ToolSchema, + success: Schema.Unknown as ToolSchema, + execute: config.execute, + toModelOutput: config.toModelOutput, + toStructuredOutput: config.toStructuredOutput, + _decode: Effect.succeed, + _encode: Effect.succeed, + _project: (parameters, callID, output) => + project(config.toModelOutput, config.toStructuredOutput, parameters, callID, output), + _legacyResult: config.toModelOutput === undefined && config.toStructuredOutput === undefined, + _definition: new ToolDefinition({ + name: "", + description: config.description, + inputSchema: config.jsonSchema, + outputSchema: config.outputSchema, + }), + } + } + return { + description: config.description, + parameters: config.parameters, + success: config.success, + execute: config.execute, + toModelOutput: config.toModelOutput, + toStructuredOutput: config.toStructuredOutput, + _decode: Schema.decodeUnknownEffect(config.parameters), + _encode: Schema.encodeEffect(config.success), + _project: (parameters, callID, output) => + project(config.toModelOutput, config.toStructuredOutput, parameters, callID, output), + _legacyResult: false, + _definition: new ToolDefinition({ + name: "", + description: config.description, + inputSchema: toJsonSchema(config.parameters), + outputSchema: toJsonSchema(config.success), + }), + } +} + +/** + * A record of named tools. The record key becomes the tool name on the wire. + */ +export type Tools = Record + +/** + * Convert a tools record into the `ToolDefinition[]` shape that + * `LLMRequest.tools` expects. + * + * Tool names come from the record keys, so the per-tool cached + * `_definition` is rebuilt with the correct name here. The JSON Schema body + * is reused. + */ +export const toDefinitions = (tools: Tools): ReadonlyArray => + Object.entries(tools).map( + ([name, item]) => + new ToolDefinition({ + name, + description: item._definition.description, + inputSchema: item._definition.inputSchema, + outputSchema: item._definition.outputSchema, + }), + ) + +const toJsonSchema = (schema: Schema.Top): JsonSchema.JsonSchema => { + const document = Schema.toJsonSchemaDocument(schema) + if (Object.keys(document.definitions).length === 0) return document.schema + return { ...document.schema, $defs: document.definitions } +} + +const project = ( + toModelOutput: ((input: ToolModelOutputInput) => ReadonlyArray) | undefined, + toStructuredOutput: ((output: unknown) => unknown) | undefined, + parameters: unknown, + callID: ToolCallPart["id"], + output: unknown, +): ToolOutputType => + ToolOutput.make( + toStructuredOutput?.(output) ?? output, + toModelOutput?.({ callID, parameters, output }) ?? + (typeof output === "string" ? [{ type: "text", text: output }] : []), + ) + +export { ToolFailure } + +export * as Tool from "./tool" diff --git a/packages/llm/src/utils/record.ts b/packages/ai/src/utils/record.ts similarity index 100% rename from packages/llm/src/utils/record.ts rename to packages/ai/src/utils/record.ts diff --git a/packages/opencode/sst-env.d.ts b/packages/ai/sst-env.d.ts similarity index 100% rename from packages/opencode/sst-env.d.ts rename to packages/ai/sst-env.d.ts diff --git a/packages/llm/test/adapter.test.ts b/packages/ai/test/adapter.test.ts similarity index 78% rename from packages/llm/test/adapter.test.ts rename to packages/ai/test/adapter.test.ts index 8e182948fa2c..b2b180a2b226 100644 --- a/packages/llm/test/adapter.test.ts +++ b/packages/ai/test/adapter.test.ts @@ -1,6 +1,6 @@ import { describe, expect } from "bun:test" import { Effect, Schema, Stream } from "effect" -import { LLM } from "../src" +import { LLM, LLMRequest, LLMResponse } from "../src" import { Route, Endpoint, LLMClient, Protocol, type FramingDef } from "../src/route" import { Model } from "../src/schema" import { testEffect } from "./lib/effect" @@ -40,7 +40,7 @@ const fakeFraming: FramingDef = { const raiseEvent = (event: FakeEvent): import("../src/schema").LLMEvent => event.type === "finish" - ? { type: "finish", reason: event.reason } + ? { type: "finish", reason: { normalized: event.reason } } : { type: "text-delta", id: "text-0", text: event.text } const fakeProtocol = Protocol.make({ @@ -105,6 +105,9 @@ const echoLayer = dynamicResponse(({ text, respond }) => ) const it = testEffect(echoLayer) +const unterminated = testEffect( + dynamicResponse(({ respond }) => Effect.succeed(respond(encodeJson([{ type: "text", text: "partial" }])))), +) describe("llm route", () => { it.effect("stream and generate use the route pipeline", () => @@ -112,9 +115,25 @@ describe("llm route", () => { const llm = yield* LLMClient.Service const events = Array.from(yield* llm.stream(request).pipe(Stream.runCollect)) const response = yield* llm.generate(request) + const reduced = LLMResponse.fromEvents(events) expect(events.map((event) => event.type)).toEqual(["text-delta", "finish"]) - expect(response.events.map((event) => event.type)).toEqual(["text-delta", "finish"]) + expect(reduced).toBeDefined() + if (!reduced) throw new Error("stream reducer did not produce a completed response") + expect(response.events).toEqual(events) + expect(response.message).toEqual(reduced.message) + expect(response.usage).toEqual(reduced.usage) + expect(response.finishReason).toEqual(reduced.finishReason) + expect(response.message.content).toEqual([{ type: "text", text: 'echo:{"body":"hello"}' }]) + }), + ) + + unterminated.effect("fails when the normalized stream ends without a terminal event", () => + Effect.gen(function* () { + const error = yield* (yield* LLMClient.Service).stream(request).pipe(Stream.runDrain, Effect.flip) + + expect(error.reason).toMatchObject({ _tag: "InvalidProviderOutput" }) + expect(error.message).toContain("Provider stream ended without a terminal finish event") }), ) @@ -122,7 +141,7 @@ describe("llm route", () => { Effect.gen(function* () { const llm = yield* LLMClient.Service const prepared = yield* llm.prepare( - LLM.updateRequest(request, { model: updateModel(request.model, { route: configuredGemini }) }), + LLMRequest.update(request, { model: updateModel(request.model, { route: configuredGemini }) }), ) expect(prepared.route).toBe("gemini-fake") @@ -155,7 +174,7 @@ describe("llm route", () => { }) const prepared = yield* (yield* LLMClient.Service).prepare( - LLM.updateRequest(request, { model: updateModel(request.model, { route: duplicate }) }), + LLMRequest.update(request, { model: updateModel(request.model, { route: duplicate }) }), ) expect(prepared.body).toEqual({ body: "late-default" }) diff --git a/packages/ai/test/auth-options.types.ts b/packages/ai/test/auth-options.types.ts new file mode 100644 index 000000000000..4572a0aee545 --- /dev/null +++ b/packages/ai/test/auth-options.types.ts @@ -0,0 +1,276 @@ +import { Config } from "effect" +import { Auth } from "../src/route" +import type { ModelFactory } from "../src/route/auth-options" +import * as OpenAIChat from "../src/protocols/openai-chat" +import * as AmazonBedrock from "../src/providers/amazon-bedrock" +import * as Anthropic from "../src/providers/anthropic" +import * as AnthropicCompatible from "../src/providers/anthropic-compatible" +import * as Azure from "../src/providers/azure" +import * as Cloudflare from "../src/providers/cloudflare" +import * as GitHubCopilot from "../src/providers/github-copilot" +import * as Google from "../src/providers/google" +import * as GoogleVertex from "../src/providers/google-vertex" +import * as GoogleVertexChat from "../src/providers/google-vertex-chat" +import * as GoogleVertexMessages from "../src/providers/google-vertex-messages" +import * as GoogleVertexResponses from "../src/providers/google-vertex-responses" +import * as OpenAI from "../src/providers/openai" +import * as OpenAICompatible from "../src/providers/openai-compatible" +import * as OpenRouter from "../src/providers/openrouter" +import * as XAI from "../src/providers/xai" + +type BaseOptions = { + readonly baseURL?: string + readonly headers?: Record +} + +type Model = { + readonly id: string +} + +declare const auth: Auth.Definition +declare const optionalAuthModel: ModelFactory +declare const requiredAuthModel: ModelFactory +const configApiKey = Config.redacted("OPENAI_API_KEY") + +OpenAIChat.route.model({ id: "gpt-4.1-mini" }) + +// @ts-expect-error route model selection does not configure endpoints. +OpenAIChat.route.model({ id: "gpt-4.1-mini", baseURL: "https://gateway.example.com/v1" }) + +// @ts-expect-error route model selection does not configure query params. +OpenAIChat.route.model({ id: "gpt-4.1-mini", queryParams: { debug: "1" } }) + +// @ts-expect-error route model selection does not configure auth. +OpenAIChat.route.model({ id: "gpt-4.1-mini", auth }) + +// @ts-expect-error route model selection does not configure api keys. +OpenAIChat.route.model({ id: "gpt-4.1-mini", apiKey: "sk-test" }) + +optionalAuthModel("gpt-4.1-mini") +optionalAuthModel("gpt-4.1-mini", {}) +optionalAuthModel("gpt-4.1-mini", { apiKey: "sk-test" }) +optionalAuthModel("gpt-4.1-mini", { apiKey: configApiKey }) +optionalAuthModel("gpt-4.1-mini", { auth }) +optionalAuthModel("gpt-4.1-mini", { auth, baseURL: "https://gateway.example.com/v1" }) +optionalAuthModel("gpt-4.1-mini", { apiKey: "sk-test", headers: { "x-source": "test" } }) + +// @ts-expect-error auth is an override, so apiKey cannot be supplied with it. +optionalAuthModel("gpt-4.1-mini", { apiKey: "sk-test", auth }) + +requiredAuthModel("custom-model", { apiKey: "key" }) +requiredAuthModel("custom-model", { apiKey: configApiKey }) +requiredAuthModel("custom-model", { auth }) +requiredAuthModel("custom-model", { auth, headers: { "x-tenant-id": "tenant" } }) + +// @ts-expect-error providers without config fallback need apiKey or auth. +requiredAuthModel("custom-model") + +// @ts-expect-error providers without config fallback need apiKey or auth. +requiredAuthModel("custom-model", {}) + +// @ts-expect-error auth is an override, so apiKey cannot be supplied with it. +requiredAuthModel("custom-model", { apiKey: "key", auth }) + +OpenAI.responses("gpt-4.1-mini") +OpenAI.configure({}).responses("gpt-4.1-mini") +OpenAI.configure({ apiKey: "sk-test" }).responses("gpt-4.1-mini") +OpenAI.configure({ apiKey: configApiKey }).responses("gpt-4.1-mini") +OpenAI.configure({ auth: Auth.bearer("oauth-token") }).responses("gpt-4.1-mini") +OpenAI.configure({ + auth: Auth.headers({ authorization: "Bearer gateway" }), + baseURL: "https://gateway.example.com/v1", +}).responses("gpt-4.1-mini") +OpenAI.configure({ + generation: { maxTokens: 100 }, + providerOptions: { openai: { store: false } }, +}).responses("gpt-4.1-mini") + +// @ts-expect-error OpenAI model selectors only accept model ids. +OpenAI.configure({ apiKey: "sk-test" }).responses("gpt-4.1-mini", {}) + +// @ts-expect-error apiKey only accepts string, Redacted, or Config>. +OpenAI.configure({ apiKey: 123 }) + +// @ts-expect-error provider helpers reject unknown top-level options. +OpenAI.configure({ bogus: true }) + +// @ts-expect-error common generation options remain typed. +OpenAI.configure({ generation: { maxTokens: "many" } }) + +// @ts-expect-error provider-native options remain typed. +OpenAI.configure({ providerOptions: { openai: { store: "false" } } }) + +// @ts-expect-error auth is an override, so OpenAI rejects apiKey with auth. +OpenAI.configure({ apiKey: "sk-test", auth: Auth.bearer("oauth-token") }) + +OpenAI.chat("gpt-4.1-mini") +OpenAI.configure({ apiKey: "sk-test" }).chat("gpt-4.1-mini") +OpenAI.configure({ apiKey: configApiKey }).chat("gpt-4.1-mini") +OpenAI.configure({ auth: Auth.bearer("oauth-token") }).chat("gpt-4.1-mini") + +// @ts-expect-error OpenAI chat selectors only accept model ids. +OpenAI.configure({ apiKey: "sk-test" }).chat("gpt-4.1-mini", {}) + +// @ts-expect-error auth is an override, so OpenAI Chat rejects apiKey with auth. +OpenAI.configure({ apiKey: "sk-test", auth: Auth.bearer("oauth-token") }) + +// @ts-expect-error Azure requires at least one of `resourceName` or `baseURL`. +Azure.configure() +Azure.configure({ apiKey: "azure-key", resourceName: "resource" }).responses("deployment") +Azure.configure({ apiKey: configApiKey, resourceName: "resource" }).responses("deployment") +Azure.configure({ auth: Auth.header("api-key", "azure-key"), resourceName: "resource" }).responses("deployment") + +// @ts-expect-error Azure model selectors only accept deployment ids. +Azure.configure({ apiKey: "azure-key", resourceName: "resource" }).responses("deployment", {}) + +// @ts-expect-error auth is an override, so Azure rejects apiKey with auth. +Azure.configure({ resourceName: "resource", apiKey: "azure-key", auth: Auth.header("api-key", "override") }) + +Azure.configure({ apiKey: "azure-key", resourceName: "resource" }).chat("deployment") +Azure.configure({ apiKey: configApiKey, resourceName: "resource" }).chat("deployment") +Azure.configure({ auth: Auth.header("api-key", "azure-key"), resourceName: "resource" }).chat("deployment") + +// @ts-expect-error Azure chat model selectors only accept deployment ids. +Azure.configure({ apiKey: "azure-key", resourceName: "resource" }).chat("deployment", {}) + +// @ts-expect-error auth is an override, so Azure Chat rejects apiKey with auth. +Azure.configure({ resourceName: "resource", apiKey: "azure-key", auth: Auth.header("api-key", "override") }) + +Anthropic.configure({ apiKey: "anthropic-key" }).model("claude-haiku") +Anthropic.configure({ + apiKey: "anthropic-key", + providerOptions: { + anthropic: { thinking: { type: "enabled", budgetTokens: 1_024 }, effort: "high" }, + }, +}).model("claude-haiku") +// @ts-expect-error Anthropic model selectors only accept model ids. +Anthropic.configure({ apiKey: "anthropic-key" }).model("claude-haiku", {}) +// @ts-expect-error Anthropic package settings accept only one auth source. +Anthropic.model("claude-sonnet-4-6", { apiKey: "anthropic-key", authToken: "anthropic-token" }) +// @ts-expect-error Enabled Anthropic thinking requires a token budget. +Anthropic.configure({ providerOptions: { anthropic: { thinking: { type: "enabled" } } } }) +// @ts-expect-error Anthropic thinking budgets must be numbers. +Anthropic.configure({ providerOptions: { anthropic: { thinking: { type: "enabled", budgetTokens: "large" } } } }) + +AnthropicCompatible.configure({ + apiKey: "messages-key", + baseURL: "https://messages.example.com/v1", + provider: "example", + providerOptions: { anthropic: { thinking: { type: "disabled" } } }, +}).model("compatible-model") +// @ts-expect-error Anthropic-compatible providers require a base URL. +AnthropicCompatible.configure({ apiKey: "messages-key" }) +// @ts-expect-error Anthropic-compatible model selectors only accept model ids. +AnthropicCompatible.configure({ baseURL: "https://messages.example.com/v1" }).model("compatible-model", {}) +// @ts-expect-error Anthropic-compatible package settings accept only one auth source. +AnthropicCompatible.model("compatible-model", { + apiKey: "messages-key", + authToken: "messages-token", + baseURL: "https://messages.example.com/v1", +}) + +Google.configure({ apiKey: "google-key" }).model("gemini-2.5-flash") +Google.configure({ + apiKey: "google-key", + providerOptions: { gemini: { thinkingConfig: { thinkingBudget: 0, includeThoughts: false } } }, +}).model("gemini-2.5-flash") +// @ts-expect-error Google model selectors only accept model ids. +Google.configure({ apiKey: "google-key" }).model("gemini-2.5-flash", {}) +// @ts-expect-error Gemini thinking budgets must be numbers. +Google.configure({ providerOptions: { gemini: { thinkingConfig: { thinkingBudget: "large" } } } }) + +GoogleVertex.configure({ + apiKey: "vertex-key", + providerOptions: { gemini: { thinkingConfig: { thinkingBudget: 1_024 } } }, +}).model("gemini-3.5-flash") +GoogleVertex.configure({ accessToken: "vertex-token", project: "project" }).model("gemini-3.5-flash") +GoogleVertex.configure({ auth: Auth.bearer("vertex-token"), project: "project" }).model("gemini-3.5-flash") +// @ts-expect-error Vertex Gemini model selectors only accept model ids. +GoogleVertex.configure({ apiKey: "vertex-key" }).model("gemini-3.5-flash", {}) +// @ts-expect-error Vertex Gemini config accepts only one auth source. +GoogleVertex.configure({ accessToken: "vertex-token", apiKey: "vertex-key", project: "project" }) +// @ts-expect-error Vertex Gemini package settings accept only one auth source. +GoogleVertex.model("gemini-3.5-flash", { accessToken: "vertex-token", apiKey: "vertex-key", project: "project" }) + +GoogleVertexChat.configure({ accessToken: "vertex-token", project: "project" }).model("deepseek-ai/deepseek-v3.2-maas") +GoogleVertexChat.configure({ auth: Auth.bearer("vertex-token"), project: "project" }).model( + "deepseek-ai/deepseek-v3.2-maas", +) +// @ts-expect-error Vertex Chat package settings do not accept API keys. +GoogleVertexChat.model("deepseek-ai/deepseek-v3.2-maas", { apiKey: "vertex-key", project: "project" }) +GoogleVertexChat.configure({ accessToken: "vertex-token", project: "project" }).model( + "deepseek-ai/deepseek-v3.2-maas", + // @ts-expect-error Vertex Chat model selectors only accept model ids. + {}, +) +GoogleVertexChat.configure({ + accessToken: "vertex-token", + // @ts-expect-error Vertex Chat config accepts only one auth source. + auth: Auth.bearer("vertex-token"), + project: "project", +}) + +GoogleVertexResponses.configure({ accessToken: "vertex-token", project: "project" }).model("xai/grok-4.20-reasoning") +GoogleVertexResponses.configure({ auth: Auth.bearer("vertex-token"), project: "project" }).model( + "xai/grok-4.20-reasoning", +) +// @ts-expect-error Vertex Responses package settings do not accept API keys. +GoogleVertexResponses.model("xai/grok-4.20-reasoning", { apiKey: "vertex-key", project: "project" }) +GoogleVertexResponses.configure({ accessToken: "vertex-token", project: "project" }).model( + "xai/grok-4.20-reasoning", + // @ts-expect-error Vertex Responses model selectors only accept model ids. + {}, +) +GoogleVertexResponses.configure({ + accessToken: "vertex-token", + // @ts-expect-error Vertex Responses config accepts only one auth source. + auth: Auth.bearer("vertex-token"), + project: "project", +}) + +GoogleVertexMessages.configure({ + accessToken: "vertex-token", + project: "project", + providerOptions: { anthropic: { thinking: { type: "adaptive", display: "omitted" }, effort: "low" } }, +}).model("claude-sonnet-4-6") +// @ts-expect-error Vertex Messages package settings do not accept API keys. +GoogleVertexMessages.model("claude-sonnet-4-6", { apiKey: "vertex-key", project: "project" }) +GoogleVertexMessages.configure({ auth: Auth.bearer("vertex-token"), project: "project" }).model("claude-sonnet-4-6") +GoogleVertexMessages.configure({ accessToken: "vertex-token", project: "project" }).model( + "claude-sonnet-4-6", + // @ts-expect-error Vertex Messages model selectors only accept model ids. + {}, +) +GoogleVertexMessages.configure({ + accessToken: "vertex-token", + // @ts-expect-error Vertex Messages config accepts only one auth source. + auth: Auth.bearer("vertex-token"), + project: "project", +}) + +AmazonBedrock.configure({ apiKey: "bedrock-key" }).model("anthropic.claude") +// @ts-expect-error Bedrock model selectors only accept model ids. +AmazonBedrock.configure({ apiKey: "bedrock-key" }).model("anthropic.claude", {}) + +OpenRouter.configure({ apiKey: "openrouter-key" }).model("openai/gpt-4o-mini") +// @ts-expect-error OpenRouter model selectors only accept model ids. +OpenRouter.configure({ apiKey: "openrouter-key" }).model("openai/gpt-4o-mini", {}) + +XAI.configure({ apiKey: "xai-key" }).responses("grok-4") +XAI.configure({ apiKey: "xai-key" }).chat("grok-4") +// @ts-expect-error xAI Responses selectors only accept model ids. +XAI.configure({ apiKey: "xai-key" }).responses("grok-4", {}) +// @ts-expect-error xAI Chat selectors only accept model ids. +XAI.configure({ apiKey: "xai-key" }).chat("grok-4", {}) + +OpenAICompatible.deepseek.configure({ apiKey: "deepseek-key" }).model("deepseek-chat") +// @ts-expect-error OpenAI-compatible family selectors only accept model ids. +OpenAICompatible.deepseek.configure({ apiKey: "deepseek-key" }).model("deepseek-chat", {}) + +Cloudflare.CloudflareWorkersAI.configure({ accountId: "account", apiKey: "cf-key" }).model("@cf/meta/llama") +// @ts-expect-error Cloudflare Workers AI model selectors only accept model ids. +Cloudflare.CloudflareWorkersAI.configure({ accountId: "account", apiKey: "cf-key" }).model("@cf/meta/llama", {}) + +GitHubCopilot.configure({ baseURL: "https://copilot.test", apiKey: "copilot-key" }).model("gpt-4.1") +// @ts-expect-error GitHub Copilot model selectors only accept model ids. +GitHubCopilot.configure({ baseURL: "https://copilot.test", apiKey: "copilot-key" }).model("gpt-4.1", {}) diff --git a/packages/llm/test/auth.test.ts b/packages/ai/test/auth.test.ts similarity index 100% rename from packages/llm/test/auth.test.ts rename to packages/ai/test/auth.test.ts diff --git a/packages/ai/test/cache-policy.test.ts b/packages/ai/test/cache-policy.test.ts new file mode 100644 index 000000000000..8e2535b54baf --- /dev/null +++ b/packages/ai/test/cache-policy.test.ts @@ -0,0 +1,322 @@ +import { describe, expect, test } from "bun:test" +import { Effect } from "effect" +import { CacheHint, LLM, Message } from "../src" +import { Auth, LLMClient } from "../src/route" +import { AmazonBedrock } from "../src/providers" +import * as AnthropicMessages from "../src/protocols/anthropic-messages" +import * as Gemini from "../src/protocols/gemini" +import * as OpenAIChat from "../src/protocols/openai-chat" +import { applyCachePolicy } from "../src/cache-policy" +import { it } from "./lib/effect" + +const anthropicModel = AnthropicMessages.route + .with({ endpoint: { baseURL: "https://api.anthropic.test/v1/" }, auth: Auth.header("x-api-key", "test") }) + .model({ id: "claude-sonnet-4-5" }) + +const bedrockModel = AmazonBedrock.configure({ + credentials: { region: "us-east-1", accessKeyId: "fixture", secretAccessKey: "fixture" }, +}).model("anthropic.claude-3-5-sonnet-20241022-v2:0") + +const openaiModel = OpenAIChat.route + .with({ endpoint: { baseURL: "https://api.openai.test/v1/" }, auth: Auth.bearer("test") }) + .model({ id: "gpt-4o-mini" }) + +const geminiModel = Gemini.route + .with({ + endpoint: { baseURL: "https://generativelanguage.test/v1beta/" }, + auth: Auth.header("x-goog-api-key", "test"), + }) + .model({ id: "gemini-2.5-flash" }) + +describe("applyCachePolicy", () => { + it.effect("undefined cache resolves to 'auto' (the recommended default)", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: anthropicModel, + system: "You are concise.", + prompt: "hi", + }), + ) + + // A single system block is both the first and last boundary, so the auto + // policy deduplicates it and still marks the conversation tail. + expect(prepared.body).toMatchObject({ + system: [{ type: "text", text: "You are concise.", cache_control: { type: "ephemeral" } }], + messages: [{ role: "user", content: [{ type: "text", text: "hi", cache_control: { type: "ephemeral" } }] }], + }) + }), + ) + + it.effect("'auto' marks the last tool, first and last system parts, and final message boundary on Anthropic", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: anthropicModel, + system: [ + { type: "text", text: "Base agent" }, + { type: "text", text: "Project instructions" }, + ], + tools: [{ name: "t1", description: "t1", inputSchema: { type: "object", properties: {} } }], + messages: [ + Message.user("first user"), + Message.assistant("assistant reply"), + Message.user("latest user message"), + ], + cache: "auto", + }), + ) + + expect(prepared.body).toMatchObject({ + tools: [{ name: "t1", cache_control: { type: "ephemeral" } }], + system: [ + { type: "text", text: "Base agent", cache_control: { type: "ephemeral" } }, + { type: "text", text: "Project instructions", cache_control: { type: "ephemeral" } }, + ], + messages: [ + { role: "user", content: [{ type: "text", text: "first user" }] }, + { role: "assistant", content: [{ type: "text", text: "assistant reply" }] }, + { + role: "user", + content: [{ type: "text", text: "latest user message", cache_control: { type: "ephemeral" } }], + }, + ], + }) + }), + ) + + it.effect("'auto' is a no-op on OpenAI (implicit caching protocol)", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: openaiModel, + system: "Sys", + prompt: "hi", + cache: "auto", + }), + ) + + const body = prepared.body as { messages: Array<{ content: unknown }> } + // OpenAI doesn't accept cache_control on messages — policy must skip. + const flat = JSON.stringify(body) + expect(flat).not.toContain("cache_control") + expect(flat).not.toContain("cachePoint") + }), + ) + + it.effect("'auto' is a no-op on Gemini (out-of-band caching protocol)", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: geminiModel, + system: "Sys", + prompt: "hi", + cache: "auto", + }), + ) + + const flat = JSON.stringify(prepared.body) + expect(flat).not.toContain("cache_control") + expect(flat).not.toContain("cachePoint") + }), + ) + + it.effect("'auto' on Bedrock emits cachePoint markers in the right places", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: bedrockModel, + system: [ + { type: "text", text: "Base agent" }, + { type: "text", text: "Project instructions" }, + ], + tools: [{ name: "t1", description: "t1", inputSchema: { type: "object", properties: {} } }], + messages: [Message.user("first user"), Message.assistant("reply"), Message.user("latest user")], + cache: "auto", + }), + ) + + expect(prepared.body).toMatchObject({ + toolConfig: { + tools: [{ toolSpec: { name: "t1" } }, { cachePoint: { type: "default" } }], + }, + system: [ + { text: "Base agent" }, + { cachePoint: { type: "default" } }, + { text: "Project instructions" }, + { cachePoint: { type: "default" } }, + ], + messages: [ + { role: "user", content: [{ text: "first user" }] }, + { role: "assistant", content: [{ text: "reply" }] }, + { role: "user", content: [{ text: "latest user" }, { cachePoint: { type: "default" } }] }, + ], + }) + }), + ) + + it.effect("'none' disables auto placement even when manual hints exist", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: anthropicModel, + system: "Sys", + tools: [{ name: "t1", description: "t1", inputSchema: { type: "object", properties: {} } }], + prompt: "hi", + cache: "none", + }), + ) + + expect(prepared.body).toMatchObject({ + tools: [{ name: "t1", cache_control: undefined }], + system: [{ type: "text", text: "Sys", cache_control: undefined }], + }) + }), + ) + + it.effect("granular object form: tools-only marks just tools", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: anthropicModel, + system: "Sys", + tools: [{ name: "t1", description: "t1", inputSchema: { type: "object", properties: {} } }], + prompt: "hi", + cache: { tools: true }, + }), + ) + + expect(prepared.body).toMatchObject({ + tools: [{ name: "t1", cache_control: { type: "ephemeral" } }], + system: [{ type: "text", text: "Sys", cache_control: undefined }], + }) + }), + ) + + it.effect("auto policy preserves manual CacheHints on other parts", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: anthropicModel, + system: [ + { type: "text", text: "first system", cache: new CacheHint({ type: "ephemeral", ttlSeconds: 3600 }) }, + { type: "text", text: "last system" }, + ], + prompt: "hi", + cache: "auto", + }), + ) + + const body = prepared.body as { + system: Array<{ text: string; cache_control?: unknown }> + messages: Array<{ content: Array<{ cache_control?: unknown }> }> + } + expect(body.system[0]?.cache_control).toEqual({ type: "ephemeral", ttl: "1h" }) + expect(body.system[1]?.cache_control).toEqual({ type: "ephemeral" }) + expect(body.messages[0]?.content[0]?.cache_control).toEqual({ type: "ephemeral" }) + }), + ) + + it.effect("auto policy stays within the four-breakpoint cap when preserving manual hints", () => + Effect.gen(function* () { + const request = LLM.request({ + model: anthropicModel, + system: [ + { type: "text", text: "Base agent" }, + { + type: "text", + text: "Manual context", + cache: new CacheHint({ type: "ephemeral", ttlSeconds: 3600 }), + }, + { type: "text", text: "Project instructions" }, + ], + tools: [{ name: "t1", description: "t1", inputSchema: { type: "object", properties: {} } }], + prompt: "hi", + cache: "auto", + }) + const applied = applyCachePolicy(request) + expect(applied.tools[0]?.cache).toBeDefined() + expect(applied.system.map((part) => part.cache !== undefined)).toEqual([true, true, true]) + const tail = applied.messages[0]!.content[0]! + expect("cache" in tail ? tail.cache : undefined).toBeUndefined() + expect(applyCachePolicy(applied)).toBe(applied) + + const prepared = yield* LLMClient.prepare(request) + + const body = prepared.body as { + tools: Array<{ cache_control?: unknown }> + system: Array<{ cache_control?: unknown }> + messages: Array<{ content: Array<{ cache_control?: unknown }> }> + } + const marked = [ + ...body.tools.map((tool) => tool.cache_control), + ...body.system.map((part) => part.cache_control), + ...body.messages.flatMap((message) => message.content.map((part) => part.cache_control)), + ].filter((cache) => cache !== undefined) + expect(marked).toHaveLength(4) + expect(body.system[1]?.cache_control).toEqual({ type: "ephemeral", ttl: "1h" }) + expect(body.messages[0]?.content[0]?.cache_control).toBeUndefined() + }), + ) + + it.effect("ttlSeconds in the policy flows through to wire markers", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: anthropicModel, + system: "Sys", + prompt: "hi", + cache: { system: true, ttlSeconds: 3600 }, + }), + ) + + expect(prepared.body).toMatchObject({ + system: [{ type: "text", text: "Sys", cache_control: { type: "ephemeral", ttl: "1h" } }], + }) + }), + ) + + it.effect("messages: { tail: 2 } marks the last 2 message boundaries", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: anthropicModel, + messages: [Message.user("u1"), Message.assistant("a1"), Message.user("u2"), Message.assistant("a2")], + cache: { messages: { tail: 2 } }, + }), + ) + + const body = prepared.body as { messages: Array<{ content: Array<{ cache_control?: unknown }> }> } + expect(body.messages[0]?.content[0]?.cache_control).toBeUndefined() + expect(body.messages[1]?.content[0]?.cache_control).toBeUndefined() + expect(body.messages[2]?.content[0]?.cache_control).toEqual({ type: "ephemeral" }) + expect(body.messages[3]?.content[0]?.cache_control).toEqual({ type: "ephemeral" }) + }), + ) + + it.effect("'latest-assistant' marks the last assistant message", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: anthropicModel, + messages: [Message.user("u1"), Message.assistant("a1"), Message.user("u2")], + cache: { messages: "latest-assistant" }, + }), + ) + + const body = prepared.body as { messages: Array<{ content: Array<{ cache_control?: unknown }> }> } + expect(body.messages[0]?.content[0]?.cache_control).toBeUndefined() + expect(body.messages[1]?.content[0]?.cache_control).toEqual({ type: "ephemeral" }) + expect(body.messages[2]?.content[0]?.cache_control).toBeUndefined() + }), + ) + + test("returns the same request reference when policy is a no-op (pure function)", () => { + const request = LLM.request({ + model: anthropicModel, + prompt: "hi", + cache: "none", + }) + expect(applyCachePolicy(request)).toBe(request) + }) +}) diff --git a/packages/llm/test/continuation-scenarios.ts b/packages/ai/test/continuation-scenarios.ts similarity index 100% rename from packages/llm/test/continuation-scenarios.ts rename to packages/ai/test/continuation-scenarios.ts diff --git a/packages/llm/test/endpoint.test.ts b/packages/ai/test/endpoint.test.ts similarity index 100% rename from packages/llm/test/endpoint.test.ts rename to packages/ai/test/endpoint.test.ts diff --git a/packages/ai/test/executor.test.ts b/packages/ai/test/executor.test.ts new file mode 100644 index 000000000000..2a0056896ffd --- /dev/null +++ b/packages/ai/test/executor.test.ts @@ -0,0 +1,400 @@ +import { describe, expect } from "bun:test" +import { Effect, Layer, Ref } from "effect" +import { Headers, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http" +import { LLM, LLMError } from "../src" +import { LLMClient, RequestExecutor } from "../src/route" +import * as OpenAIChat from "../src/protocols/openai-chat" +import { dynamicResponse } from "./lib/http" +import { deltaChunk } from "./lib/openai-chunks" +import { sseRaw } from "./lib/sse" +import { it } from "./lib/effect" + +const request = HttpClientRequest.post("https://provider.test/v1/chat?api_key=secret&key=secret&debug=1").pipe( + HttpClientRequest.setHeaders(Headers.fromInput({ authorization: "Bearer secret", "x-safe": "visible" })), +) + +const secretRequest = HttpClientRequest.post("https://provider.test/v1/chat?api_key=query-secret-123&debug=1").pipe( + HttpClientRequest.setHeaders(Headers.fromInput({ authorization: "Bearer header-secret-456" })), +) + +const responsesLayer = (responses: ReadonlyArray) => + RequestExecutor.layer.pipe( + Layer.provide( + Layer.unwrap( + Effect.gen(function* () { + const cursor = yield* Ref.make(0) + return Layer.succeed( + HttpClient.HttpClient, + HttpClient.make((request) => + Effect.gen(function* () { + const index = yield* Ref.getAndUpdate(cursor, (value) => value + 1) + return HttpClientResponse.fromWeb(request, responses[index] ?? responses[responses.length - 1]) + }), + ), + ) + }), + ), + ), + ) + +const countedResponsesLayer = (attempts: Ref.Ref, responses: ReadonlyArray) => + RequestExecutor.layer.pipe( + Layer.provide( + Layer.unwrap( + Effect.gen(function* () { + const cursor = yield* Ref.make(0) + return Layer.succeed( + HttpClient.HttpClient, + HttpClient.make((request) => + Effect.gen(function* () { + yield* Ref.update(attempts, (value) => value + 1) + const index = yield* Ref.getAndUpdate(cursor, (value) => value + 1) + return HttpClientResponse.fromWeb(request, responses[index] ?? responses[responses.length - 1]) + }), + ), + ) + }), + ), + ), + ) + +const expectLLMError = (error: unknown) => { + expect(error).toBeInstanceOf(LLMError) + if (!(error instanceof LLMError)) throw new Error("expected LLMError") + return error +} + +const errorHttp = (error: LLMError) => ("http" in error.reason ? error.reason.http : undefined) + +describe("RequestExecutor", () => { + it.effect("classifies context overflow responses", () => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "InvalidRequest", classification: "context-overflow" }) + }).pipe( + Effect.provide( + responsesLayer([ + new Response('{"error":{"code":"context_length_exceeded","message":"prompt too long"}}', { + status: 400, + }), + ]), + ), + ), + ) + + it.effect("does not classify generic HTTP 413 payload errors as context overflow", () => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "InvalidRequest" }) + expect("classification" in error.reason ? error.reason.classification : undefined).toBeUndefined() + }).pipe(Effect.provide(responsesLayer([new Response("request too large", { status: 413 })]))), + ) + + it.effect("does not classify ordinary invalid requests as context overflow", () => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "InvalidRequest" }) + expect("classification" in error.reason ? error.reason.classification : undefined).toBeUndefined() + }).pipe(Effect.provide(responsesLayer([new Response("invalid parameter", { status: 400 })]))), + ) + + it.effect("classifies provider rate limits hidden behind HTTP 400", () => + Effect.gen(function* () { + const classify = (body: string) => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "RateLimit" }) + }).pipe(Effect.provide(responsesLayer([new Response(body, { status: 400 })]))) + + yield* classify("Request rate increased too quickly") + yield* classify('{"type":"error","error":{"type":"too_many_requests"}}') + yield* classify('{"type":"error","error":{"code":"rate_limit_exceeded"}}') + }), + ) + + it.effect("classifies provider overloads hidden behind HTTP 400", () => + Effect.gen(function* () { + const classify = (body: string) => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "ProviderInternal" }) + }).pipe(Effect.provide(responsesLayer([new Response(body, { status: 400 })]))) + + yield* classify('{"code":"resource_exhausted"}') + yield* classify('{"code":"service_unavailable"}') + }), + ) + + it.effect("returns redacted diagnostics for rate limits", () => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(error).toMatchObject({ + reason: { + _tag: "RateLimit", + retryAfterMs: 0, + rateLimit: { retryAfterMs: 0 }, + http: { + requestId: "req_123", + request: { + method: "POST", + url: "https://provider.test/v1/chat?api_key=%3Credacted%3E&key=%3Credacted%3E&debug=1", + headers: { authorization: "", "x-safe": "visible" }, + }, + response: { + status: 429, + headers: { + "retry-after-ms": "0", + "x-request-id": "req_123", + "x-api-key": "", + }, + }, + }, + }, + }) + expect(errorHttp(error)?.body).toBe("rate limited") + }).pipe( + Effect.provide( + responsesLayer([ + new Response("rate limited", { + status: 429, + headers: { "retry-after-ms": "0", "x-request-id": "req_123", "x-api-key": "secret" }, + }), + ]), + ), + ), + ) + + it.effect("honors current redacted header names in diagnostics", () => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(errorHttp(error)?.request.headers["x-safe"]).toBe("") + expect(errorHttp(error)?.response?.headers["x-safe"]).toBe("") + }).pipe( + Effect.provide(responsesLayer([new Response("bad", { status: 400, headers: { "x-safe": "response-secret" } })])), + Effect.provideService(Headers.CurrentRedactedNames, ["x-safe"]), + ), + ) + + it.effect("extracts OpenAI-style rate-limit diagnostics", () => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "RateLimit" }) + expect(error.reason._tag === "RateLimit" ? error.reason.rateLimit : undefined).toEqual({ + retryAfterMs: 0, + limit: { requests: "500", tokens: "30000" }, + remaining: { requests: "499", tokens: "29900" }, + reset: { requests: "1s", tokens: "10s" }, + }) + }).pipe( + Effect.provide( + responsesLayer([ + new Response("rate limited", { + status: 429, + headers: { + "retry-after-ms": "0", + "x-ratelimit-limit-requests": "500", + "x-ratelimit-limit-tokens": "30000", + "x-ratelimit-remaining-requests": "499", + "x-ratelimit-remaining-tokens": "29900", + "x-ratelimit-reset-requests": "1s", + "x-ratelimit-reset-tokens": "10s", + }, + }), + ]), + ), + ), + ) + + it.effect("extracts Anthropic-style rate-limit diagnostics", () => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "ProviderInternal" }) + expect(errorHttp(error)?.rateLimit).toEqual({ + retryAfterMs: 0, + limit: { requests: "100", "input-tokens": "10000" }, + remaining: { requests: "12", "input-tokens": "9000" }, + reset: { requests: "2026-05-06T12:00:00Z", "input-tokens": "2026-05-06T12:00:10Z" }, + }) + }).pipe( + Effect.provide( + responsesLayer([ + new Response("overloaded", { + status: 529, + headers: { + "retry-after-ms": "0", + "anthropic-ratelimit-requests-limit": "100", + "anthropic-ratelimit-requests-remaining": "12", + "anthropic-ratelimit-requests-reset": "2026-05-06T12:00:00Z", + "anthropic-ratelimit-input-tokens-limit": "10000", + "anthropic-ratelimit-input-tokens-remaining": "9000", + "anthropic-ratelimit-input-tokens-reset": "2026-05-06T12:00:10Z", + }, + }), + ]), + ), + ), + ) + + it.effect("returns provider status failures without retrying", () => + Effect.gen(function* () { + const attempts = yield* Ref.make(0) + const error = yield* Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + return yield* executor.execute(request).pipe(Effect.flip) + }).pipe( + Effect.provide( + countedResponsesLayer(attempts, [ + new Response("busy", { status: 503, headers: { "retry-after-ms": "0" } }), + new Response("ok", { status: 200 }), + ]), + ), + ) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "ProviderInternal", status: 503 }) + expect(yield* Ref.get(attempts)).toBe(1) + }), + ) + + it.effect("marks 504 and 529 status responses as provider-internal", () => + Effect.gen(function* () { + const failWith = (status: number) => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "ProviderInternal", status }) + }).pipe( + Effect.provide( + responsesLayer([ + new Response("provider failure", { + status, + headers: { "retry-after-ms": "0" }, + }), + ]), + ), + ) + + yield* failWith(504) + yield* failWith(529) + }), + ) + + it.effect("truncates large authentication error bodies", () => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "Authentication" }) + expect(errorHttp(error)?.bodyTruncated).toBe(true) + expect(errorHttp(error)?.body).toHaveLength(16_384) + }).pipe( + Effect.provide( + responsesLayer([ + new Response("x".repeat(20_000), { status: 401 }), + new Response("should not retry", { status: 200 }), + ]), + ), + ), + ) + + it.effect("redacts common secret fields in response bodies", () => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(request).pipe(Effect.flip) + + expectLLMError(error) + expect(errorHttp(error)?.body).toContain('"key":""') + expect(errorHttp(error)?.body).toContain("api_key=") + expect(errorHttp(error)?.body).not.toContain("body-secret") + expect(errorHttp(error)?.body).not.toContain("query-secret") + }).pipe( + Effect.provide( + responsesLayer([ + new Response('{"error":{"message":"bad","key":"body-secret","detail":"api_key=query-secret"}}', { + status: 400, + }), + ]), + ), + ), + ) + + it.effect("redacts echoed request secret values in response bodies", () => + Effect.gen(function* () { + const executor = yield* RequestExecutor.Service + const error = yield* executor.execute(secretRequest).pipe(Effect.flip) + + expectLLMError(error) + expect(errorHttp(error)?.body).toContain("provider echoed ") + expect(errorHttp(error)?.body).toContain("authorization ") + expect(errorHttp(error)?.body).not.toContain("query-secret-123") + expect(errorHttp(error)?.body).not.toContain("header-secret-456") + }).pipe( + Effect.provide( + responsesLayer([ + new Response("provider echoed query-secret-123 and authorization header-secret-456", { status: 400 }), + ]), + ), + ), + ) + + it.effect("does not re-execute after a successful response reaches stream parsing", () => + Effect.gen(function* () { + const attempts = yield* Ref.make(0) + const model = OpenAIChat.route + .with({ endpoint: { baseURL: "https://api.openai.test/v1" } }) + .model({ id: "gpt-4o-mini" }) + const error = yield* LLMClient.generate(LLM.request({ model, prompt: "Say hello." })).pipe( + Effect.provide( + dynamicResponse((input) => + Ref.update(attempts, (value) => value + 1).pipe( + Effect.as( + input.respond( + sseRaw( + `data: ${JSON.stringify(deltaChunk({ role: "assistant", content: "Hello" }))}`, + "data: not-json", + ), + { headers: { "content-type": "text/event-stream" } }, + ), + ), + ), + ), + ), + Effect.flip, + ) + + expectLLMError(error) + expect(error.reason).toMatchObject({ _tag: "InvalidProviderOutput" }) + expect(yield* Ref.get(attempts)).toBe(1) + }), + ) +}) diff --git a/packages/ai/test/exports.test.ts b/packages/ai/test/exports.test.ts new file mode 100644 index 000000000000..bea36c4c3bec --- /dev/null +++ b/packages/ai/test/exports.test.ts @@ -0,0 +1,90 @@ +import { describe, expect, test } from "bun:test" +import { ImageInput, LLM, LLMClient, Provider } from "@opencode-ai/ai" +import { Route, Protocol } from "@opencode-ai/ai/route" +import { Provider as ProviderSubpath } from "@opencode-ai/ai/provider" +import { + CloudflareAIGateway, + CloudflareWorkersAI, + OpenAI, + OpenAICompatible, + OpenRouter, + XAI, +} from "@opencode-ai/ai/providers" +import * as GitHubCopilot from "@opencode-ai/ai/providers/github-copilot" +import { + OpenAIChat, + OpenAICompatibleChat, + OpenAICompatibleResponses, + OpenAIResponses, + OpenResponses, +} from "@opencode-ai/ai/protocols" +import * as AnthropicMessages from "@opencode-ai/ai/protocols/anthropic-messages" + +describe("public exports", () => { + test("root exposes app-facing runtime APIs", () => { + expect(LLM.request).toBeFunction() + expect(LLMClient.Service).toBeFunction() + expect(LLMClient.layer).toBeDefined() + expect(ImageInput.bytes).toBeFunction() + expect(Provider.make).toBeFunction() + expect(ProviderSubpath.make).toBe(Provider.make) + }) + + test("route barrel exposes route-authoring APIs", () => { + expect(Route.make).toBeFunction() + expect(Protocol.make).toBeFunction() + }) + + test("provider barrels expose user-facing facades", async () => { + const { OpenAICompatibleResponses } = await import("@opencode-ai/ai/providers") + + expect(OpenAI.model).toBeFunction() + expect(OpenAI.provider.responses).toBe(OpenAI.responses) + expect(OpenAI.provider.responsesWebSocket).toBe(OpenAI.responsesWebSocket) + expect(OpenAI.configure({ apiKey: "fixture" }).responses).toBeFunction() + expect(OpenAICompatible.deepseek.model).toBeFunction() + expect( + OpenAICompatibleResponses.configure({ baseURL: "https://responses.test/v1" }).model("fixture").route.id, + ).toBe("openai-compatible-responses") + expect(CloudflareAIGateway.configure).toBeFunction() + expect(CloudflareAIGateway.configure({ accountId: "fixture", gatewayApiKey: "fixture" }).model).toBeFunction() + expect(CloudflareWorkersAI.configure).toBeFunction() + expect(CloudflareWorkersAI.configure({ accountId: "fixture", apiKey: "fixture" }).model).toBeFunction() + expect(OpenRouter.model).toBeFunction() + expect(OpenRouter.provider.model).toBe(OpenRouter.model) + expect(XAI.model).toBeFunction() + expect(XAI.provider.model).toBe(XAI.model) + expect(XAI.provider.responses).toBe(XAI.responses) + expect(XAI.provider.chat).toBe(XAI.chat) + expect(XAI.configure({ apiKey: "fixture" }).responses("grok-4.3").route.id).toBe("openai-responses") + expect(XAI.configure({ apiKey: "fixture" }).chat("grok-4.3").route.id).toBe("openai-compatible-chat") + expect( + GitHubCopilot.configure({ baseURL: "https://api.githubcopilot.test", apiKey: "fixture" }).model, + ).toBeFunction() + expect( + GitHubCopilot.configure({ + baseURL: "https://api.githubcopilot.test", + apiKey: "fixture", + endpoint: "responses", + }).model("mai-code-1-flash-picker").route.id, + ).toBe("openai-responses") + expect( + GitHubCopilot.configure({ + baseURL: "https://api.githubcopilot.test", + apiKey: "fixture", + endpoint: "chat", + }).model("gpt-5").route.id, + ).toBe("openai-chat") + }) + + test("protocol barrels expose supported low-level routes", () => { + expect(OpenAIChat.route.id).toBe("openai-chat") + expect(OpenAICompatibleChat.route.id).toBe("openai-compatible-chat") + expect(OpenResponses.protocol.id).toBe("open-responses") + expect(OpenAICompatibleResponses.route.id).toBe("openai-compatible-responses") + expect(OpenAICompatibleResponses.route.protocol).toBe("open-responses") + expect(OpenAIResponses.route.id).toBe("openai-responses") + expect(OpenAIResponses.webSocketRoute.id).toBe("openai-responses-websocket") + expect(AnthropicMessages.route.id).toBe("anthropic-messages") + }) +}) diff --git a/packages/ai/test/fixtures/images/edit-source.jpg b/packages/ai/test/fixtures/images/edit-source.jpg new file mode 100644 index 000000000000..2aa5926fa41c Binary files /dev/null and b/packages/ai/test/fixtures/images/edit-source.jpg differ diff --git a/packages/llm/test/fixtures/media/restroom.png b/packages/ai/test/fixtures/media/restroom.png similarity index 100% rename from packages/llm/test/fixtures/media/restroom.png rename to packages/ai/test/fixtures/media/restroom.png diff --git a/packages/ai/test/fixtures/recordings/anthropic-compatible-messages/minimax-m3-anthropic-compatible-text.json b/packages/ai/test/fixtures/recordings/anthropic-compatible-messages/minimax-m3-anthropic-compatible-text.json new file mode 100644 index 000000000000..cddad6972476 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/anthropic-compatible-messages/minimax-m3-anthropic-compatible-text.json @@ -0,0 +1,40 @@ +{ + "version": 1, + "metadata": { + "provider": "minimax", + "protocol": "anthropic-messages", + "route": "anthropic-messages", + "transport": "http", + "model": "MiniMax-M3", + "tags": [ + "prefix:anthropic-compatible-messages", + "provider:minimax", + "protocol:anthropic-messages", + "text", + "golden" + ], + "name": "anthropic-compatible-messages/minimax-m3-anthropic-compatible-text", + "recordedAt": "2026-07-18T03:42:22.893Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.minimax.io/anthropic/v1/messages", + "headers": { + "anthropic-version": "2023-06-01", + "content-type": "application/json" + }, + "body": "{\"model\":\"MiniMax-M3\",\"system\":[{\"type\":\"text\",\"text\":\"You are concise.\"}],\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Reply exactly with: Hello!\"}]}],\"stream\":true,\"max_tokens\":40,\"temperature\":0}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"id\":\"1a0b363d0882af316faebcec4d4855a8\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[],\"model\":\"MiniMax-M3\",\"stop_reason\":null,\"stop_sequence\":null,\"usage\":{\"input_tokens\":53,\"output_tokens\":0,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":114,\"service_tier\":\"standard\"},\"service_tier\":\"standard\"}}\n\nevent: ping\ndata: {\"type\":\"ping\"}\n\nevent: content_block_start\ndata: {\"type\":\"content_block_start\",\"index\":0,\"content_block\":{\"type\":\"text\",\"text\":\"\"}}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"Hello\"}}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"!\"}}\n\nevent: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0}\n\nevent: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\"},\"usage\":{\"input_tokens\":53,\"output_tokens\":2,\"cache_read_input_tokens\":114,\"service_tier\":\"standard\"}}\n\nevent: message_stop\ndata: {\"type\":\"message_stop\"}\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/anthropic-compatible-messages/minimax-m3-anthropic-compatible-tool-call.json b/packages/ai/test/fixtures/recordings/anthropic-compatible-messages/minimax-m3-anthropic-compatible-tool-call.json new file mode 100644 index 000000000000..7e02d6e8cedd --- /dev/null +++ b/packages/ai/test/fixtures/recordings/anthropic-compatible-messages/minimax-m3-anthropic-compatible-tool-call.json @@ -0,0 +1,41 @@ +{ + "version": 1, + "metadata": { + "provider": "minimax", + "protocol": "anthropic-messages", + "route": "anthropic-messages", + "transport": "http", + "model": "MiniMax-M3", + "tags": [ + "prefix:anthropic-compatible-messages", + "provider:minimax", + "protocol:anthropic-messages", + "tool", + "tool-call", + "golden" + ], + "name": "anthropic-compatible-messages/minimax-m3-anthropic-compatible-tool-call", + "recordedAt": "2026-07-18T03:42:23.876Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.minimax.io/anthropic/v1/messages", + "headers": { + "anthropic-version": "2023-06-01", + "content-type": "application/json" + }, + "body": "{\"model\":\"MiniMax-M3\",\"system\":[{\"type\":\"text\",\"text\":\"Call tools exactly as requested.\"}],\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Call get_weather with city exactly Paris.\"}]}],\"tools\":[{\"name\":\"get_weather\",\"description\":\"Get current weather for a city.\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false}}],\"tool_choice\":{\"type\":\"tool\",\"name\":\"get_weather\"},\"stream\":true,\"max_tokens\":80,\"temperature\":0}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"id\":\"6731ecc323233459d1792df9a733dd98\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[],\"model\":\"MiniMax-M3\",\"stop_reason\":null,\"stop_sequence\":null,\"usage\":{\"input_tokens\":0,\"output_tokens\":0,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":404,\"service_tier\":\"standard\"},\"service_tier\":\"standard\"}}\n\nevent: ping\ndata: {\"type\":\"ping\"}\n\nevent: content_block_start\ndata: {\"type\":\"content_block_start\",\"index\":0,\"content_block\":{\"type\":\"tool_use\",\"id\":\"call_function_vkxtif4epmvm_1\",\"name\":\"get_weather\",\"input\":{}}}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"input_json_delta\",\"partial_json\":\"{\\\"city\\\": \\\"Paris\"}}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"input_json_delta\",\"partial_json\":\"\\\"}\"}}\n\nevent: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0}\n\nevent: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"tool_use\"},\"usage\":{\"input_tokens\":290,\"output_tokens\":27,\"cache_read_input_tokens\":114,\"service_tier\":\"standard\"}}\n\nevent: message_stop\ndata: {\"type\":\"message_stop\"}\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/anthropic-compatible-messages/minimax-m3-anthropic-compatible-tool-loop.json b/packages/ai/test/fixtures/recordings/anthropic-compatible-messages/minimax-m3-anthropic-compatible-tool-loop.json new file mode 100644 index 000000000000..e87e275c796a --- /dev/null +++ b/packages/ai/test/fixtures/recordings/anthropic-compatible-messages/minimax-m3-anthropic-compatible-tool-loop.json @@ -0,0 +1,60 @@ +{ + "version": 1, + "metadata": { + "provider": "minimax", + "protocol": "anthropic-messages", + "route": "anthropic-messages", + "transport": "http", + "model": "MiniMax-M3", + "tags": [ + "prefix:anthropic-compatible-messages", + "provider:minimax", + "protocol:anthropic-messages", + "tool", + "tool-loop", + "golden" + ], + "name": "anthropic-compatible-messages/minimax-m3-anthropic-compatible-tool-loop", + "recordedAt": "2026-07-18T03:42:25.248Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.minimax.io/anthropic/v1/messages", + "headers": { + "anthropic-version": "2023-06-01", + "content-type": "application/json" + }, + "body": "{\"model\":\"MiniMax-M3\",\"system\":[{\"type\":\"text\",\"text\":\"Use the get_weather tool exactly once. After the tool result, reply exactly: Paris is sunny.\"}],\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"What is the weather in Paris?\"}]}],\"tools\":[{\"name\":\"get_weather\",\"description\":\"Get current weather for a city.\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false}}],\"stream\":true,\"max_tokens\":80,\"temperature\":0}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"id\":\"3807fa12f9ecb9357df511e099da6da0\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[],\"model\":\"MiniMax-M3\",\"stop_reason\":null,\"stop_sequence\":null,\"usage\":{\"input_tokens\":0,\"output_tokens\":0,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":417,\"service_tier\":\"standard\"},\"service_tier\":\"standard\"}}\n\nevent: ping\ndata: {\"type\":\"ping\"}\n\nevent: content_block_start\ndata: {\"type\":\"content_block_start\",\"index\":0,\"content_block\":{\"type\":\"tool_use\",\"id\":\"call_function_yr64rwmre4gr_1\",\"name\":\"get_weather\",\"input\":{}}}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"input_json_delta\",\"partial_json\":\"{\\\"city\\\": \\\"Paris\"}}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"input_json_delta\",\"partial_json\":\"\\\"}\"}}\n\nevent: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0}\n\nevent: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"tool_use\"},\"usage\":{\"input_tokens\":303,\"output_tokens\":27,\"cache_read_input_tokens\":114,\"service_tier\":\"standard\"}}\n\nevent: message_stop\ndata: {\"type\":\"message_stop\"}\n\n" + } + }, + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.minimax.io/anthropic/v1/messages", + "headers": { + "anthropic-version": "2023-06-01", + "content-type": "application/json" + }, + "body": "{\"model\":\"MiniMax-M3\",\"system\":[{\"type\":\"text\",\"text\":\"Use the get_weather tool exactly once. After the tool result, reply exactly: Paris is sunny.\"}],\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"What is the weather in Paris?\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"call_function_yr64rwmre4gr_1\",\"name\":\"get_weather\",\"input\":{\"city\":\"Paris\"}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"call_function_yr64rwmre4gr_1\",\"content\":\"{\\\"temperature\\\":22,\\\"condition\\\":\\\"sunny\\\"}\"}]}],\"tools\":[{\"name\":\"get_weather\",\"description\":\"Get current weather for a city.\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false}}],\"stream\":true,\"max_tokens\":80,\"temperature\":0}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"id\":\"92f8a1e86f29946eb2699d40a088fc08\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[],\"model\":\"MiniMax-M3\",\"stop_reason\":null,\"stop_sequence\":null,\"usage\":{\"input_tokens\":41,\"output_tokens\":0,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":430,\"service_tier\":\"standard\"},\"service_tier\":\"standard\"}}\n\nevent: ping\ndata: {\"type\":\"ping\"}\n\nevent: content_block_start\ndata: {\"type\":\"content_block_start\",\"index\":0,\"content_block\":{\"type\":\"text\",\"text\":\"\"}}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"Paris\"}}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\" is sunny.\"}}\n\nevent: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0}\n\nevent: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\"},\"usage\":{\"input_tokens\":41,\"output_tokens\":4,\"cache_read_input_tokens\":430,\"service_tier\":\"standard\"}}\n\nevent: message_stop\ndata: {\"type\":\"message_stop\"}\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/anthropic-messages-cache/keeps-a-long-tool-turn-inside-the-cache-lookback.json b/packages/ai/test/fixtures/recordings/anthropic-messages-cache/keeps-a-long-tool-turn-inside-the-cache-lookback.json new file mode 100644 index 000000000000..cf349fb8526b --- /dev/null +++ b/packages/ai/test/fixtures/recordings/anthropic-messages-cache/keeps-a-long-tool-turn-inside-the-cache-lookback.json @@ -0,0 +1,54 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:anthropic-messages-cache", + "provider:anthropic", + "protocol:anthropic-messages", + "cache", + "tool" + ], + "name": "anthropic-messages-cache/keeps-a-long-tool-turn-inside-the-cache-lookback", + "recordedAt": "2026-07-24T16:22:29.494Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.anthropic.com/v1/messages", + "headers": { + "anthropic-version": "2023-06-01", + "content-type": "application/json" + }, + "body": "{\"model\":\"claude-haiku-4-5-20251001\",\"system\":[{\"type\":\"text\",\"text\":\"You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. \",\"cache_control\":{\"type\":\"ephemeral\"}}],\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Run the fixture lookups.\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_0\",\"name\":\"lookup\",\"input\":{\"index\":0}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_0\",\"content\":\"\\\"Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_1\",\"name\":\"lookup\",\"input\":{\"index\":1}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_1\",\"content\":\"\\\"Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_2\",\"name\":\"lookup\",\"input\":{\"index\":2}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_2\",\"content\":\"\\\"Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_3\",\"name\":\"lookup\",\"input\":{\"index\":3}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_3\",\"content\":\"\\\"Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_4\",\"name\":\"lookup\",\"input\":{\"index\":4}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_4\",\"content\":\"\\\"Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_5\",\"name\":\"lookup\",\"input\":{\"index\":5}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_5\",\"content\":\"\\\"Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_6\",\"name\":\"lookup\",\"input\":{\"index\":6}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_6\",\"content\":\"\\\"Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_7\",\"name\":\"lookup\",\"input\":{\"index\":7}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_7\",\"content\":\"\\\"Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_8\",\"name\":\"lookup\",\"input\":{\"index\":8}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_8\",\"content\":\"\\\"Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_9\",\"name\":\"lookup\",\"input\":{\"index\":9}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_9\",\"content\":\"\\\"Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_10\",\"name\":\"lookup\",\"input\":{\"index\":10}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_10\",\"content\":\"\\\"Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. \\\"\",\"cache_control\":{\"type\":\"ephemeral\"}}]}],\"tools\":[{\"name\":\"lookup\",\"description\":\"Look up a fixture value.\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"index\":{\"type\":\"number\"}},\"required\":[\"index\"],\"additionalProperties\":false},\"cache_control\":{\"type\":\"ephemeral\"}}],\"stream\":true,\"max_tokens\":16,\"temperature\":0}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"model\":\"claude-haiku-4-5-20251001\",\"id\":\"msg_011CdMBzDZ4qqmkyuCMbZ81z\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[],\"stop_reason\":null,\"stop_sequence\":null,\"stop_details\":null,\"usage\":{\"input_tokens\":5,\"cache_creation_input_tokens\":12288,\"cache_read_input_tokens\":0,\"cache_creation\":{\"ephemeral_5m_input_tokens\":12288,\"ephemeral_1h_input_tokens\":0},\"output_tokens\":2,\"service_tier\":\"standard\",\"inference_geo\":\"not_available\"}} }\n\nevent: content_block_start\ndata: {\"type\":\"content_block_start\",\"index\":0,\"content_block\":{\"type\":\"text\",\"text\":\"\"} }\n\nevent: ping\ndata: {\"type\": \"ping\"}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"Fixture\"} }\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\" lookups complete. Results:\\n\\n- Index 0: Fixture\"}}\n\nevent: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0 }\n\nevent: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"max_tokens\",\"stop_sequence\":null,\"stop_details\":null},\"usage\":{\"input_tokens\":5,\"cache_creation_input_tokens\":12288,\"cache_read_input_tokens\":0,\"output_tokens\":16} }\n\nevent: message_stop\ndata: {\"type\":\"message_stop\" }\n\n" + } + }, + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.anthropic.com/v1/messages", + "headers": { + "anthropic-version": "2023-06-01", + "content-type": "application/json" + }, + "body": "{\"model\":\"claude-haiku-4-5-20251001\",\"system\":[{\"type\":\"text\",\"text\":\"You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. \",\"cache_control\":{\"type\":\"ephemeral\"}}],\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Run the fixture lookups.\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_0\",\"name\":\"lookup\",\"input\":{\"index\":0}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_0\",\"content\":\"\\\"Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. Fixture result 0. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_1\",\"name\":\"lookup\",\"input\":{\"index\":1}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_1\",\"content\":\"\\\"Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. Fixture result 1. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_2\",\"name\":\"lookup\",\"input\":{\"index\":2}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_2\",\"content\":\"\\\"Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. Fixture result 2. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_3\",\"name\":\"lookup\",\"input\":{\"index\":3}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_3\",\"content\":\"\\\"Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. Fixture result 3. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_4\",\"name\":\"lookup\",\"input\":{\"index\":4}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_4\",\"content\":\"\\\"Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. Fixture result 4. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_5\",\"name\":\"lookup\",\"input\":{\"index\":5}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_5\",\"content\":\"\\\"Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. Fixture result 5. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_6\",\"name\":\"lookup\",\"input\":{\"index\":6}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_6\",\"content\":\"\\\"Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. Fixture result 6. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_7\",\"name\":\"lookup\",\"input\":{\"index\":7}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_7\",\"content\":\"\\\"Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. Fixture result 7. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_8\",\"name\":\"lookup\",\"input\":{\"index\":8}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_8\",\"content\":\"\\\"Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. Fixture result 8. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_9\",\"name\":\"lookup\",\"input\":{\"index\":9}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_9\",\"content\":\"\\\"Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. Fixture result 9. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"lookup_10\",\"name\":\"lookup\",\"input\":{\"index\":10}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"lookup_10\",\"content\":\"\\\"Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. Fixture result 10. \\\"\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"The fixture lookups are complete.\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Reply exactly: OK\",\"cache_control\":{\"type\":\"ephemeral\"}}]}],\"tools\":[{\"name\":\"lookup\",\"description\":\"Look up a fixture value.\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"index\":{\"type\":\"number\"}},\"required\":[\"index\"],\"additionalProperties\":false},\"cache_control\":{\"type\":\"ephemeral\"}}],\"stream\":true,\"max_tokens\":16,\"temperature\":0}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"model\":\"claude-haiku-4-5-20251001\",\"id\":\"msg_011CdMBzKTWjSsCrp7u47Xem\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[],\"stop_reason\":null,\"stop_sequence\":null,\"stop_details\":null,\"usage\":{\"input_tokens\":3,\"cache_creation_input_tokens\":19,\"cache_read_input_tokens\":12288,\"cache_creation\":{\"ephemeral_5m_input_tokens\":19,\"ephemeral_1h_input_tokens\":0},\"output_tokens\":1,\"service_tier\":\"standard\",\"inference_geo\":\"not_available\"}} }\n\nevent: content_block_start\ndata: {\"type\":\"content_block_start\",\"index\":0,\"content_block\":{\"type\":\"text\",\"text\":\"\"} }\n\nevent: ping\ndata: {\"type\": \"ping\"}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"OK\"} }\n\nevent: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0 }\n\nevent: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\",\"stop_sequence\":null,\"stop_details\":null},\"usage\":{\"input_tokens\":3,\"cache_creation_input_tokens\":19,\"cache_read_input_tokens\":12288,\"output_tokens\":4} }\n\nevent: message_stop\ndata: {\"type\":\"message_stop\"}\n\n" + } + } + ] +} diff --git a/packages/llm/test/fixtures/recordings/anthropic-messages-cache/writes-then-reads-cache-control-on-identical-second-call.json b/packages/ai/test/fixtures/recordings/anthropic-messages-cache/writes-then-reads-cache-control-on-identical-second-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/anthropic-messages-cache/writes-then-reads-cache-control-on-identical-second-call.json rename to packages/ai/test/fixtures/recordings/anthropic-messages-cache/writes-then-reads-cache-control-on-identical-second-call.json diff --git a/packages/llm/test/fixtures/recordings/anthropic-messages/accepts-malformed-assistant-tool-order-with-default-patch.json b/packages/ai/test/fixtures/recordings/anthropic-messages/accepts-malformed-assistant-tool-order-with-default-patch.json similarity index 100% rename from packages/llm/test/fixtures/recordings/anthropic-messages/accepts-malformed-assistant-tool-order-with-default-patch.json rename to packages/ai/test/fixtures/recordings/anthropic-messages/accepts-malformed-assistant-tool-order-with-default-patch.json diff --git a/packages/llm/test/fixtures/recordings/anthropic-messages/anthropic-opus-4-7-image-tool-result.json b/packages/ai/test/fixtures/recordings/anthropic-messages/anthropic-opus-4-7-image-tool-result.json similarity index 100% rename from packages/llm/test/fixtures/recordings/anthropic-messages/anthropic-opus-4-7-image-tool-result.json rename to packages/ai/test/fixtures/recordings/anthropic-messages/anthropic-opus-4-7-image-tool-result.json diff --git a/packages/llm/test/fixtures/recordings/anthropic-messages/claude-opus-4-7-drives-a-tool-loop.json b/packages/ai/test/fixtures/recordings/anthropic-messages/claude-opus-4-7-drives-a-tool-loop.json similarity index 100% rename from packages/llm/test/fixtures/recordings/anthropic-messages/claude-opus-4-7-drives-a-tool-loop.json rename to packages/ai/test/fixtures/recordings/anthropic-messages/claude-opus-4-7-drives-a-tool-loop.json diff --git a/packages/llm/test/fixtures/recordings/anthropic-messages/rejects-malformed-assistant-tool-order-without-patch.json b/packages/ai/test/fixtures/recordings/anthropic-messages/rejects-malformed-assistant-tool-order-without-patch.json similarity index 100% rename from packages/llm/test/fixtures/recordings/anthropic-messages/rejects-malformed-assistant-tool-order-without-patch.json rename to packages/ai/test/fixtures/recordings/anthropic-messages/rejects-malformed-assistant-tool-order-without-patch.json diff --git a/packages/llm/test/fixtures/recordings/anthropic-messages/streams-text.json b/packages/ai/test/fixtures/recordings/anthropic-messages/streams-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/anthropic-messages/streams-text.json rename to packages/ai/test/fixtures/recordings/anthropic-messages/streams-text.json diff --git a/packages/llm/test/fixtures/recordings/anthropic-messages/streams-tool-call.json b/packages/ai/test/fixtures/recordings/anthropic-messages/streams-tool-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/anthropic-messages/streams-tool-call.json rename to packages/ai/test/fixtures/recordings/anthropic-messages/streams-tool-call.json diff --git a/packages/ai/test/fixtures/recordings/bedrock-converse-cache/writes-then-reads-cachepoint-on-identical-second-call.json b/packages/ai/test/fixtures/recordings/bedrock-converse-cache/writes-then-reads-cachepoint-on-identical-second-call.json new file mode 100644 index 000000000000..8fd307e2202f --- /dev/null +++ b/packages/ai/test/fixtures/recordings/bedrock-converse-cache/writes-then-reads-cachepoint-on-identical-second-call.json @@ -0,0 +1,53 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:bedrock-converse-cache", + "provider:amazon-bedrock", + "protocol:bedrock-converse", + "cache" + ], + "name": "bedrock-converse-cache/writes-then-reads-cachepoint-on-identical-second-call", + "recordedAt": "2026-07-23T02:29:10.955Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-haiku-4-5-20251001-v1%3A0/converse-stream", + "headers": { + "content-type": "application/json" + }, + "body": "{\"modelId\":\"us.anthropic.claude-haiku-4-5-20251001-v1:0\",\"messages\":[{\"role\":\"user\",\"content\":[{\"text\":\"Say hi.\"}]}],\"system\":[{\"text\":\"You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. \"},{\"cachePoint\":{\"type\":\"default\"}}],\"inferenceConfig\":{\"maxTokens\":16,\"temperature\":0}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/vnd.amazon.eventstream" + }, + "body": "AAAAiwAAAFImcW4yCzpldmVudC10eXBlBwAMbWVzc2FnZVN0YXJ0DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlZmdoaWprbG1uIiwicm9sZSI6ImFzc2lzdGFudCJ9uwonDAAAANUAAABX0TjrFws6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJsb2NrSW5kZXgiOjAsImRlbHRhIjp7InRleHQiOiJIaS4ifSwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNCJ9BToCUgAAAJMAAABWcYx2aAs6ZXZlbnQtdHlwZQcAEGNvbnRlbnRCbG9ja1N0b3ANOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwicCI6ImFiY2RlZmdoaWprbG1ubyJ9uOXHGAAAALAAAABRaYm2Hws6ZXZlbnQtdHlwZQcAC21lc3NhZ2VTdG9wDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVIiwic3RvcFJlYXNvbiI6ImVuZF90dXJuIn0SuCAcAAABgQAAAE6znPl5CzpldmVudC10eXBlBwAIbWV0YWRhdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJtZXRyaWNzIjp7ImxhdGVuY3lNcyI6MTE5OH0sInAiOiJhYmNkZWYiLCJ1c2FnZSI6eyJjYWNoZURldGFpbHMiOlt7ImlucHV0VG9rZW5zIjo1NzUyLCJ0dGwiOiI1bSJ9XSwiY2FjaGVSZWFkSW5wdXRUb2tlbkNvdW50IjowLCJjYWNoZVJlYWRJbnB1dFRva2VucyI6MCwiY2FjaGVXcml0ZUlucHV0VG9rZW5Db3VudCI6NTc1MiwiY2FjaGVXcml0ZUlucHV0VG9rZW5zIjo1NzUyLCJpbnB1dFRva2VucyI6OSwib3V0cHV0VG9rZW5zIjoyLCJzZXJ2ZXJUb29sVXNhZ2UiOnt9LCJ0b3RhbFRva2VucyI6NTc2M319YVPHOQ==", + "bodyEncoding": "base64" + } + }, + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-haiku-4-5-20251001-v1%3A0/converse-stream", + "headers": { + "content-type": "application/json" + }, + "body": "{\"modelId\":\"us.anthropic.claude-haiku-4-5-20251001-v1:0\",\"messages\":[{\"role\":\"user\",\"content\":[{\"text\":\"Say hi.\"}]}],\"system\":[{\"text\":\"You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. You are a concise, factual assistant. Answer precisely and avoid filler. Cite numbers when known. \"},{\"cachePoint\":{\"type\":\"default\"}}],\"inferenceConfig\":{\"maxTokens\":16,\"temperature\":0}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/vnd.amazon.eventstream" + }, + "body": "AAAApgAAAFIfIIWHCzpldmVudC10eXBlBwAMbWVzc2FnZVN0YXJ0DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PIiwicm9sZSI6ImFzc2lzdGFudCJ9AcVkFwAAAKkAAABX7Rrm2Qs6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJsb2NrSW5kZXgiOjAsImRlbHRhIjp7InRleHQiOiJIaS4ifSwicCI6ImFiY2RlZmdoaWprbG0iffxI0NkAAACiAAAAVu3N514LOmV2ZW50LXR5cGUHABBjb250ZW50QmxvY2tTdG9wDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJsb2NrSW5kZXgiOjAsInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0QifWQnKBAAAACFAAAAUQBIgekLOmV2ZW50LXR5cGUHAAttZXNzYWdlU3RvcA06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7InAiOiJhYmNkIiwic3RvcFJlYXNvbiI6ImVuZF90dXJuIn0c+t0FAAABTQAAAE6fefyjCzpldmVudC10eXBlBwAIbWV0YWRhdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJtZXRyaWNzIjp7ImxhdGVuY3lNcyI6OTcwfSwicCI6ImFiY2QiLCJ1c2FnZSI6eyJjYWNoZVJlYWRJbnB1dFRva2VuQ291bnQiOjU3NTIsImNhY2hlUmVhZElucHV0VG9rZW5zIjo1NzUyLCJjYWNoZVdyaXRlSW5wdXRUb2tlbkNvdW50IjowLCJjYWNoZVdyaXRlSW5wdXRUb2tlbnMiOjAsImlucHV0VG9rZW5zIjo5LCJvdXRwdXRUb2tlbnMiOjIsInNlcnZlclRvb2xVc2FnZSI6e30sInRvdGFsVG9rZW5zIjo1NzYzfX0J7IoM", + "bodyEncoding": "base64" + } + } + ] +} diff --git a/packages/llm/test/fixtures/recordings/bedrock-converse/drives-a-tool-loop.json b/packages/ai/test/fixtures/recordings/bedrock-converse/drives-a-tool-loop.json similarity index 100% rename from packages/llm/test/fixtures/recordings/bedrock-converse/drives-a-tool-loop.json rename to packages/ai/test/fixtures/recordings/bedrock-converse/drives-a-tool-loop.json diff --git a/packages/llm/test/fixtures/recordings/bedrock-converse/streams-a-tool-call.json b/packages/ai/test/fixtures/recordings/bedrock-converse/streams-a-tool-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/bedrock-converse/streams-a-tool-call.json rename to packages/ai/test/fixtures/recordings/bedrock-converse/streams-a-tool-call.json diff --git a/packages/llm/test/fixtures/recordings/bedrock-converse/streams-text.json b/packages/ai/test/fixtures/recordings/bedrock-converse/streams-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/bedrock-converse/streams-text.json rename to packages/ai/test/fixtures/recordings/bedrock-converse/streams-text.json diff --git a/packages/llm/test/fixtures/recordings/cloudflare-ai-gateway/cloudflare-ai-gateway-workers-ai-gpt-oss-20b-tools-tool-call.json b/packages/ai/test/fixtures/recordings/cloudflare-ai-gateway/cloudflare-ai-gateway-workers-ai-gpt-oss-20b-tools-tool-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/cloudflare-ai-gateway/cloudflare-ai-gateway-workers-ai-gpt-oss-20b-tools-tool-call.json rename to packages/ai/test/fixtures/recordings/cloudflare-ai-gateway/cloudflare-ai-gateway-workers-ai-gpt-oss-20b-tools-tool-call.json diff --git a/packages/llm/test/fixtures/recordings/cloudflare-ai-gateway/cloudflare-ai-gateway-workers-ai-llama-3-1-8b-text.json b/packages/ai/test/fixtures/recordings/cloudflare-ai-gateway/cloudflare-ai-gateway-workers-ai-llama-3-1-8b-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/cloudflare-ai-gateway/cloudflare-ai-gateway-workers-ai-llama-3-1-8b-text.json rename to packages/ai/test/fixtures/recordings/cloudflare-ai-gateway/cloudflare-ai-gateway-workers-ai-llama-3-1-8b-text.json diff --git a/packages/llm/test/fixtures/recordings/cloudflare-workers-ai/cloudflare-workers-ai-gpt-oss-20b-tools-tool-call.json b/packages/ai/test/fixtures/recordings/cloudflare-workers-ai/cloudflare-workers-ai-gpt-oss-20b-tools-tool-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/cloudflare-workers-ai/cloudflare-workers-ai-gpt-oss-20b-tools-tool-call.json rename to packages/ai/test/fixtures/recordings/cloudflare-workers-ai/cloudflare-workers-ai-gpt-oss-20b-tools-tool-call.json diff --git a/packages/llm/test/fixtures/recordings/cloudflare-workers-ai/cloudflare-workers-ai-llama-3-1-8b-text.json b/packages/ai/test/fixtures/recordings/cloudflare-workers-ai/cloudflare-workers-ai-llama-3-1-8b-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/cloudflare-workers-ai/cloudflare-workers-ai-llama-3-1-8b-text.json rename to packages/ai/test/fixtures/recordings/cloudflare-workers-ai/cloudflare-workers-ai-llama-3-1-8b-text.json diff --git a/packages/llm/test/fixtures/recordings/gemini-cache/reports-cachedcontenttokencount-on-identical-second-call.json b/packages/ai/test/fixtures/recordings/gemini-cache/reports-cachedcontenttokencount-on-identical-second-call.json similarity index 99% rename from packages/llm/test/fixtures/recordings/gemini-cache/reports-cachedcontenttokencount-on-identical-second-call.json rename to packages/ai/test/fixtures/recordings/gemini-cache/reports-cachedcontenttokencount-on-identical-second-call.json index 0145756887e0..209aadfc1a43 100644 --- a/packages/llm/test/fixtures/recordings/gemini-cache/reports-cachedcontenttokencount-on-identical-second-call.json +++ b/packages/ai/test/fixtures/recordings/gemini-cache/reports-cachedcontenttokencount-on-identical-second-call.json @@ -21,7 +21,7 @@ "headers": { "content-type": "text/event-stream" }, - "body": "" + "body": "data: {\"candidates\":[{\"content\":{\"role\":\"model\",\"parts\":[{\"text\":\"Hi.\"}]},\"finishReason\":\"STOP\"}],\"usageMetadata\":{\"promptTokenCount\":1200,\"candidatesTokenCount\":2,\"totalTokenCount\":1202}}\n\n" } }, { @@ -39,7 +39,7 @@ "headers": { "content-type": "text/event-stream" }, - "body": "" + "body": "data: {\"candidates\":[{\"content\":{\"role\":\"model\",\"parts\":[{\"text\":\"Hi.\"}]},\"finishReason\":\"STOP\"}],\"usageMetadata\":{\"cachedContentTokenCount\":1100,\"promptTokenCount\":1200,\"candidatesTokenCount\":2,\"totalTokenCount\":1202}}\n\n" } } ] diff --git a/packages/llm/test/fixtures/recordings/gemini/gemini-2-5-flash-image.json b/packages/ai/test/fixtures/recordings/gemini/gemini-2-5-flash-image.json similarity index 100% rename from packages/llm/test/fixtures/recordings/gemini/gemini-2-5-flash-image.json rename to packages/ai/test/fixtures/recordings/gemini/gemini-2-5-flash-image.json diff --git a/packages/llm/test/fixtures/recordings/gemini/streams-text.json b/packages/ai/test/fixtures/recordings/gemini/streams-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/gemini/streams-text.json rename to packages/ai/test/fixtures/recordings/gemini/streams-text.json diff --git a/packages/llm/test/fixtures/recordings/gemini/streams-tool-call.json b/packages/ai/test/fixtures/recordings/gemini/streams-tool-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/gemini/streams-tool-call.json rename to packages/ai/test/fixtures/recordings/gemini/streams-tool-call.json diff --git a/packages/ai/test/fixtures/recordings/google-images/edits-an-image.json b/packages/ai/test/fixtures/recordings/google-images/edits-an-image.json new file mode 100644 index 000000000000..41b053201b29 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/google-images/edits-an-image.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "metadata": { + "tags": ["prefix:google-images", "provider:google", "protocol:google-images"], + "name": "google-images/edits-an-image", + "recordedAt": "2026-07-20T21:03:59.635Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image:generateContent", + "headers": { + "content-type": "application/json" + }, + "body": "{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"Transform this minimal source into a bright orange sun icon with eight rounded rays on a pale blue background.\"},{\"inlineData\":{\"mimeType\":\"image/jpeg\",\"data\":\"/9j/4AAQSkZJRgABAgAAAQABAAD//gAQTGF2YzYwLjMxLjEwMgD/2wBDAAgQEBMQExYWFhYWFhoYGhsbGxoaGhobGxsdHR0iIiIdHR0bGx0dICAiIiUmJSMjIiMmJigoKDAwLi44ODpFRVP/xABrAAEBAQEBAQAAAAAAAAAAAAAABwgGBAUBAQAAAAAAAAAAAAAAAAAAAAAQAAICAQEFBwMEAwEAAAAAAAABAwIEEQYFEiFhwXGBUUExE6GRU0LwciLh8bEjEQEAAAAAAAAAAAAAAAAAAAAA/8AAEQgAgACAAwEiAAIRAAMRAP/aAAwDAQACEQMRAD8Av4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB458iLFjtLNesdK+9rPRf76e4yMiPFivNLbhpHV2s+i7X6LzMhb33xPvabitrWKrfxxa8qrzfnZ+r8EBTc/bPm64USa/LLrz61omvq/AnMu0W9ZXq8q9elFSi+ldTigB2se0W9Ynqsq9ul1S6+tSiYG2b1Vc2Jafli15dXRt/R+BBgBuvHyIcqOssN6yUt7Wq9V/h9HzPYY03RvefdM3HTW0dn/AOkWvKy815WXo/ua+x8iPKhpNFbipJVWq/36r2a8wPaAAAAAAAAAAIDtnnvWLCq+WnyydfSlX9X9iDHZ7QyuXeuW3+m6ou6lUjjAAAAAAAXbYzeDVpcKz5NfLH0ftdLv5P7kJOw2flcW9cRr1k4H3XTr2gbHAAAAAAAAAAGO9oYnFvXLT/VdXXdeqZxhdts8Bq0WZVcmvik6NaujffzX2ISAAAAAADr9wRuXeuGl6ScfhRO3YcgXHYzAdpZcyy/rRfFH1s+dmu5aLxA0MAAAAAAAAAAPDk40WXDJDLXipJXha7V1Xuupj7eu6p91TuORO1Hr8cmnK67LL1Rs8+fk4sOZFaKeOslLe6f/AFP3T8muYGGAXHP2Nkq3bDlV6/jl5WXRXXJ+KROpdxb0ielsOZ/wXGvvRsDkwdXHuLekr0WHMv5V4F97tFDwNjZrtWzJVHX8cb4rvo7acK8NQJtuvdc+9Z1FGtKrT5JNP60r2vyXqbBxMWLCgjgiXDSNaLzfm31b5sYuJBhRKKCOsdF6L1fm37t9WfRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9k=\"}}]}],\"generationConfig\":{\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json; charset=UTF-8" + }, + "body": "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": [\n {\n \"inlineData\": {\n \"mimeType\": \"image/jpeg\",\n \"data\": \"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4faJcUMjucaqXKJjdXJseClzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmhhc2guZGF0YWRoYXNoWCAwb9ikthHlFMuMiGHBjE0Y311J/EnYBT7JwAWpLgCGoWlzaWduYXR1cmV4GXNlbGYjanVtYmY9YzJwYS5zaWduYXR1cmVjYWxnZnNoYTI1NgAAAzZqdW1iAAAAKWp1bWRjMmFzABEAEIAAAKoAOJtxA2MycGEuYXNzZXJ0aW9ucwAAAACcanVtYgAAAChqdW1kY2JvcgARABCAAACqADibcQNjMnBhLmhhc2guZGF0YQAAAABsY2JvcqRqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZGMtjYWxnZnNoYTI1NmRoYXNoWCAlhZCGg7/v5Ytiy3q9KgNaZrM+hk4/22VETKwRDCGQ9GNwYWROAAAAAAAAAAAAAAAAAAAAAAH4anVtYgAAAClqdW1kY2JvcgARABCAAACqADibcQNjMnBhLmFjdGlvbnMudjIAAAABx2Nib3KhZ2FjdGlvbnOCpGZhY3Rpb25sYzJwYS5jcmVhdGVka2Rlc2NyaXB0aW9ueCBDcmVhdGVkIGJ5IEdvb2dsZSBHZW5lcmF0aXZlIEFJLnFkaWdpdGFsU291cmNlVHlwZXhGaHR0cDovL2N2LmlwdGMub3JnL25ld3Njb2Rlcy9kaWdpdGFsc291cmNldHlwZS90cmFpbmVkQWxnb3JpdGhtaWNNZWRpYWpwYXJhbWV0ZXJzoWtpbmdyZWRpZW50c4GiY3VybHgtc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pbmdyZWRpZW50LnYzZGhhc2hYIEPPQQUmfu68wdIEHLdRNcwvAGFseCftiCe5+857WDmWo2ZhY3Rpb25rYzJwYS5lZGl0ZWRrZGVzY3JpcHRpb254KEFwcGxpZWQgaW1wZXJjZXB0aWJsZSBTeW50aElEIHdhdGVybWFyay5xZGlnaXRhbFNvdXJjZVR5cGV4Rmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWEAAABxanVtYgAAACxqdW1kY2JvcgARABCAAACqADibcQNjMnBhLmluZ3JlZGll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\"\n },\n \"thoughtSignature\": \"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\"\n }\n ],\n \"role\": \"model\"\n },\n \"finishReason\": \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 279,\n \"candidatesTokenCount\": 1343,\n \"totalTokenCount\": 1622,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 21\n },\n {\n \"modality\": \"IMAGE\",\n \"tokenCount\": 258\n }\n ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": \"IMAGE\",\n \"tokenCount\": 1120\n }\n ],\n \"serviceTier\": \"standard\"\n },\n \"modelVersion\": \"gemini-3.1-flash-image\",\n \"responseId\": \"Oo1easiTJpCa_uMP6bT1uQM\"\n}\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/google-images/generates-an-image.json b/packages/ai/test/fixtures/recordings/google-images/generates-an-image.json new file mode 100644 index 000000000000..c947aea16cae --- /dev/null +++ b/packages/ai/test/fixtures/recordings/google-images/generates-an-image.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:google-images", + "provider:google", + "protocol:google-images" + ], + "name": "google-images/generates-an-image", + "recordedAt": "2026-07-19T16:05:51.868Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-image:generateContent", + "headers": { + "content-type": "application/json" + }, + "body": "{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"A simple flat blue circle centered on a plain white background.\"}]}],\"generationConfig\":{\"responseModalities\":[\"IMAGE\"],\"imageConfig\":{\"aspectRatio\":\"1:1\"}}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json; charset=UTF-8" + }, + "body": "{\n \"candidates\": [\n {\n \"content\": {\n \"parts\": [\n {\n \"inlineData\": {\n \"mimeType\": \"image/jpeg\",\n \"data\": \"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/mdFaXNpZ25hdHVyZXgZc2VsZiNqdW1iZj1jMnBhLnNpZ25hdHVyZWNhbGdmc2hhMjU2AAACUWp1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAAJxqdW1iAAAAKGp1bWRjYm9yABEAEIAAAKoAOJtxA2MycGEuaGFzaC5kYXRhAAAAAGxjYm9ypGpleGNsdXNpb25zgaJlc3RhcnQUZmxlbmd0aBkXiGNhbGdmc2hhMjU2ZGhhc2hYIOXoe3s7m0g10nmaPcd3hcBfeukyOoyxmMcRUD8/eDJdY3BhZE4AAAAAAAAAAAAAAAAAAAAAAYRqdW1iAAAAKWp1bWRjYm9yABEAEIAAAKoAOJtxA2MycGEuYWN0aW9ucy52MgAAAAFTY2JvcqFnYWN0aW9uc4KjZmFjdGlvbmxjMnBhLmNyZWF0ZWRrZGVzY3JpcHRpb254IENyZWF0ZWQgYnkgR29vZ2xlIEdlbmVyYXRpdmUgQUkucWRpZ2l0YWxTb3VyY2VUeXBleEZodHRwOi8vY3YuaXB0Yy5vcmcvbmV3c2NvZGVzL2RpZ2l0YWxzb3VyY2V0eXBlL3RyYWluZWRBbGdvcml0aG1pY01lZGlho2ZhY3Rpb25rYzJwYS5lZGl0ZWRrZGVzY3JpcHRpb254KEFwcGxpZWQgaW1wZXJjZXB0aWJsZSBTeW50aElEIHdhdGVybWFyay5xZGlnaXRhbFNvdXJjZVR5cGV4Rmh0dHA6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvdHJhaW5lZEFsZ29yaXRobWljTWVkaWH/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAQABAADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRol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\"\n },\n \"thoughtSignature\": \"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\"\n }\n ],\n \"role\": \"model\"\n },\n \"finishReason\": \"STOP\",\n \"index\": 0\n }\n ],\n \"usageMetadata\": {\n \"promptTokenCount\": 13,\n \"candidatesTokenCount\": 1399,\n \"totalTokenCount\": 1412,\n \"promptTokensDetails\": [\n {\n \"modality\": \"TEXT\",\n \"tokenCount\": 13\n }\n ],\n \"candidatesTokensDetails\": [\n {\n \"modality\": \"IMAGE\",\n \"tokenCount\": 1120\n }\n ],\n \"serviceTier\": \"standard\"\n },\n \"modelVersion\": \"gemini-3.1-flash-image\",\n \"responseId\": \"2fVcat7PCOSf-8YP0Jfm8QM\"\n}\n" + } + } + ] +} diff --git a/packages/llm/test/fixtures/recordings/openai-chat/continues-after-tool-result.json b/packages/ai/test/fixtures/recordings/openai-chat/continues-after-tool-result.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-chat/continues-after-tool-result.json rename to packages/ai/test/fixtures/recordings/openai-chat/continues-after-tool-result.json diff --git a/packages/llm/test/fixtures/recordings/openai-chat/drives-a-tool-loop-end-to-end.json b/packages/ai/test/fixtures/recordings/openai-chat/drives-a-tool-loop-end-to-end.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-chat/drives-a-tool-loop-end-to-end.json rename to packages/ai/test/fixtures/recordings/openai-chat/drives-a-tool-loop-end-to-end.json diff --git a/packages/llm/test/fixtures/recordings/openai-chat/streams-text.json b/packages/ai/test/fixtures/recordings/openai-chat/streams-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-chat/streams-text.json rename to packages/ai/test/fixtures/recordings/openai-chat/streams-text.json diff --git a/packages/llm/test/fixtures/recordings/openai-chat/streams-tool-call.json b/packages/ai/test/fixtures/recordings/openai-chat/streams-tool-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-chat/streams-tool-call.json rename to packages/ai/test/fixtures/recordings/openai-chat/streams-tool-call.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/deepseek-streams-text.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/deepseek-streams-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/deepseek-streams-text.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/deepseek-streams-text.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/groq-llama-3-3-70b-drives-a-tool-loop.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/groq-llama-3-3-70b-drives-a-tool-loop.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/groq-llama-3-3-70b-drives-a-tool-loop.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/groq-llama-3-3-70b-drives-a-tool-loop.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/groq-streams-text.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/groq-streams-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/groq-streams-text.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/groq-streams-text.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/groq-streams-tool-call.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/groq-streams-tool-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/groq-streams-tool-call.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/groq-streams-tool-call.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-claude-opus-4-7-drives-a-tool-loop.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/openrouter-claude-opus-4-7-drives-a-tool-loop.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-claude-opus-4-7-drives-a-tool-loop.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/openrouter-claude-opus-4-7-drives-a-tool-loop.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-gpt-4o-mini-drives-a-tool-loop.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/openrouter-gpt-4o-mini-drives-a-tool-loop.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-gpt-4o-mini-drives-a-tool-loop.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/openrouter-gpt-4o-mini-drives-a-tool-loop.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-gpt-5-5-drives-a-tool-loop.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/openrouter-gpt-5-5-drives-a-tool-loop.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-gpt-5-5-drives-a-tool-loop.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/openrouter-gpt-5-5-drives-a-tool-loop.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-streams-text.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/openrouter-streams-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-streams-text.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/openrouter-streams-text.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-streams-tool-call.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/openrouter-streams-tool-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/openrouter-streams-tool-call.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/openrouter-streams-tool-call.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/togetherai-streams-text.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/togetherai-streams-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/togetherai-streams-text.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/togetherai-streams-text.json diff --git a/packages/llm/test/fixtures/recordings/openai-compatible-chat/togetherai-streams-tool-call.json b/packages/ai/test/fixtures/recordings/openai-compatible-chat/togetherai-streams-tool-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-compatible-chat/togetherai-streams-tool-call.json rename to packages/ai/test/fixtures/recordings/openai-compatible-chat/togetherai-streams-tool-call.json diff --git a/packages/ai/test/fixtures/recordings/openai-images/edits-an-image.json b/packages/ai/test/fixtures/recordings/openai-images/edits-an-image.json new file mode 100644 index 000000000000..d4f0112398b2 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/openai-images/edits-an-image.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "metadata": { + "tags": ["prefix:openai-images", "provider:openai", "protocol:openai-images"], + "name": "openai-images/edits-an-image", + "recordedAt": "2026-07-20T21:03:15.875Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.openai.com/v1/images/edits", + "headers": { + "content-type": "multipart/form-data; boundary=----WebKitFormBoundaryd815191b7a314b73933388622c7ece5a" + }, + "body": "------WebKitFormBoundaryd815191b7a314b73933388622c7ece5a\r\nContent-Disposition: form-data; name=\"model\"\r\n\r\ngpt-image-1-mini\r\n------WebKitFormBoundaryd815191b7a314b73933388622c7ece5a\r\nContent-Disposition: form-data; name=\"prompt\"\r\n\r\nKeep the simple shape and change it from black to bright green.\r\n------WebKitFormBoundaryd815191b7a314b73933388622c7ece5a\r\nContent-Disposition: form-data; name=\"output_format\"\r\n\r\njpeg\r\n------WebKitFormBoundaryd815191b7a314b73933388622c7ece5a\r\nContent-Disposition: form-data; name=\"output_compression\"\r\n\r\n10\r\n------WebKitFormBoundaryd815191b7a314b73933388622c7ece5a\r\nContent-Disposition: form-data; name=\"quality\"\r\n\r\nlow\r\n------WebKitFormBoundaryd815191b7a314b73933388622c7ece5a\r\nContent-Disposition: form-data; name=\"size\"\r\n\r\n1024x1024\r\n------WebKitFormBoundaryd815191b7a314b73933388622c7ece5a\r\nContent-Disposition: form-data; name=\"image[]\"; filename=\"image-0\"\r\nContent-Type: image/jpeg\r\n\r\n����\u0000\u0010JFIF\u0000\u0001\u0002\u0000\u0000\u0001\u0000\u0001\u0000\u0000��\u0000\u0010Lavc60.31.102\u0000��\u0000C\u0000\b\u0010\u0010\u0013\u0010\u0013\u0016\u0016\u0016\u0016\u0016\u0016\u001a\u0018\u001a\u001b\u001b\u001b\u001a\u001a\u001a\u001a\u001b\u001b\u001b\u001d\u001d\u001d\"\"\"\u001d\u001d\u001d\u001b\u001b\u001d\u001d \"\"%&%##\"#&&(((00..88:EES��\u0000k\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0007\b\u0006\u0004\u0005\u0001\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0010\u0000\u0002\u0002\u0001\u0001\u0005\u0007\u0003\u0004\u0003\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0003\u0002\u0004\u0011\u0006\u0005\u0012!a�q�QA1\u0013��SB�r\"��#\u0011\u0001\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000��\u0000\u0011\b\u0000�\u0000�\u0003\u0001\"\u0000\u0002\u0011\u0000\u0003\u0011\u0000��\u0000\f\u0003\u0001\u0000\u0002\u0011\u0003\u0011\u0000?\u0000��\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u001e9�\"Ŏ��z�J���E��{����b��ۆ���Ϣ�~���[�|O��ⶵ���qkʫ�����\u0004\u00057?l���D����ϭh���\u0002s.�oY^�*��EJ/�u8�\u0007k\u001e�oX��*��uK��J&\u0006ٽUsbZ~X���ѷ�~\u0004\u0018\u0001���!ʎ��z�K{Z�U�\u001fG��\u0018�toy�L�t����\u0000�\u0016���ו�����\u001f\"<�i4V⤕V����f����\u0000\u0000\u0000\u0000\u0000\u0000\u0000��{�,*�Z|�u��_���1��\f�]��麢�R8�\u0000\u0000\u0000\u0000\u0005�c7�V�\nϓ_,}\u001f������$�6~W\u0016��k�N\u0007�t��\u0006�\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001���'\u0016��O�]]w^��av�<\u0006�\u0016eW&�):5��}��؄�\u0000\u0000\u0000\u0000:��\u001b�z��'\u001f�\u0013�a�\u0017\u001d��v�\\�/�E�G�ϝ��Z/\u001040\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u000f\u000eN4Yp�\f�⤕�k�u^멏���uN�;Q��ɧ+��/Tl����Ù\u0015��:�K{��\u0000S�Oɮ`a�\\s�6J�l9U����e�]r~)\u0013�w\u0016��l9��\\k�F����Ǹ���E�2�U�_{�P�66k�l�Tu�q�+���p�\r@�n��>��E\u001aҫO�M?�+�����q1b‚8\"\\4�h�ߛ}[��.$\u0018Q(����z/W�߻}Y�@\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000��\r\n------WebKitFormBoundaryd815191b7a314b73933388622c7ece5a--\r\n" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json" + }, + "body": "{\n \"created\": 1784581395,\n \"background\": \"opaque\",\n \"data\": [\n {\n \"b64_json\": \"/9j/4AAQSkZJRgABAQAAAQABAAD/62EsSlACEQAAAAEAAGEianVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAYPxqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjgwMjlkZTEwLWUzYWItNDFlZC04OWQ4LWM5MTRiNzMwZThhZgAAABfEanVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNoEDwZFLLPGXo1dQjKxDq7fAAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAFFanVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2gPn6TLqqxnM+3FCVH39DmgAAAA/GNib3KhZ2FjdGlvbnOCpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMjBUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25ncHJlLTIuMHFkaWdpdGFsU291cmNlVHlwZXhGaHR0cDovL2N2LmlwdGMub3JnL25ld3Njb2Rlcy9kaWdpdGFsc291cmNldHlwZS90cmFpbmVkQWxnb3JpdGhtaWNNZWRpYaJmYWN0aW9ubmMycGEuY29udmVydGVkZHdoZW7AdDIwMjYtMDctMjBUMDA6MDA6MDBaAAALump1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2iD9MvKYdPM4D/En8MHCt+TAAALaWNib3KhaG9jc3BWYWxzgnkFhE1JSUVIZ29CQUtDQ0JCY3dnZ1FUQmdrckJnRUZCUWN3QVFFRWdnUUVNSUlFQURDQm9xSVdCQlErQkh2WmhwRXNxV2tkcUc0YU55NXVZQmdMeXhnUE1qQXlOakEzTWpBd016VXlORGxhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkQ1TWZJNVFDNGRzY3hXK3IyNlg2aER1bENESkJCVERzeVNXTkpPaFdlcFNHR3VlRitDcHV0YXdUQUlVVXBRbEI0RzFhb2I1TXhkNGNOYU9yZTlpR2tHQUFCZ1BNakF5TmpBM01qQXdNelV5TkRsYW9CRVlEekl3TWpZd056STNNRE0xTWpRNVdqQUtCZ2dxaGtqT1BRUURBZ05JQURCRkFpRUF6aUdPVm5tUnlhUTdERUZvMXNQM3JoQUwrQllTWmk4TTBRaEVPVUk4Y1RjQ0lCMmFxQlNKK1lZT3ZyMTNOOXI0Z1JzZ1V1eUV3T1k1WW1mYk0zanB0MVFlb0lJREFUQ0NBdjB3Z2dMNU1JSUNmcUFEQWdFQ0FoUXJtOFkva042cUdyVk5hRlJvVkFWQi9tVk1sakFLQmdncWhrak9QUVFEQXpDQnB6RUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQWdNQ0U1bGR5QlpiM0pyTVJFd0R3WURWUVFIREFoT1pYY2dXVzl5YXpFVE1CRUdBMVVFQ2d3S1ZISjFabThnU1c1akxqRVVNQklHQTFVRUN3d0xRMEVnUkdsMmFYTnBiMjR4R2pBWUJna3Foa2lHOXcwQkNRRVdDMk5oUUhSeWRXWnZMbUZwTVNzd0tRWURWUVFERENKVWNuVm1ieUJETWxCQklFTnNZV2x0SUZOcFoyNXBibWNnUTBFZ0tESXdNalVwTUI0WERUSTJNRGN4TnpBd01ETXlNVm9YRFRJMk1EZ3hOakF3TURNeU1Wb3dnYVV4Q3pBSkJnTlZCQVlUQWxWVE1SRXdEd1lEVlFRSURBaE9aWGNnV1c5eWF6RVJNQThHQTFVRUJ3d0lUbVYzSUZsdmNtc3hFekFSQmdOVkJBb01DbFJ5ZFdadklFbHVZeTR4RkRBU0JnTlZCQXNNQzBOQklFUnBkbWx6YVc5dU1Sb3dHQVlKS29aSWh2Y05BUWtCRmd0allVQjBjblZtYnk1aGFURXBNQ2NHQTFVRUF3d2dWSEoxWm04Z1F6SlFRU0JQUTFOUUlGSmxjM0J2Ym1SbGNpQW9NakF5TlNrd1dUQVRCZ2NxaGtqT1BRSUJCZ2dxaGtqT1BRTUJCd05DQUFSa1FCbm5xb3VtYUNvM2VpOHVxSGhOZk9wc1l2bSsvQUd6ejVmd2E1ZXIxcndpOGIvS3ppZXVwMTZlVGxLVms4Rmk5dGRGSGM0RXRPbk5FbUZnc3AvR280R0hNSUdFTUIwR0ExVWREZ1FXQkJRK0JIdlpocEVzcVdrZHFHNGFOeTV1WUJnTHl6QWZCZ05WSFNNRUdEQVdnQlREc3lTV05KT2hXZXBTR0d1ZUYrQ3B1dGF3VERBTUJnTlZIUk1CQWY4RUFqQUFNQTRHQTFVZER3RUIvd1FFQXdJSGdEQVRCZ05WSFNVRUREQUtCZ2dyQmdFRkJRY0RDVEFQQmdrckJnRUZCUWN3QVFVRUFnVUFNQW9HQ0NxR1NNNDlCQU1EQTJrQU1HWUNNUUM3ZzN3aVZVcjU0OVhCYlVzOEZMazFKckI4T2pkVjhRSHd6MlEvOVg4WU8yS0pJL25rTTFsVW5BRVRqUDdlOVJnQ01RRGVHeGlNWlQ5cUtHZGpSb05MTTRFQ2c0VWhOa2tCL1g1bmNzUmpjVkN1QTNCNmZqR2NOengzRnI4dnVvUGY5MXM9eQXMTUlJRVV3b0JBS0NDQkV3d2dnUklCZ2tyQmdFRkJRY3dBUUVFZ2dRNU1JSUVOVENCb3FJV0JCVEwySTQyaWlFUmN5eTU3NG9hbzJxZXZGTk1RQmdQTWpBeU5qQTNNakF3TXpVeU5UQmFNSGN3ZFRCTk1Ba0dCU3NPQXdJYUJRQUVGSUFnOWJ6aUpPbHR2Tlp2eGhjcFpYd2t5UEg5QkJRRDFWK3Zmb1BsQkIxWmdDZEtOUDlGL2V0SmVBSVVNT2loOEtXSlFtdlN1WUpJUjVrWjNCWTNBc3VBQUJnUE1qQXlOakEzTWpBd016VXlOVEJhb0JFWUR6SXdNall3TnpJM01ETTFNalV3V2pBS0JnZ3Foa2pPUFFRREF3Tm5BREJrQWpBdnhJcTUzeVcxV2t5d1dXUFBzdmh0U3Z0elovTDZoelA0eklpN2d0eFFSN1YzdU4ydmNjamZzTmphUWVuRHF2c0NNQ2F3VWNESGR1ZG5OR3RuYlJaRHI0ZE9TMCswcm5rOWZlMTBVNUx2MXlqbWMybzNqRjVNTUlaZ1VkcFFmQ3VlRTZDQ0F4Y3dnZ01UTUlJRER6Q0NBcFdnQXdJQkFnSVVBOUI5TkpKdFZ4bHd4dGdVa0V4enhkUGxtK0F3Q2dZSUtvWkl6ajBFQXdNd2dhZ3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnd3SVRtVjNJRmx2Y21zeEV6QVJCZ05WQkFvTUNsUnlkV1p2SUVsdVl5NHhGREFTQmdOVkJBc01DME5CSUVScGRtbHphVzl1TVJvd0dBWUpLb1pJaHZjTkFRa0JGZ3RqWVVCMGNuVm1ieTVoYVRFc01Db0dBMVVFQXd3alZISjFabThnUXpKUVFTQlNiMjkwSUVOQklDZ3lNREkxTENCRlEwTWdVRE00TkNrd0hoY05Nall3TlRFeE1qTTBNakkxV2hjTk16WXdOVEE0TWpNME1qSTFXakNCbmpFTE1Ba0dBMVVFQmhNQ1ZWTXhFVEFQQmdOVkJBZ01DRTVsZHlCWmIzSnJNUkV3RHdZRFZRUUhEQWhPWlhjZ1dXOXlhekVUTUJFR0ExVUVDZ3dLVkhKMVptOGdTVzVqTGpFVU1CSUdBMVVFQ3d3TFEwRWdSR2wyYVhOcGIyNHhHakFZQmdrcWhraUc5dzBCQ1FFV0MyTmhRSFJ5ZFdadkxtRnBNU0l3SUFZRFZRUUREQmxVY25WbWJ5QlNiMjkwSUU5RFUxQWdVbVZ6Y0c5dVpHVnlNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRVl2ZlhiS0NndGVHczI4aUdJdG5KY3N4N21QZ3Nnd09HdUhUQTJWbG92MXBZK2V3eFY1UVJ4SUZCUzZ5aWY4bFdKY01qN3RwYkk2bXhhc3BXZTZwYlNwZVQxQ2pyZSt2Sk4yVGZQMUpwR0ticllrYzBaQW1jdXdJaFdJSW51UjA1bzRHSE1JR0VNQjBHQTFVZERnUVdCQlRMMkk0MmlpRVJjeXk1NzRvYW8ycWV2Rk5NUURBZkJnTlZIU01FR0RBV2dCUUQxVit2Zm9QbEJCMVpnQ2RLTlA5Ri9ldEplREFNQmdOVkhSTUJBZjhFQWpBQU1BNEdBMVVkRHdFQi93UUVBd0lIZ0RBVEJnTlZIU1VFRERBS0JnZ3JCZ0VGQlFjRENUQVBCZ2tyQmdFRkJRY3dBUVVFQWdVQU1Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01RRHQ3UitMOTh2TXpoTlR3M3IwR3RETURBOGFCT25FT2xhRk5ab3F2Z2VKc2thWlhrbjh0WWJsVk5aU09zWnB4M3dDTUJjWUpOcmZEOFY4d1pXSjFMVngxTXFzS2VFRHFJaXJMemZ3NlVIK1czNFo0eEp1cmJEcTlCTGVUUFd3VVNQSEdBPT0AAADDanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaFyT1gW2H+HNJmIAPazKUasAAAB7Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZYS5kbmFtZW5qdW1iZiBtYW5pZmVzdGNhbGdmc2hhMjU2ZGhhc2hYIO6RSwD4zOiTi1eyRHIBNkcmwySbffxDBxkkK5GKPgK0Y3BhZEkAAAAAAAAAAAAAAAMbanVtYgAAACdqdW1kYzJjbAARABCAAACqADibcQNjMnBhLmNsYWltLnYyAAAAAuxjYm9ypmppbnN0YW5jZUlEeCx4bXA6aWlkOmIyMWIwOTllLTJhOWUtNDNhZC1iMmZhLTFhMzEwNTgxYTUwNHRjbGFpbV9nZW5lcmF0b3JfaW5mb6RkbmFtZXgYT3BlbkFJIE1lZGlhIFNlcnZpY2UgQVBJZGljb26iY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIFyMvdr/Oj/OoGbFX6BkHDS+MkeEauMMm1Vw5rykYW6jd29yZy5jb250ZW50YXV0aC5jMnBhX3JzZjAuNzkuMmtzcGVjVmVyc2lvbmUyLjIuMGlzaWduYXR1cmV4TXNlbGYjanVtYmY9L2MycGEvdXJuOmMycGE6ODAyOWRlMTAtZTNhYi00MWVkLTg5ZDgtYzkxNGI3MzBlOGFmL2MycGEuc2lnbmF0dXJlcmNyZWF0ZWRfYXNzZXJ0aW9uc4SiY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIFyMvdr/Oj/OoGbFX6BkHDS+MkeEauMMm1Vw5rykYW6jomN1cmx4KnNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuYWN0aW9ucy52MmRoYXNoWCDL0X0qg6+sxMTqGgtY3wqwKmIZech8Z/KpRX/D7ryPZ6JjdXJseDJzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmNlcnRpZmljYXRlLXN0YXR1c2RoYXNoWCCHCiZICzw+qlXG3o0I3h2xTHmuHV9YiyJgVM58THbGDqJjdXJseClzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmhhc2guZGF0YWRoYXNoWCB8WpRKPXAd/nEchVTpybF51v5cRYEEiM1RbQjtuXvvHGhkYzp0aXRsZWppbWFnZS5qcGVnY2FsZ2ZzaGEyNTYAAEXOanVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAAEWeY2JvctKEWQdVogEmGCGCWQNyMIIDbjCCAvOgAwIBAgIUUpQlB4G1aob5Mxd4cNaOre9iGkEwCgYIKoZIzj0EAwMwgacxCzAJBgNVBAYTAlVTMREwDwYDVQQIDAhOZXcgWW9yazERMA8GA1UEBwwITmV3IFlvcmsx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AoOFITZJAf1+Z3LEY3FQrgNwen4xnDc8dxa/L7qD3/dbY3BhZFklEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9lhAtQGPYPbAOJtz2WrRZGUxCjVrotQJqXsP7FDm5wLLaVP49NQjL+28J7m1tcsputbVAjBWYyZvM7t43oLV82CfVf/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIBAAEAAMBIgACEQEDEQH/xAAYAAEBAQEBAAAAAAAAAAAAAAAAAQMEAv/EACoQAQEAAgEDAgUFAQEBAAAAAAABAgMREiExQWEEEzJRcSJCUoGRoTNi/8QAGAEBAQEBAQAAAAAAAAAAAAAAAAIBAwT/xAAbEQEBAQEBAQEBAAAAAAAAAAAAARECMRIhQf/aAAwDAQACEQMRAD8A7FQBRAFEAAUBAAVAFEAFQBUABUUBAAAAVAAVAAAFQAABUAFQAAAAAAAAAAAVABRAFEAAAAUEFQAFAQUEAAABUABUUAAEAAAAVAAABUAVFQBUAVAAFAQAFRQBAAFQAFBAAAAAAVAAVFAQAAAAAVABRABUAAUEAAFQAABUAAAAAAAAABUAAAAABQQAAVAAAAUEFQAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAVAAABUAFQAUQAFAEVAAAAAAAAABUAFARQAEUEFAQVAFQAFQAFBAAAAAAAAFQBUFBAAAAAAAAAUEAAAAAAAAFQAFARUAAAVAAAAAAAAFBAAAABUAAAAAAAABUAAAAAAAAAAAAAAAAAAAAFBAUEAAAAAAAAAABQQAAAAAAAAAAAAAAFBAAAUEFQAAAAAAAAAAAFBAAAAAAAAAAAAAAAABUBUAAAFQAAAVBQQAFQAAAVFQBUUAQABQQVAAAAAAAAAAUEAAAAAAFQAAAAAVAAAFQAAAAAAAUQFEAVFQAFBAAVAAAAVAAAAFBAABUAAAAAABUFABAVFQAVAAUEABQQAUARUAVAFQUEVAAAAAAAAFBAAAAFAEAAABUAAAAAAFBAAAAUEABQQVAVAABQQAFQAFEAFQBUUBAAVFBBUAAAAAAAAAABUAAAAAAAAAAABUUEAAAAAAAAAAAAAAAAAAAAAAFQBUAAAVFQFQABQARQBABUAAAAAAAAAAAFQAAAVFBAAFQBUUBFRQQUBFEAAAAAAAAAAAFQAVAAAAAAAAAAABUAAAUAEAAAAAAAAAAAAAAAAAAAAAAABUUEAAAAAAFQAAAAAFBFRQQAAAAAAAAAAABUAFRQEVAVAABQQAAAAABUAFQAFQAAAAAFBFQAAAFQAABUAAAAAVFQAAAAAAAAAAAVAAAAAAAAAAAAABQEAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAFQAVAAVAAAAAAAAAAAAAAAAAAAAAAABUAUEAVABUAFQAVABUAAAAAAUEAAAAABUAAFBAAAAAAFQAAAVAAVAVAAAAAAAAABUABUAAAAABUAAAVAFEABQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVAAAAAAAAAAAAAAABUAUQABQQAAAAAAAAAAABUUEAAAAAAFQAAAAFQAAAAAAAVBQEAAFARUAAAAAAAVAFEAVAAAAVAAFBAAVFAEUAEUBAABQQAAFBFAEFQFRUAABQQAAAABUUBBQQAAAFQAAAAAAAAUBBQQAAAAAAVAAAURQEAAAAVAAAAAAUEAAVAAVAVBQQAAAAAFQAFQAAAAAVFAEAFAEVFARUABQAAQAAVAAUEFQAVABUAVAAABUAAAUEBRAFQAAUEAAFQBUAAAAABQEABUAAAAABUABUBUAAFBAUEFAQAAAAFBFQABQEAAAAAAUARQEVFBAUEFQAAAAAABUAAAFQAFQAAAAAFBFQAAAAAAAVFBFAEFQAUAQAAAUEAVAAVAAAUEBRAAAAAFRUAABUAFAAQAFQBUABUAUQAAAAAABQQAFBAAAAAAAAFRQEAFEUEVFAQAAAFAEUQFEUEAAAAAAAAABUFAQUEUABAFRUAUARUUBABUAAABUAAAUQABQQVAAAVAAAABQEABUAFRQEVAAAUQAAAAAAAVAFRUAFQFRQEAAVABQAQUEUAQAFQAFEBUVAAUAQAAAAAUAAQAVAAAFAAEAVAFQUEBQEABUUEBQQFBFABBQQAFRUAAAABRFAQAUAEBQBAFQAAUAQAUAQAAVAUEAAABQQAAAAABQAAAQUEAAABUUBAAAAAAAAAABUBUUBBUAVFAQAAABUBUABQBAAAABUAAAAAABUAAAAFARUBUAAABRAAUBAAVFAABAAAAAUEFARUAUQAAAFQAAAAFEAAABQEUQBUAFQAUAQVAFQAABUAAAAAAABQBAAAAFQBRAFQUEAAABUVAAAAAAAAAAABUBUUBFRQQUBBUAAAABRAFQUEVAAAAAAAAAAAAAAFBAUEFAQAAVAVFQFEAVBQQUABAVAAAAAAVFARUBUAAAAVAAAAAAAFRQBFBBUBUFBFAEFABAAAAAAABUUEVAAAAAAAAAAAAAFQAFQBUAAVAAABUAAAAAAAAAAAAAAAAAABUAFEUAQBUAAAAAAAAAAAAAAABRAUQAFQAAAABUAFRQAAAAEVAUQAABRABUAAAAAFQBUFBAAVABUFBAUEFQAFBFRQRUUEVFBFRQQAAAAAAAAAAABUAAAAAAUBAAAAVAAFBBUAFAQAAAAFBBUAFQAFBFRQEVAAAAAAAFQAAAAAAAAAAAAABQQVAAAAAAAAAAUEFAQAAAFABBUAABUAFRQEAAAAAAAABQQAAAAUBBQBFQAAAFBFQAVAAFBFRQQVAAAAUEFAQVAAABUABQRUAF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KgAAAAAAAAKgAAAAoIAAAAACoACoAogAAAAAAAAAKAgKAIACgCCggqAAAqKgAAAAAAAAAAAAAAAAAoAigIACgAgoAIoIoAgAAAAAKIAAAogAqAAAAAAAAAAAAAKgAAAqAAAAAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAAAAAAAAqAAAAACiAKIAAAAAAAqAAAAAAAAAAAACggAKgAAAAAogAAAAAKgAAAAAAAAAAAoAgAqAAAAAACggACooIAAAAAAAAAAAAAAAAAAAAAAAAAAAACggAAAAqACoAAAAAAAqAAAAAAoCAAAoIKgAAAAAqAAAAAAAAoIAAAAAAAAAACgIAAAAAAqAAAAAAAqKgCoAAAAAAAqAAAAAAKgAAKIAAAAAKiggqACgIKgAAAAAAAAAAAAAAAAAKCAACoAACoAAKCCgAigIAAAKIAKiggoCAAAoIAAAAKAIoCCoACgCAAKCAAKigCAAAAAKioAKgAACoAAACoAAAogCoAAoIAAqAKioAAAAAAAAACgIqAAAogACggAAAAAAAKioAqAAAAAAAAAAAAAAAAKCAAAAAAAAKigIAAAAAAAKgAAAKiggAKgACoAAAAAAAAAAAACoKCAAAACgCCggKCAAAAAAAAAAAAAAAAAAAAAoIAAACggAAAAAoCAAAoCACoAAAKIoIAAAAAAAAKgCoAAAAoCAAAAAAAAqAAACgCAAogCoqACoAAAqKAIACoAAAAAqAAKCCgIAAAAAAAAAAACiAKIAogAogKioCoAAAAAAAAACoAqAACggAAAAoCAoIAAAAogAAAAAAAAAAAoCAAAoIqAAAAAAAAKCAAAAAoIAAAAAAAAAAAAACoKCAAAAAAAAAoIAAKgAAAqAAAAAAACoAAAKgAAAAAAAAAAKgoIAAAAAAAAAAqAAAAAAAAAAACiAAAAAAAAAAAAAAAAAAAqAAAAKgAAKgAAAAAKgAAAAAAAKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKgAAAAAAAAAAAAAAAKgAKAgAAAAAAACoAKgCiKCAAAAqAAAAAAAAAAAAAAACoAAAAAAAAAAACoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqAAAAAAAAAAAAAAAAAAAAAAKAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKioAAAAAqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKCCgIKAgAAKCAAKgAAAAAACoAAACooIqAAAAACoAAAqAAAAAAAAAACggAAAAAAAAKCAAAAAAqKAgAAAAKCAAAAAAAoCKgAAAAAAAAAAAACoACgICgiiAoIAKgAAAAAAAAAoAgAqACoAAKCAAAAAAAAAAAAAAAACgIAAAACggqAAAAoIAAKgAAAqAqAAACoAAAAKCCoAAAAAAAKgAAAKCCoAAAKAgoAgoIKAgKCCoAAAAAAAKAgoCCgIAAKgAAAoCCgICgIoAigAgCoAKgAAAAACgIqAKgACoAAACgIKCCoAKgAqAAoIAD//2Q==\"\n }\n ],\n \"output_format\": \"jpeg\",\n \"quality\": \"low\",\n \"size\": \"1024x1024\",\n \"usage\": {\n \"input_tokens\": 229,\n \"input_tokens_details\": {\n \"image_tokens\": 194,\n \"text_tokens\": 35\n },\n \"output_tokens\": 272,\n \"output_tokens_details\": {\n \"image_tokens\": 272,\n \"text_tokens\": 0\n },\n \"total_tokens\": 501\n }\n}" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/openai-images/generates-an-image.json b/packages/ai/test/fixtures/recordings/openai-images/generates-an-image.json new file mode 100644 index 000000000000..41bf97ed4baf --- /dev/null +++ b/packages/ai/test/fixtures/recordings/openai-images/generates-an-image.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:openai-images", + "provider:openai", + "protocol:openai-images" + ], + "name": "openai-images/generates-an-image", + "recordedAt": "2026-07-19T14:41:43.188Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.openai.com/v1/images/generations", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"gpt-image-1-mini\",\"prompt\":\"A simple flat black circle centered on a plain white background.\",\"size\":\"1024x1024\",\"quality\":\"low\",\"output_format\":\"jpeg\",\"output_compression\":10}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json" + }, + "body": "{\n \"created\": 1784472103,\n \"background\": \"opaque\",\n \"data\": [\n {\n \"b64_json\": \"/9j/4AAQSkZJRgABAQAAAQABAAD/63FxSlACEQAAAAEAAHFnanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAcUFqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjg1MzZkMmU1LWI5OTgtNDgwMi1iYTIyLWM5MmU2MWYyMWM4ZAAAACEcanVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNosbfWxozdajRf38VdnN0JzAAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAFFanVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2jTzBVj0c9qhdqI+zcNzNnPAAAA/GNib3KhZ2FjdGlvbnOCpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25ncHJlLTIuMHFkaWdpdGFsU291cmNlVHlwZXhGaHR0cDovL2N2LmlwdGMub3JnL25ld3Njb2Rlcy9kaWdpdGFsc291cmNldHlwZS90cmFpbmVkQWxnb3JpdGhtaWNNZWRpYaJmYWN0aW9ubmMycGEuY29udmVydGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBaAAAVEmp1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2hBaJ4w0oiVWAcVQa2bxYMgAAAUwWNib3KhaG9jc3BWYWxzgnkKdE1JSUgwd29CQUtDQ0I4d3dnZ2ZJQmdrckJnRUZCUWN3QVFFRWdnZTVNSUlIdFRDQjZhSVdCQlFjKzFlaXdCdEx4cmVlaTFWMWVqMVVmbVJEWFJnUE1qQXlOakEzTVRnd09UQXlNelJhTUlHWU1JR1ZNRWt3Q1FZRkt3NERBaG9GQUFRVTM0STNVMTVUMkRPeDRBUTlKRFh4ZGViaENoa0VGRGs5RUVmY2w0K3ZpSHROY3hnZHplWHVwS1VxQWhBTHBmenBEbkNNOGdXQU1lNUVIR1J6Z0FBWUR6SXdNall3TnpFNE1Ea3dNak0wV3FBUkdBOHlNREkyTURjeU5UQTVNREl6TTFxaElqQWdNQjRHQ1NzR0FRVUZCekFCQmdRUkdBOHlNREUyTURjeU1EQTVNREl6TkZxaEl6QWhNQjhHQ1NzR0FRVUZCekFCQWdRU0JCRFFoUFRtcS9zREs4K0VmNVV0QkNBRE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQmdRQkd0NVgzZ0hKaEhZVWRsYktHL2RsS0x0a1BCdkkzRE1CYnRTRmNvU0htWXAzU1N5S2E5MERLekwrdEk0aHd4aVpvY3pMTVRnT0tRT0FaS0loUkthRThNR3g5RXRrSzFBdWZIcWJhbHhocTlWbERpYmRwbmdKbnVBeHpCVTVEbE9qaXJMVFJUZnlnTkNyWlZoTm9TSDRUNzE4R0xrc0Z4NXBWWThaMUZYdVd2Q3phbXRnU0dnaXNLQjFUL0xpU1VieVdEL1hKYWplRDBpKzA0a1JFbXZoajBLcGt1N3pKK3ZkK2ErSU5ic1dBZ01lVzdUanU5VnFTUWUwdVcySEtoZCt3WEF3R3l3dEZXM1dEVTZ6Ukh6dkVSNUtRY0ZPcmU4VFQ3Z1ZUV1dubW4vbEVmRy9LaWhZOC9HbjhJazYxVXNROCtZZEJpK2MzbWs1ckRzVmJCWllJZ2dtVzF3dmFCQlVKTHhzTVlhbFFyd01JcG1JT2Zob3VZNFZzc3VndzdyWnRlb0oxa0xKUXdWQjRPOVhDQTN3ODA4KzI2ZVhISWFYNDl0WnlZd0Jhd1pBNjUzbWpBazBHemNkbGtMTXk3ZjUxVzZMN25ybXh4ZlBSa2lGRVV3T21EUk4xcUVpOUNjYWQ0YUIwczRtYktUR1dKODI4ekczRHR0MFY4WnFOMU15Z2dnVXhNSUlGTFRDQ0JTa3dnZ01Sb0FNQ0FRSUNFR055NnZkY0hFMnhKNlZmZDkyZmRoc3dEUVlKS29aSWh2Y05BUUVMQlFBd1NqRWhNQjhHQTFVRUF3d1lVMU5NTG1OdmJTQkRNbEJCSUVsRFFTQlNNU0F5TURJMU1SZ3dGZ1lEVlFRS0RBOVRVMHdnUTI5eWNHOXlZWFJwYjI0eEN6QUpCZ05WQkFZVEFsVlRNQjRYRFRJMk1ERXdNakl4TVRFMU5Wb1hEVEkzTURFd01qSXhNVEUxTkZvd1RURUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQW9NQ0ZOVGJDQkRiM0p3TVNzd0tRWURWUVFERENKVFUwd3VZMjl0SUVNeVVFRWdTVU5CSUZJeElFOURVMUFnVW1WemNHOXVaR1Z5TUlJQm9qQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FZOEFNSUlCaWdLQ0FZRUF6NEp2aXlOdDJhcVBaRTMyR0Y3LzRLcHhzcXlPSExMY3BhWEllR1FxbjVvMXJGZXJLSGJEMmx3SG5pYXlGTUxoYUVGMFVTQ1JTZUFZRXNnWThNWFYyM1Qwd2RSemZuZ1VQV2ZvSVR0b09pWW5IYVRrNllpbm50dFpZMGUvSnpmcVBnc1BUaUg4c3NMdnNpS0VZZmYzS3VPdDZRa1VJQ1pYWVdUemFvQ3NmbVU2cm5QZFROMm9hUmM3eFhkWTZkU3R5UFVGbnpTU1Q5MFZFcFIra0UySW9BSlBUNVQzMUhZbkdhWVlwdGpUb3lydDYyRGplVllKQVI5SmxLVmdjOHZDYkVIenozcDVsSzBSOVArUmVPZlRzMXR3Mi9LT2dkd0xpc3hINHFKS3ZCSU11cVZTVldWWlBhZUhnL1Y2dzFMOHpuWDA2SG5Fa1ZyMGM1VExkQnIrZllPTm55QWg5VWYrUTF2UERGNHRybnI2WFFMVVdjMnI1NmxMMk5VWmx3d3MwV01ZdmVvNkhOdjRWMThwV3RMTnJtUlFuc1AwZ0NMVGlxMml1NHR4bmVHNEpiUmVVblhsK3B3c0p3aTF3a3hjTzFETnJLMmdHRUtlZUpMZFpEc3RQclphT3BTSGNJMmFNeXZYN2dwUU15ekY0MjZ3a0Fvb2EzRmR4OVo1NE9ZbkFnTUJBQUdqZ1ljd2dZUXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RBV2dCUTVQUkJIM0plUHI0aDdUWE1ZSGMzbDdxU2xLakFQQmdrckJnRUZCUWN3QVFVRUFnVUFNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUZCd01KTUIwR0ExVWREZ1FXQkJRYysxZWl3QnRMeHJlZWkxVjFlajFVZm1SRFhUQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFESGx0V3QvZGh2WHd0c3FmZWtmajY3Y215L3YzaDdtZ1hqbk5hYWhVbHNNYm10Y2kzUnBHU29BZ00yV2lPR0diYm5YVnFDVHFXOGludFJXVkNtVTJyOHlMTUtNNmlSVVh6UXExMU5td3I5SDl2L3NuWWRSbmpSQkQ4dGtEMEY0ZmpHc05oeUhUSFVieHBNWnhyUk5BZTBhaC9HQU5mdFFCNC9IVDFvViszRUp2cHBqL3N1SGZvWWhsajhLZ2N4WGgvQlVKbmJkcUtYc2NhMGRsd1E2TjVubzBhWFNJY0NUby90djNrbGsvZG0xV3JBc09yOC92bEtpR0NuVTdiQXVpaXdiU2lNeCtxZXdocmFJbGJEYWtEeDcwbVpCTEs1cUZVdks5MU1DUHBpOWZMTEV0ZWtITkw4VUs1WkpLNmxDTWQ4Vndza3RucFc5RG1XNitYc3llMWpCOGF0V0ppbFFlRHMzQ29RcVFvZmhidlBmZkxzTElGSmZnMzFFbmRqRnNrcTE1Um5RZ01NRThkbkhBWmdnWlpyL2tVZnlyY3Q1VDE5SlFXWEN2QXhQcTFkMGpWdkgySWtZaTZZTjRCcStPWkptejdQNG5OdHltOXdJcU9COC95RE5na1hqUzQ3eFFkaitxWVBTZ3B5U2FYMHVWbkJwaThtNDlITHQrUDBlNnp2TXlPcTFVazhJcVNPVFpTNkJXOTZUQWNVZDJGZVBRTWNpR2xEak9YcUgrc1RCL0NGTGh2eCt2NUxjVDRaamlnVzlYa05FaEZjeUFlRHVpTis0UWhoVHAzclg1UGpaV21tVm55L0V6TWR4R0U3WWo2MVhYUnR0bSt4ODBlOUFFSzd3UXVpejA4a3l4Rk1XYVRuSE51N3luRVQ4UGNMbkF2bm4ybmxreHhVVXkKNE1JSUhvd29CQUtDQ0I1d3dnZ2VZQmdrckJnRUZCUWN3QVFFRWdnZUpNSUlIaFRDQng2SVdCQlJhVWJmZ2JZY1JnTTFRY3R5QnY2d1JvM2NpOGhnUE1qQXlOakEzTVRnd09UQXlNelZhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkthaUt0REhIckRSY0dvUGQ4Vnp5YU1yMTNGb0JCVDhLa3AxT29ENm1XT1Q4SE5YN0w2VHNIM0Rld0lVSnl0anlNd2RUUzJiaEZGeWJQU2NYakpScnQ2QUFCZ1BNakF5TmpBM01UZ3dPVEF5TXpWYW9CRVlEekl3TWpZd056STFNRGt3TWpNMFdxRWpNQ0V3SHdZSkt3WUJCUVVITUFFQ0JCSUVFRUdNd1dOekozZnJ1d1REellMOXptSXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JBRVZmKzI2RVRmTElUS25mb29MaHlBK3VtR2RaUWl6Y3JQRlBiTmcrc2k2TG5pZHRSS3BGbUJVbXpQY2tYZGpoWnlmeEtDMUFtVE1xSnVSQ3UxcTVFRWNPY2hVeEI0WHNXczJMbFBWQlZDWnpiS25TV3hUZ0NtcGV6TlkxQVUzMzhtOU9xbGZ6M3RsYjJwNmZFZGlJUXpKa0VCSGJRRFloV0RJTWozRHI2VUFTOXFrbDNBb09HcWx1MndtWVVNMWRRM1IyUnRBaGNtY3VQeW95NFRhTFRuRUl1aDBiVVE2QUNzL0NNYlUzQy9RWitPVUx2ZDU0eWpoanI0cEhWMUtndzU4MmtiVWNSTnNna2JkbXQxd0FzcU1sL3BDSmdZa1oxT3lobU9hNWJWT3JxSGY0T2ZXditYdE5aN21WVFY4cWFiNy9jOVVaTVRWdWl1QllCb2NLSUJoOG1ITmUzM0xDbGpmOUI5YUNwS3NBMWxPQnB0OXROOFd3SzFPV1ptWGpzUmcyRWQ3TXRvQUZMQ3BtTkhqT2d0eWYxNU9kbHdrZjZla2ZwV21HaEVEckdhMnBFenVHbEhnS1VWOVBrTTVKc3EvRHdCN1FmcDVYWVU5Yml4THVuVXBwOGZOeEdQSXZrOWVFa0dveUN4M3BMSlA2ZWxrdysyWkpCNS8rYlo3UVI2Q0NCU013Z2dVZk1JSUZHekNDQXdPZ0F3SUJBZ0lRUVNiU3cwWlZ6N09HazRFYUg4MGUvekFOQmdrcWhraUc5dzBCQVFzRkFEQlBNU1l3SkFZRFZRUUREQjFUVTB3dVkyOXRJRU15VUVFZ1VsTkJJRkp2YjNRZ1EwRWdNakF5TlRFWU1CWUdBMVVFQ2d3UFUxTk1JRU52Y25CdmNtRjBhVzl1TVFzd0NRWURWUVFHRXdKVlV6QWVGdzB5TmpBME1UWXhOREUyTWpOYUZ3MHlOekEwTVRZeE5ERTJNakphTUVveEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUtEQWhUVTB3Z1EyOXljREVvTUNZR0ExVUVBd3dmVTFOTUxtTnZiUzFETWxCQkxWSnZiM1F0TWpBeU5TMVNVMEVnTFNCcE1UQ0NBYUl3RFFZSktvWklodmNOQVFFQkJRQURnZ0dQQURDQ0FZb0NnZ0dCQUt2ZytmQXNrM0gzcTI3NVNjYVEyWElJQk5GNzN4RGFrN0RjSnpWOGlkaWlFZ2FIR0RRZXdpcXFjRlFRWkQ5ZTNiSE1adTQyWlY0VXVrN293ZUxjSUNZZnl1aVEyd2xSeEtwMDFkTFJmVTVYOUp2a3BoczBSVStUT21kTGRZSXF0dUZJNHlHcmNaeXQwN2lWS2QzdHRlQUdxc1MyaTZmVGJRc095LzE1VU1iaWNXWG5mK29iZGM0N2cyZVo4MWVPVWNqamoyT0lrMUdxcDZUMmFmcHVEbm1UMTJ0RFY0dm9pVi9YM3N0ZXNvVERwaFpEaWVtdGthaTd5OHhyZlJSYnRTd09obDdvaitqU2VZUk9WMmkvQm03MXd5ZVkxM3AyempnWmQvcDRFNTVueXRSNndwLy9ycisxTUFOWklVZ0NPUXNHUzg3b3I1Sjl3VGpKQ1k5VkE1QTFreVJ3cjUxQ2NEV2FyZUJXaUhXMXRaNDhHRjZtRXdJWm51NXFJMEgzK3pBdFlFRlFHM3FaT1BCUG93RDhvbmR3bmJkNjE5Rnc5cGRwTWNaQTdTcnVFKzZUSjc1SmNGWUpkOUlLMnRFNURDMXFyc3gyNStTUElndEgwOCtab1lCL0NVR3RxRTZVdk8ySFVySFNPVVFjU2t2emZMci9QcmplV3M3TEU1OWlrd0lEQVFBQm8zZ3dkakFmQmdOVkhTTUVHREFXZ0JUOEtrcDFPb0Q2bVdPVDhITlg3TDZUc0gzRGV6QVBCZ2tyQmdFRkJRY3dBUVVFQWdVQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUpNQjBHQTFVZERnUVdCQlJhVWJmZ2JZY1JnTTFRY3R5QnY2d1JvM2NpOGpBT0JnTlZIUThCQWY4RUJBTUNCNEF3RFFZSktvWklodmNOQVFFTEJRQURnZ0lCQUp4dElUWHh2R1c3ZlJOaVhkalNnc2poQW5MVGRCZXd4R2U4anpHdUo3RjNFbC9sWU93RXQ5RVhaNjlSek5jdE9QeGRTckFHeHlkdC9wUTRzeG9mYkdsNVZkcWg4QVlLN3NJTzRmQURRbnpQNzRoTnNSL3pXYmdvQmk3Ymk4OEI1QzB4aGFWSm1mTkxLNlZFbEQ3QjhpOFVRZGIwcGROOU1CaTFtRmI1WUM1NmgxS3JWdGhnQUkxa1gyYnJ0ZmFsQ0ZXbDBHZjRtRjhEZVJad2IwSVFPWmFtN0JuMUZQa3Y1bHpPNTZLMlMrQTZ5eDFiUDBUczVIQUFRNThJd3ZQQ1RsMTNxWTgrRXl1SXp0YmxCQkR4aG5UNFJKdVlpQld6UDFFMnhXR3VqbDc0YUc2UGFacDFEOWxSWnN4U1VMZEFGZUZlSi96QjJJbitmVk9PRllXVjlXT2JUUDRveFYrbDNSTEVLNUhMS0FXVXVQLy9ZTzFtSll2VUlyUW9DeGY2RElFaHV2SEx2T2luU0xmTUF5VTdhM1EvTHV1dks4V2F3UGd3L0lFWlRlbEVISmtlSVkrd1FGdnRIUW91NTBKMXBublhhWUt6ZFgyRFd2Tk94c0JET2tTRW5WMTQ3VktSQ2VlZ21nS1hKUXpEVzh5eHUxTU5nZkowekE1aGFBRmZiUE0vWlVmTkJQTGt5RXJVK256Ym05bjhPbkdES1ltUk8wSW9WNTdEeHFrdS9DUURTNGYrVTRQN0JLS0t6TTFiOVdVZm1BNTZkK1FFMnFrLzNiRzFtb3NQMFQ5K1NLWWdGZXZ2VkVyakhzRHNUUzJwaFptZSsyNVVLZ2F0MEdUTE1ib1VIL0pUVTRqbk8vY2Y4aVRVTkY0bnpXbVBSOXh6aE1KUnZLRDlRajF5AAAAw2p1bWIAAABAanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5oYXNoLmRhdGEAAAAAGGMyc2gW8uYcKrcTGYVO8ppj/ymNAAAAe2Nib3KlamV4Y2x1c2lvbnOBomVzdGFydBRmbGVuZ3RoGXFzZG5hbWVuanVtYmYgbWFuaWZlc3RjYWxnZnNoYTI1NmRoYXNoWCCQ5R3DJZMOLLwKxwdtEyg3fV6rqytFlIYuHhew8uDCymNwYWRJAAAAAAAAAAAAAAADG2p1bWIAAAAnanVtZGMyY2wAEQAQgAAAqgA4m3EDYzJwYS5jbGFpbS52MgAAAALsY2JvcqZqaW5zdGFuY2VJRHgseG1wOmlpZDo4OWEzZDMwOS03Y2I3LTQ2NzUtODBhZC05OTg1ODlmZTYxN2N0Y2xhaW1fZ2VuZXJhdG9yX2luZm+kZG5hbWV4GE9wZW5BSSBNZWRpYSBTZXJ2aWNlIEFQSWRpY29uomN1cmx4JHNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaWNvbmRoYXNoWCCV7INHPNs7+F46V9vBNJcvYGrKCPqi1PqT48LpjzP5tWtzcGVjVmVyc2lvbmUyLjIuMHdvcmcuY29udGVudGF1dGguYzJwYV9yc2YwLjc5LjJpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOjg1MzZkMmU1LWI5OTgtNDgwMi1iYTIyLWM5MmU2MWYyMWM4ZC9jMnBhLnNpZ25hdHVyZXJjcmVhdGVkX2Fzc2VydGlvbnOEomN1cmx4JHNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaWNvbmRoYXNoWCCV7INHPNs7+F46V9vBNJcvYGrKCPqi1PqT48LpjzP5taJjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFgg4ALO9ASmxH4l+1zzIyrWJJg+eWOz/x0GCO8nyVa1MbmiY3VybHgyc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXNkaGFzaFggjUoLTed3BQR3QbrkYQFHTBd7Y0yRBsiDtwcOhKYf1j+iY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFgg8nQjAkeHKVn1O9cA/rfchKxR4+fEeGSpXKb0y5DAmJJoZGM6dGl0bGVqaW1hZ2UuanBlZ2NhbGdmc2hhMjU2AABMu2p1bWIAAAAoanVtZGMyY3MAEQAQgAAAqgA4m3EDYzJwYS5zaWduYXR1cmUAAABMi2Nib3LShFkL6KIBOCQYIYJZBYgwggWEMIIDbKADAgECAhALpfzpDnCM8gWAMe5EHGRzMA0GCSqGSIb3DQEBCwUAMEoxITAfBgNVBAMMGFNTTC5jb20gQzJQQSBJQ0EgUjEgMjAyNTEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMQswCQYDVQQGEwJVUzAeFw0yNjA0MjIxNTUxMDVaFw0yNzA0MjMxNTUxMDRaMEcxCzAJBgNVBAYTAlVTMRkwFwYDVQQKDBBPcGVuQUkgT3BDbywgTExDMR0wGwYDVQQDDBRPcGVuQUkgTWVkaWEgU2VydmljZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ26ahRMTQKX6oGJthbRvl5YThMDcqGZ32kUcXzlISPTgR+iNZxMoxJKPO9uK7/mZK7XhEtpJFpjz+p2CpCyZdt8ATyN4f7BBTN3ryfeOyA6tA9jh5gbzU2cGr+0fzMRRKpUMDdGuAf9mnlEC3NXVaMDYxF8HRLdrFgv5nqu3qWYwxOTTkjwWvjgfKSSS9VsusrCBSrIkr511JRntVcNqmqabTAwLNdVYYxq0lO2AHgdXkVDnk6SowOA8a9b0bLr/osZ7xa61zcJlatkLZnJh5r4HL8u0OdjgJYamnmgN5M2ozXJSMksmGMF6USbNR6suQinU2wdnGhzyAoeOcwGSfMCAwEAAaOCAWcwggFjMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUOT0QR9yXj6+Ie01zGB3N5e6kpSowbwYIKwYBBQUHAQEEYzBhMDkGCCsGAQUFBzAChi1odHRwOi8vY3J0LWMycGEuc3NsLmNvbS9TU0wuY29tLUMyUEEtSS1SMS5jZXIwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLWMycGEuc3NsLmNvbTAXBgNVHSAEEDAOMAwGCisGAQQBg+heAQEwKQYDVR0lBCIwIAYIKwYBBQUHAwQGCCsGAQUFBwMkBgorBgEEAYPoXgIBMB0GA1UdDgQWBBTznRBN1A3LnXL4Rgp2GEelG2hPdDAOBgNVHQ8BAf8EBAMCBsAwGQYJKwYBBAGD6F4DBAwGCisGAQQBg+heAwowMwYJKwYBBAGD6F4EBCYMJDAxOWJjNDAzLTVjZDctNzY2OS1hZmU2LWZkYjE3MTc3ZDQyODANBgkqhkiG9w0BAQsFAAOCAgEAgjiXbGUfoTcAG/H57Rp0utWmWx419WdsGs8rZmlAzfX80nJW38qVKOr4ZhjeQkM9+AV4oGgeKBmJrbXuf/z1MtKMuF/nbIBu61t8l1sw5xMPLkK4A8Zwmv7+IAmsNUbVoAiMSUWAw7qSH1XHBFoVnW/S69h5m5Y6vEQSkDQFFTR99EGlM5cvLmxRUgptPUmwFcvHhlgRB8zc7p4u6cYHObgzXCDaEu4AVzNULnAoSiUpT5J8LtL6HN1nLnroUHg5UbqDOtqIfpAjkJL1Ylia5cKoc4aexdhx6e8YXGR7ke4PNy92mHhWZOdvQtEQfZIBvIUWam9tGWSF2P8ilu2577LQXBoFhH1oXTVbS7HFaUgWeQbmaI6gxGGYOkz4wCR55aZo4O8Z/daQ1i4tQQxkdRBWX5OUtqGcigIaPLbA6G3zxUPndixoF6Ty5suLiJUW6BF7FSpyJIEQPSHGY20vJYCjmVuqKaX9R+rh92vlBPtbUCZtK6GCXTH13WKofDID3EzHpSxyMFCAV5MGguLorrOnCH+vWTSuEHLvKp2ueKziM+xTtcmZ0iioKjehTqv8zH5YmydtReG0KgecBL0FMFehMS4gLsniyBBU26GSFk++JDWY/i8FadwbuE3j3gcvGuhs9cGK4tP+cnfTE6gr1FeXrgwLBofYAAQBvpO2EolZBlMwggZPMIIEN6ADAgECAhQnK2PIzB1NLZuEUXJs9JxeMlGu3jANBgkqhkiG9w0BAQsFADBPMSYwJAYDVQQDDB1TU0wuY29tIEMyUEEgUlNBIFJvb3QgQ0EgMjAyNTEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMQswCQYDVQQGEwJVUzAeFw0yNTEyMjIxODE3MzBaFw0zMDEyMjExODE3MzBaMEoxITAfBgNVBAMMGFNTTC5jb20gQzJQQSBJQ0EgUjEgMjAyNTEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMQswCQYDVQQGEwJVUzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMs6tM24nMsWKVa4eace+Gv2+diPcsOmmBMarQMqQdphHi5HCFK9HnRRvl0E7HqCtsD7+g/oJ6WL6P5i8wxg8QNfSBrKcwF/c5XkGU5uzE56Nd5YEeHXghfc0hZHQ3eb30gZiHmfozmkWU5e4E4LR5fydULXdj22f6Qi3O0Hxm8f1HJGjNZRx7W3evKT+SMn1YACElB1inCgaOnnvIQofJwq6impwC/+yXYRGUZVsC9j6n2e9BWwRKRA3kA2XESKVGtXSP+7EW+k1eqOwh7XfNi8zmm/oB8ATZNFO5kuedLPAZ6fKbtG2RR4YzCWM1GcXpNt+uU0Slh4sylsXXy4dRuVPJl3IXvYtErr2s3HCArWBMmi3q6Xs7ZRltqSm8Oyu1DE/rakTAOVXS2Sak9i5eAq92mgG5wE1bmTANrRu14OCA5PCMYLr/kpTNDJBOzr87JxUHt2J2iR+VCIuHc12M2h4dfTKedKxodUWSTCZ7JtBwk127rOGLhGpeALi9rhp59qzmAW0hASxPfB3hlzeVXgcLTv6szH/nYciU5mCmmILRDtw0aiKuR/jNQSnFdGLVgYYtXKqPp++MLZYWoWyzVdoJOjsmWoL+3vmOf8frpI9KqhcfyTr3/qp04Yc4hp1ULA+YSShU8Qy1SzPTr43SllEXnKQ56WuIdYliHv0ZF7AgMBAAGjggEmMIIBIjASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjApBgNVHSUEIjAgBggrBgEFBQcDBAYIKwYBBQUHAyQGCisGAQQBg+heAgEwHQYDVR0OBBYEFDk9EEfcl4+viHtNcxgdzeXupKUqMBcGA1UdIAQQMA4wDAYKKwYBBAGD6F4BATAfBgNVHSMEGDAWgBT8Kkp1OoD6mWOT8HNX7L6TsH3DezB4BggrBgEFBQcBAQRsMGowJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLWMycGEuc3NsLmNvbTBCBggrBgEFBQcwAoY2aHR0cDovL2NydC1jMnBhLnNzbC5jb20vU1NMLmNvbS1DMlBBLVJvb3QtMjAyNS1SU0EuY2VyMA0GCSqGSIb3DQEBCwUAA4ICAQDONvo+7w+WNi2OrxFVZv97fwMrDQBrVvXLrR69KoGtpabQTaM+FJPkkxEMadXkjKhu5jdUCBbiJZzsZWYoPDM9ohqaorvNZ2RK5750IQShbsOrJsQ7LNpVuf1HTgTgjXibN4PEdDvFR2HvbUFypNtdQ1PJlk7lHeAEOt+o3S7Rr1iX1uf0XwRyIzxrzwu9OQGrBoyTqI+nD3ZZPuEEkvX32ftGYgWrbm7UiEagsy8qal+lTtr41PzM2aM8qXdFGwrB+Zi5OcvMoXHAKoIScdPk9iXiUSFt1hXf5FONb0p9F45ewLoM1Q53eSGBes7t9xwdm462sopCVp2Pa0EqDv5rnIvuGqMoz1/z6dBkHtbuwolLGOuSz/WvwicFTbiRoTclmeb9gNz0vMc3e760AS1nWPAv58Ozi3HlRAN6MLalsnU+WyN+O9NUpjq5x8wOHDMV1Wo1eoF2fy/+V9pp+Aw+P+9UjwGLe0bDY576H+3Efy9whCv2VoL0p8sk12xeJHs6valYOxgRabOcj9JwdP+Lbia7w6tFx1MFlpxHtcZGq171/IiLGWijNQ/lfGqVZbWr67n/urjgm0pHss7sFS+JAn0V7q+cDE3Eyc4B9TI9j/cmNAv+Iot67fleXmdfURRb2yRW+9FZobfeFppmCbbRhi76B31+lXmbRGZ8NoX29aNnc2lnVHN0MqFpdHN0VG9rZW5zgaFjdmFsWRSLMIIUhwYJKoZIhvcNAQcCoIIUeDCCFHQCAQExDzANBglghkgBZQMEAgEFADCBhwYLKoZIhvcNAQkQAQSgeAR2MHQCAQEGCisGAQQBg78wAQEwMTANBglghkgBZQMEAgEFAAQg6VNnu4b+8MLbR+FGm7c3h5b2BHo8VoOsYr/kI/BF/s0CCDFoOAQCAfAVGBYyMDI2MDcxOTE0NDEzOS43NjU2NjRaMAOAAQECCQC8rq9y1pEN+qCCEGYwggT2MIIDXqADAgECAhRh20YoMoqMjUoGt7/+YOMCbD9xtzANBgkqhkiG9w0BAQsFADB7MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xGTAXBgNVBAoMEE9wZW5BSSBPcENvLCBMTEMxDDAKBgNVBAsMA1RTQTEeMBwGA1UEAwwVT3BlbkFJIFRTQSBJc3N1aW5nIENBMB4XDTI2MDQwODE3NDYyNloXDTM3MDcwOTE3NDYyNlowdTELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKDBBPcGVuQUkgT3BDbywgTExDMQwwCgYDVQQLDANUU0ExGDAWBgNVBAMMD09wZW5BSSBUU0EgTGVhZjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAOrKxa2U/fD9J5/HeKdhBMr/DilhKvuhiM1fqKKXnQ6JL4uRyB+8sJaQPQgcVYLBlo42ahWtiWnokNssRDKDqArNd+U16O6oZFv+uOCOnecCIKEowzXdpxA36SL3CU2XmrSEc8AufKlQRyigtPBpH/Cwhyl6Wf4PFBQ1QvnZaVIXSiA38mjMD/Ett4KWIBtLEQ5GElw9pBSGuEtFZjiiTk0nypW6dQzMTodqn3TDIBUFASRfDcR+XK7+HfMfC5XtAJHfPPWGmyoSXg7WDxzQ3cn6DchNw8mEWhhJLOQ4cxpgUrhM7sbzt7bY3WqpziC6XdbEXDUQZPIDIxFTP2KOZQURXXAr1MlrCYFFUugaV+1aRl3aXXacJXkQaINRpJiEdZFymFX/2ONDYrHtaWcnQbzFj/JqByuDSejhLRg0Drs5B69nvbSVHsgCsr1FZ81yAYiUX1VLBiytr+2l9CSvdwM+g4pkUY+RjAw5lkuwPa76BJmhPhiMPfC+FzahLvVjtQIDAQABo3gwdjAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIGwDAWBgNVHSUBAf8EDDAKBggrBgEFBQcDCDAdBgNVHQ4EFgQUpCdUgqKKgHs9xYbNP3DZwoOZUXgwHwYDVR0jBBgwFoAU8hTwsMcXVD0jQ4XcynPQcoA9uKgwDQYJKoZIhvcNAQELBQADggGBACD7JE9BwMC8mLIyEiAQjSCZSDUST8RGVn6nPj+2pSP5Kkg+4FGdH0VAeMG7g06TUMmbJ5Zo303O8vYc0nmr7+rBH9o/9ZhZCOZwzYn07keLqsvs/4x+FOFG2JHmnLge5DRG/2HSePh9ODnjUu0bX2boc8AAcjvkqKuOhhsqozch+Tvfe1xU2EzHaipLf89DdGAFgHOjydF3r4ep/bWxhGpuv4gqzpqhmquinoJIBww3xQJjUZfbUnxvHmfJaQhC1c/1+60bXouQ4uAIeTwuGxODap6l6CVBj4UQAe3kGMGgOo3+nVJQGu+H3uFkzVX5ISDftinvnydu0bo0RqtKIk/nYhV33UUj3WEtwjEpj8S5fnkCBqu0V9TB7M8dBuFce2VJsBnrTaukxydATqa0tY/PfMO0Q6d2014wY+6oF641KHRkq1o141svOj5OCmHWME1Dm/9OLsYhuT46LCAZVzB1ao5kS6LQCdEW16BnJkFtZ/gDcHa4JSZW+ZEmJ8NLSTCCBX4wggNmoAMCAQICFASNBMrGxQvF2hmwvPFOEZWl6rwZMA0GCSqGSIb3DQEBCwUAMHgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEZMBcGA1UECgwQT3BlbkFJIE9wQ28sIExMQzEMMAoGA1UECwwDVFNBMRswGQYDVQQDDBJPcGVuQUkgVFNBIFJvb3QgQ0EwIBcNMjYwNDA4MTc0NjI2WhgPMjEyNjA0MDkxNzQ2MjZaMHsxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEZMBcGA1UECgwQT3BlbkFJIE9wQ28sIExMQzEMMAoGA1UECwwDVFNBMR4wHAYDVQQDDBVPcGVuQUkgVFNBIElzc3VpbmcgQ0EwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCJvNS54sihC75hu948ZGZ+p76cbRDTqTAHJjwE9OBrIDnflTTtqaJlCEjbN4Yyg47MCkqgwPM0bKDAmM0rn6X0y3zZDybefslNou9jW5Hm9lmo0gH6TvnZOCtaDs1gWpiBmKjXU8bjGdYuSKxDVwnplPJH+WxFihVgt/euL16iNU6FOIVpnzSd0E3YQz3NNG38Y5P803C7Suh26GpOZkmg7fz4GL7vmhe3qHes77c4zLnUKjPEdg/WQBF3y/7HXRctQNPeizzAGNZAFEGZy5Q/LH0Aa1L8nspQtwlHRRXhBSNV+rFPb1SYlfR9uvho4SIcetyKkUOLFbYuEkOxYhygvsokji7vv6TRTei4PzHPJj3FAFDq8tkkIGTt1XOeLnB4qt5WPAX51ICi6K2v9vuoo1zLaKtE2zB38sQ0dGtVbcaH+/IyPJ5xDkUT9+xQD/v+1gQxJrvQxE1h4kLbr8Mrbl8rGRvm4rDvjVxEzR/Ac32Poum9bYK8JWWECDBp7RUCAwEAAaN7MHkwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAQYwEwYDVR0lBAwwCgYIKwYBBQUHAwgwHQYDVR0OBBYEFPIU8LDHF1Q9I0OF3Mpz0HKAPbioMB8GA1UdIwQYMBaAFFjCQKA8R3YrqOZuqJGWjpbIt9nkMA0GCSqGSIb3DQEBCwUAA4ICAQCS7Ddc3mzrZNquoREJMHKu3HII9Tu8D3o91sbhL/aDM33oH1dAGE5Mmapr1JnZFIvba9ZM+MrQWTPToaA4XCOIRCT7h+H2kwYnvKHtTF9nXf81qzHS7HsR1EBDN0/ChBucumTID7CiHX6aNvjh0IKzUEOy4FW9gJTIWVJOSnTeXcdFWJu3+jCqO9xHvNUuLLk4GGMseVq33VWtPULfiAPP8Wj+cwDUWrfeJAKXkcDnZ/7cpgrzpUYRs1EcfxLPja9f4xjIuEDGveP51ktx0GRd5WTCS8Bed9E9x1ueFc97/ZSU5wFLCFHa+2T0qxHwNZTx9r5+Kw7dspo9UN1Qw5Zkjm2rDHOfKAY7BHfQl+1vRU+xMy5fRuuDtqlhH7zXgq74gG/C42kVMOZtfDpEkisGmC2v3DTBvqUqSOeHyN44DLUEDDPK44RQcPGyHkvejU/2kRncX4X68ebR18qn7rSf9iF4KYHw43BYdwEQhqQ6S5eDRujawmp2yakSyyEcD0W+ZbGghi6AvFlLTZtDH22014Tg/PDVyGGQDUOOE2qdw/EhPIRdBv471tgjOUULXx1xDfoy/aCAlUS1TwDlw3T94k6Hcob08FEBhx4IvdS1KzVsBhCSpDtrap26/cA7B5x2wgzVGDl/SdrjlBw+UAhq10ziiWGd7+vPxcNAbnB6ODCCBeYwggPOoAMCAQICFBNQO2yJjPAkAzMsj/dPjvt9guwbMA0GCSqGSIb3DQEBCwUAMHgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEZMBcGA1UECgwQT3BlbkFJIE9wQ28sIExMQzEMMAoGA1UECwwDVFNBMRswGQYDVQQDDBJPcGVuQUkgVFNBIFJvb3QgQ0EwIBcNMjYwNDA4MTc0NjI1WhgPMjEyNjA0MDkxNzQ2MjVaMHgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEZMBcGA1UECgwQT3BlbkFJIE9wQ28sIExMQzEMMAoGA1UECwwDVFNBMRswGQYDVQQDDBJPcGVuQUkgVFNBIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQD2kunSFLqtnuEarHWoVhvYqrGzapJflnn1krcULST4v8Aar2C+wZrNeZrcbJr+NprBmBakP+QsnbqlpVBzswrC+RrzxEkveL3S7LznP/Sb0RoP8qBhoiyJJcpRBhEX+SUQnNLGL/SJxEESDv4mHtNtNc3suzVgQKiFUb727pCY8SrYnXoQa2rZLtlj8+UUXCnFhiLBihxozes4nqlQllsjQ/s4/0J8OzqhUS8lyUjcMf9Qcu7wfKF3zRhvgWHzP79u6NIbsaYINuRrMvv+d6hem1zd3TGQTI5l/xaBy0HOKDFTyhhDzkgEbn3WZBazKRDktC46t1RaclZX86hqfR7v5mEf3WXIDkgJSZkydPAKoszdkwBTrCO9goUgse++7R2hdwDuOkYzop7sr+kGMWa0Zm+yiZOgfpUODyHOQfhe8I7pzbnA1TNdeNDQJzHPUDBycx0e2mrCwJPPrdwPZIf2+whOiHb1Pu//kiyZdy4L9gbcmLadCQM6/fQaCcePX1rpfkgNCSu1HoqDGwTyWxU8LBADr5GinUG3UmjRDREaGb+wwNpPYL3uKarth41xXCiMjYijJRRjRdgF/Hthj2xGVDsYXMmwgq+DyLEjPxyfGlvuotdUtSpTrruF26b6l57shIly83pAyRa2hVhHW/EkYTmiTN7Yxqgi8p6/W0wsywIDAQABo2YwZDASBgNVHRMBAf8ECDAGAQH/AgEBMA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUWMJAoDxHdiuo5m6okZaOlsi32eQwHwYDVR0jBBgwFoAUWMJAoDxHdiuo5m6okZaOlsi32eQwDQYJKoZIhvcNAQELBQADggIBAFj4gZEMmPJsYf7Ihh3WW4Qdpta+uKZdDF1Jy7ihKc0tnbhY+fCEiT08+G/Vah+0KqJVkvBngZletVQM+5pGgOMCUQBTwA4DwYhX3u+CVX7j9H0Y6w8m/IP/IajBrN7bG5OrGc3QMHYYOpOdzqpnAw05Gi6AdN9t8H4Tdi/p6lBBizg9bOXgPu4v22RUNl4RvmJFttEhtIA8jBjr2pzWSqnVVGVba9FYfsBJh+vrS1+SDDuU15qG9qFZzkfwOKzDsH8DdGTRwFI7obF7KGvhDmmX+AIYDCgXOyf/rqQQnvdly6D06rm9lM5E4pixCkho7lWpIaVgj/7K1n3Re4YgnA7zqHjQxtpALsiBBQtcYqgqwftW5xh5B44Rr+zl29Nw/kbMY6hk8Tzpr6VkvF6/hQgtHrDO47nTpBHXUrtwi4ad+y6/CvbSVSsjQitDXOyhgmE/z3HtsPeX6eTLwjz8rHe3ttwgwUzpibIPsi9/w36SZJwItYTezJb9ibBLtUN90umthv0Z2S2fvQDuwLRHViN8SBWRDk4PZ4kge2IIwcleVfH2BsZRI1dv74e+FCBGeb6UArHIICidlYqIJlUFZlLvGH/ZS7qoWhTpwiytnwvDXELzofUnZHlxjApanv25+UV5B3Ae4WoDtTeWjlj9Rb9UJYyDAz0P2SYzI9BYd6a4MYIDaDCCA2QCAQEwgZMwezELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKDBBPcGVuQUkgT3BDbywgTExDMQwwCgYDVQQLDANUU0ExHjAcBgNVBAMMFU9wZW5BSSBUU0EgSXNzdWluZyBDQQIUYdtGKDKKjI1KBre//mDjAmw/cbcwDQYJYIZIAWUDBAIBBQCgggElMBoGCSqGSIb3DQEJAzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQgkdSFB4gQEmskegCR4sMzv1uASxHB5DDtpip+v/I64k4wgdUGCyqGSIb3DQEJEAIvMYHFMIHCMIG/MIG8BCC9T7mykEyBNmeIbu9B4W3+BNkiB52/W5JK0KLEYEYiejCBlzB/pH0wezELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKDBBPcGVuQUkgT3BDbywgTExDMQwwCgYDVQQLDANUU0ExHjAcBgNVBAMMFU9wZW5BSSBUU0EgSXNzdWluZyBDQQIUYdtGKDKKjI1KBre//mDjAmw/cbcwDQYJKoZIhvcNAQELBQAEggGAt+o7bV3p6L20GAAstzQGc3StU+OmnF8RpgmXdsSv7W4p5boHNuKC7i1lfqBdNEUWkUbAOsUYLdcsyOGZ3vWAVO8Wtye2jwcCZPuufQ0zYtzTvLs0Dn8z4k4FdGI3TEJQnQN+9F0En2m2xL9Wi1EX1d0Y9SDHUR1rQMQ4s936S3AhUEwo/bpqykjkxpOFh3yNswCv2wI7ezBUuC1KzVPlozBjHZSAY2CAvlG+IxAjjnoGu5Lobk5ebdIzWEJjO3I/ySglc0XRXm3F5qATTvlWrw/NnaSombSMiDRHzyE5jl+PyRCWAx7L9TLhYsi6w7zSPzwZsdWjoYdGG/5PtoQyLygAvbRE8NkunXqnVsqBxw/SVHeoUNcJdIo12yUO3c2GdRpVDn6/NyLrjTVuPHKk/H1JrlK42Br0rinX5rgJ4hGNcIq+IuFfvcrwgVcSyOK75TyRMRWjRaRJP+nKryZqrrnIo+OxnCqZjjGKGc0ZHY40DgEV/LYonoFXmQeQM2nKZXJWYWxzoWhvY3NwVmFsc4FZB9cwggfTCgEAoIIHzDCCB8gGCSsGAQUFBzABAQSCB7kwgge1MIHpohYEFBz7V6LAG0vGt56LVXV6PVR+ZENdGA8yMDI2MDcxODA5MDIzNFowgZgwgZUwSTAJBgUrDgMCGgUABBTfgjdTXlPYM7HgBD0kNfF15uEKGQQUOT0QR9yXj6+Ie01zGB3N5e6kpSoCEAul/OkOcIzyBYAx7kQcZHOAABgPMjAyNjA3MTgwOTAyMzRaoBEYDzIwMjYwNzI1MDkwMjMzWqEiMCAwHgYJKwYBBQUHMAEGBBEYDzIwMTYwNzIwMDkwMjM0WqEjMCEwHwYJKwYBBQUHMAECBBIEENCE9Oar+wMrz4R/lS0EIAMwDQYJKoZIhvcNAQELBQADggGBAEa3lfeAcmEdhR2Vsob92Uou2Q8G8jcMwFu1IVyhIeZindJLIpr3QMrMv60jiHDGJmhzMsxOA4pA4BkoiFEpoTwwbH0S2QrUC58eptqXGGr1WUOJt2meAme4DHMFTkOU6OKstNFN/KA0KtlWE2hIfhPvXwYuSwXHmlVjxnUVe5a8LNqa2BIaCKwoHVP8uJJRvJYP9clqN4PSL7TiRESa+GPQqmS7vMn6935r4g1uxYCAx5btOO71WpJB7S5bYcqF37BcDAbLC0VbdYNTrNEfO8RHkpBwU6t7xNPuBVNZaeaf+UR8b8qKFjz8afwiTrVSxDz5h0GL5zeaTmsOxVsFlgiCCZbXC9oEFQkvGwxhqVCvAwimYg5+Gi5jhWyy6DDutm16gnWQslDBUHg71cIDfDzTz7bp5cchpfj21nJjAFrBkDrneaMCTQbNx2WQszLt/nVbovueubHF89GSIURTA6YNE3WoSL0Jxp3hoHSziZspMZYnzbzMbcO23RXxmo3UzKCCBTEwggUtMIIFKTCCAxGgAwIBAgIQY3Lq91wcTbEnpV933Z92GzANBgkqhkiG9w0BAQsFADBKMSEwHwYDVQQDDBhTU0wuY29tIEMyUEEgSUNBIFIxIDIwMjUxGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjELMAkGA1UEBhMCVVMwHhcNMjYwMTAyMjExMTU1WhcNMjcwMTAyMjExMTU0WjBNMQswCQYDVQQGEwJVUzERMA8GA1UECgwIU1NsIENvcnAxKzApBgNVBAMMIlNTTC5jb20gQzJQQSBJQ0EgUjEgT0NTUCBSZXNwb25kZXIwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDPgm+LI23Zqo9kTfYYXv/gqnGyrI4cstylpch4ZCqfmjWsV6sodsPaXAeeJrIUwuFoQXRRIJFJ4BgSyBjwxdXbdPTB1HN+eBQ9Z+ghO2g6JicdpOTpiKee21ljR78nN+o+Cw9OIfyywu+yIoRh9/cq463pCRQgJldhZPNqgKx+ZTquc91M3ahpFzvFd1jp1K3I9QWfNJJP3RUSlH6QTYigAk9PlPfUdicZphim2NOjKu3rYON5VgkBH0mUpWBzy8JsQfPPenmUrRH0/5F459OzW3Db8o6B3AuKzEfiokq8Egy6pVJVZVk9p4eD9XrDUvzOdfToecSRWvRzlMt0Gv59g42fICH1R/5DW88MXi2uevpdAtRZzavnqUvY1RmXDCzRYxi96joc2/hXXyla0s2uZFCew/SAItOKraK7i3Gd4bgltF5SdeX6nCwnCLXCTFw7UM2sraAYQp54kt1kOy0+tlo6lIdwjZozK9fuClAzLMXjbrCQCihrcV3H1nng5icCAwEAAaOBhzCBhDAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFDk9EEfcl4+viHtNcxgdzeXupKUqMA8GCSsGAQUFBzABBQQCBQAwEwYDVR0lBAwwCgYIKwYBBQUHAwkwHQYDVR0OBBYEFBz7V6LAG0vGt56LVXV6PVR+ZENdMA4GA1UdDwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAgEAMeW1a392G9fC2yp96R+PrtybL+/eHuaBeOc1pqFSWwxua1yLdGkZKgCAzZaI4YZtuddWoJOpbyKe1FZUKZTavzIswozqJFRfNCrXU2bCv0f2/+ydh1GeNEEPy2QPQXh+Maw2HIdMdRvGkxnGtE0B7RqH8YA1+1AHj8dPWhX7cQm+mmP+y4d+hiGWPwqBzFeH8FQmdt2opexxrR2XBDo3mejRpdIhwJOj+2/eSWT92bVasCw6vz++UqIYKdTtsC6KLBtKIzH6p7CGtoiVsNqQPHvSZkEsrmoVS8r3UwI+mL18ssS16Qc0vxQrlkkrqUIx3xXCyS2elb0OZbr5ezJ7WMHxq1YmKVB4OzcKhCpCh+Fu8998uwsgUl+DfUSd2MWySrXlGdCAwwTx2ccBmCBlmv+RR/Kty3lPX0lBZcK8DE+rV3SNW8fYiRiLpg3gGr45kmbPs/ic23Kb3Aio4Hz/IM2CReNLjvFB2P6pg9KCnJJpfS5WcGmLybj0cu34/R7rO8zI6rVSTwipI5NlLoFb3pMBxR3YV49AxyIaUOM5eof6xMH8IUuG/H6/ktxPhmOKBb1eQ0SEVzIB4O6I37hCGFOnetfk+NlaaZWfL8TMx3EYTtiPrVddG22b7HzR70AQrvBC6LPTyTLEUxZpOcc27vKcRPw9wucC+efaeWTHFRRjcGFkWSL4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9lkBAJd4wfo596pD29f7AN2f7lXdB5MF+9K8w4gHdXnauUhLLSQPvnscsi7jDkAERniWQeAOX6EaJyDtVFYLx4u6jRSl30+8OZ2xmdnLou37NafCbGQ8JTJPNp/dKxGc6tMmqjt+D19xBFPWaYfxVT2WlRZho0VDJVcpIAzNQrZrb7uY+qyEfpyGaKmBmSc8a7EdpcLEsegJxJfnbi/QzFp2rbThqAYrxFpehEiHNBMAq1CZeMfz9HLJ9HV1myaHjUaacMCNExG+/NFXUq8iIn3lHF4GHPWKYTb7goBH4p/VumUCzOOEJlBxZynKEz1iMLoKd2BfHpvea8M1uW/dAYS1umD/2wBDAFA3PEY8MlBGQUZaVVBfeMiCeG5uePWvuZHI////////////////////////////////////////////////////2wBDAVVaWnhpeOuCguv/////////////////////////////////////////////////////////////////////////wAARCAQABAADASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAMEBQEC/8QAMRABAAIBAgQEAwgDAQEAAAAAAAECAwQREiExUSIyQWETcYEjNEJDUpGhsQUUcsEk/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/ALoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/9k=\"\n }\n ],\n \"output_format\": \"jpeg\",\n \"quality\": \"low\",\n \"size\": \"1024x1024\",\n \"usage\": {\n \"input_tokens\": 18,\n \"input_tokens_details\": {\n \"image_tokens\": 0,\n \"text_tokens\": 18\n },\n \"output_tokens\": 272,\n \"output_tokens_details\": {\n \"image_tokens\": 272,\n \"text_tokens\": 0\n },\n \"total_tokens\": 290\n }\n}" + } + } + ] +} diff --git a/packages/llm/test/fixtures/recordings/openai-responses-cache/reports-cached-tokens-on-identical-second-call.json b/packages/ai/test/fixtures/recordings/openai-responses-cache/reports-cached-tokens-on-identical-second-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-responses-cache/reports-cached-tokens-on-identical-second-call.json rename to packages/ai/test/fixtures/recordings/openai-responses-cache/reports-cached-tokens-on-identical-second-call.json diff --git a/packages/ai/test/fixtures/recordings/openai-responses-images/generates-and-edits-an-image-with-the-hosted-tool.json b/packages/ai/test/fixtures/recordings/openai-responses-images/generates-and-edits-an-image-with-the-hosted-tool.json new file mode 100644 index 000000000000..b1c24341ae02 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/openai-responses-images/generates-and-edits-an-image-with-the-hosted-tool.json @@ -0,0 +1,50 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:openai-responses-images", + "provider:openai", + "protocol:openai-responses" + ], + "name": "openai-responses-images/generates-and-edits-an-image-with-the-hosted-tool", + "recordedAt": "2026-07-19T14:57:16.284Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.openai.com/v1/responses", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"gpt-5-mini\",\"input\":[{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Generate a simple flat black triangle centered on a plain white background.\"}]}],\"tools\":[{\"type\":\"image_generation\",\"action\":\"auto\",\"output_compression\":10,\"output_format\":\"jpeg\",\"partial_images\":0,\"quality\":\"low\",\"size\":\"1024x1024\"}],\"tool_choice\":{\"type\":\"image_generation\"},\"store\":false,\"include\":[\"reasoning.encrypted_content\"],\"reasoning\":{\"effort\":\"medium\",\"summary\":\"auto\"},\"stream\":true}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_028d7fb658c136b3016a5ce59cd0e8819f804427824478bc8c\",\"object\":\"response\",\"created_at\":1784472988,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":null,\"max_tool_calls\":null,\"model\":\"gpt-5-mini-2025-08-07\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":\"current_turn\",\"effort\":\"medium\",\"mode\":\"standard\",\"summary\":\"detailed\"},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":false,\"temperature\":1.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":{\"type\":\"image_generation\"},\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"image_generation\",\"background\":\"auto\",\"model\":\"gpt-image-2\",\"moderation\":\"auto\",\"n\":1,\"output_compression\":10,\"output_format\":\"jpeg\",\"quality\":\"low\",\"size\":\"1024x1024\"}],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}\n\nevent: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_028d7fb658c136b3016a5ce59cd0e8819f804427824478bc8c\",\"object\":\"response\",\"created_at\":1784472988,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":null,\"max_tool_calls\":null,\"model\":\"gpt-5-mini-2025-08-07\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":\"current_turn\",\"effort\":\"medium\",\"mode\":\"standard\",\"summary\":\"detailed\"},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":false,\"temperature\":1.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":{\"type\":\"image_generation\"},\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"image_generation\",\"background\":\"auto\",\"model\":\"gpt-image-2\",\"moderation\":\"auto\",\"n\":1,\"output_compression\":10,\"output_format\":\"jpeg\",\"quality\":\"low\",\"size\":\"1024x1024\"}],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"rs_028d7fb658c136b3016a5ce59d154c819f85755db041801f6a\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqXOWdHS2Caj6M3NNE0u_5cAteF-ddZxQ_bD8o8hg48tu51gsxk9_NWz6Vjzcj7cgCJb_qHopoZdYXt8mAlpreQsxAUKu9WLxCfgsmLuDoZDE38gl6HA7xz-YTW8VOWunsj3PF1MJZFzYIjJuZtPiVU8JtP_vabifALFe5cQlqLI3zkNHEbRdDy4hncruHJoAstZcpaVUSkqI_mivfCFYvW6qfqLquHZJx13KQEh-mpALPsJGKfg7r2t0U3z6BTxeCcuYwlvUQIHYBbABysMv_OCc-xXcsRTalMh41EeorMOIoz-CQh_QCQAxbfo3nMIdCJH4KoR8bjd4n8wu_Rz0wu_t5K6fBrO4ksr8pEY1EXBG_qc_XfM4OWQjQ2y6U3q41pmGZ4Ywh7FKfz0cp2J08BbwB1eBb7WvmZWaevUMNV5jtoU61tswFJdUoLDxJ2u_n_BTv9YLhXa3xlU0ZnsoVzfwuC5l8JrdpCMERfFdpWVplLxftZwFj5vgGtYH0buosjyEWeoN8COn-zUs7f7EDHOg_vICo3b4vF8lox2REJnC9Kr0OJI4FqyTOs_VDLCT3hUWG3oHseCmLKJbCD5JYkmmp9TUu64bpzJR1isMbrCBEpwKU3px-pc33HeayLsdC6kMCtN0eJ6G7FwElV6tdmxGyAX2zGzgWsMhvgCwuLrDLDkP-2K2z9jKFhXO5iXZqsERY08RGX0_utEFJOXD4tFDdrwlOMNyVzRtTaGGuhajhFqMYe_urqDG1YljAlRleDy5ALNZHGXu_Q78c3PMfBkAxGtVKqX5gTCd2JpuYTiEsrMktqj8Kqri9asQ65Bye6IOtmKjXOXVioDV7USsMDJ72f-nIpvWsdgMkhR1WG786qBwShudSk0KRyIMMMGrNVuMBoIhY1_cyLd2zLgClH5U_aWR5qngSOX8xquak4KBQFp8=\",\"summary\":[]},\"output_index\":0,\"sequence_number\":2}\n\nevent: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"rs_028d7fb658c136b3016a5ce59d154c819f85755db041801f6a\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqXOWpnAP0UBYvlSBekoHJCZH4q8xzRle879t05tnZpveHS-lRgcpzHWBcNwm8Qs8hBSGdQZgdOM-EKf0EJvBo27ynkLRL18hL29zaj_TqlNVZW3P9a0cij_UGUhhh7JFDXUJcxn2CNJs6hfZIs5vjS3zd0QvDSW-iCRPqT_NaT-VJIyXwZaZI8txwYY-buZg83BwkZidY1AGGv12xkyKCn7vhrTf_JM3tDgiWIIOd5bhaYLDlId3n_IKixf5mo8CKN0oyZyPz01XK82EwKVg8rkpdwW7XOiirQ7Ro0-oT_0TJCRa2uYxAyjzCoYWNXPsouRiyter3YdetjJkUR0-yNwmsJVv9ofkaeL5x5R7OcrA_YMsuqyXyyPIl1vpDqy7iA_U_4gwDnDJi5mOg3Y5fE4a3MwewwQgVcZx427UhTLltyaPCWZIcNVhey57hJxCt3RjWZGSWV-GMV2GC2dD5dHlXQiiCJ_Mkr3xyPXdjTyoe94KQlsfmO267RN3NyW74L2TqPEP_HnR0TyNtg-nClTYQPuhvx34nzqZQresJwksxHQU_W9AoBD2DTQMVL9DAoayVy5aB0fyyzwrT82xLkMP6XredNROM-qJSuBWRVVsG4f_mFriYv0yFgjwrtohLlGpPKEbjIsEKBFCyfQ2ERIVYYv8I80EaVTwPuKljMJFcYDa065ZNh8k-rFhg2Q_iQB-yLPH7kx4de3qvYrxZ7DTY2U5wVvZdPmW7sYzqN-8RnktWmUx-fSoGxVbClW6c7Gn_GkE9FmZ8qYcCRizpzSWfec41lS2dD-9g0Biow04K65k6R9Z1-TU-JMNgEn6t_1W5sOL8izzdXOTVZXxe-zlFbm_PNWpE4rMRuL8usVOB-cD4NVACqBvYQOrZ9Cp7scYfDX9KockxtPOpy6gKsn1VJdNWnwNgH_aKKrSO8WFePD3Mcw167HcPQpZ_wnJouWaPrFWKC_k0Iz6CFHvuu_WoTiREItFp10FibQEe-kQJ1PANwxWhjwBKsW7zJDOhhEtWrYpPUZq4eA6OyZgAzVQ6KMvgP38ZR0NxFoi4qwbcPoNY_Fp3AvcmTKLdQiOQ54DSM24LDQbT2LusMaQjr6pKuOwrj5glaGjK4JmBGu_6J05TIdZ6V7WLn39R3PU8tVI3RdEpam3Go6wBjU7yu4cp5O4eWc3XzKzh8bI5f1i_-toPgtJxodv6xGFMErYxxXgD5nWLo_0ELXd4SlcVKGA6o9vpctrkE9fNdWL6CDpXn6mh444E5gJMiPWGG5ZsdtolN1EVgesNwQBwFu4rkWQ5OwzT2liqOW4hEQTHI6W-L2jmKxejveBX0ai2FCmHBrb8Zboi17-CdK8yr3A6oUqUh6dcu5s_xiMAT-TyhOlCdWKJav-wjutKx4IJdACOSKZV6ePToTg43Hsm5PPKWgyg-hdb0zE6uCKKcjYT31zRqYCqhhrWbkAh4Dj7vZgNyZ0RhLfDcVZ5Oa-vAstRTv0MHzv9wOSitIQDMQdw8AJNQwgJfzc_TVtGNOi0-cR7tJjrcZZrMrLDXscgQc3MbQXoKtiiXNuR6nxX53rFFsEVC-J8T2T0pLFqsI9neSh69DGhdXS2PvggM1GD1ibNPbwcY_2uKPlImYoy8eyq1uXZ1GmgIfuFSV4wwct59BfV2l_WQ6nNOwmjCsY_KOO3yOkmdpQHOOwNbiHWpQ0CQ-KVnzpxqz9PaHpBhJwgcnOrAs9LXnWCDOETgnR8tc8MYQEAxgWLvEC1wpqGrOSZSCWoaZTUtQ52IrNJNB3qazGeIgOJSi_C42U2mnPhC34Bxcdutp0lYf_NVmiPzPil7L-qBSoyvAcrhJ6RM_39z77lXgNr7Zrl6wNbYej3qo6t8MoHyCxtnMHO8L_Dk2ug0EGl65TK6Hp3lqPTPY57XaXfxVkjUZczaKpxP4HeFAbRIVYh5Ygdi1beUUMqtgyG8_UF23ccgTLcwN4NminghUqdj0RJtZNxP8RIr-3F4qpWCAmTqthfZ1ncdaRHv90j0EnxoGdoYBY9jgkqFE8BOLrhD41ykwBSSiqx9JQTeMwZ5yLVYJSxshUhwP1OBeu97vaS6gfDqpG2anRXpf9dcqH5P-RCrPB1E-BphEQw3BFDeNC57Bwb4Sbt29wZTu87yqQO6WIrUOLK2psyG6lllPrlOz0MYko-rJMnDIGiQ92S4ddeh5Kqklia1q9SHIP36mxqN86gBczqJKmvutiIwBnZb8yLSNy04ppCb9fhqCFaIMazEXChkxwkQv2730Ffx4wxMRqJJbSFvC_4yg3sMgNPgBwbHGIpQTRh4R_4fKGaFnT1dNRrrPUraRcQZQSIpV81G3mxtyRWxxKyCZ-TWwOvE7SmTZu84UFPEUFA5MpLsM4SPw_loZTCTNs-4zkNbKD3dEYJjDafU3xS0eEZoBmHaGsG6UuRNjq_Es2qqOb7HPvHQU7OsDuvNju7t-RfBDFydfkTrBODvDLkKr8Y9erd81wzq8vwHswO-qT90coHnacAn7-AI6Dx-rR0wkSwJl9HIQ7pC5-zDHyDAa-Rt7gXZJxyEyoRdB6Xr-9xIrLvyWHjhtmmqY7kw9OpObgjw031cKnmcYtvykXT9dG4vb_ZJosy0froYxZMMlnmV3TT27Vhm85apQ53wCM2D8lp8xc4yUlkSBF-Mob28bm_z8gaymSIeMkMk46TROw86nKqJG_MwjE7394LbTQ4AQL63UdabVbJ-vE7w_D7ke3RQ93xFC2GYybqTQqA-oL4TGW4GTANjHNBYGFPrZLQgB57QWNsK0zOJ2w6X8zcF4pl4fkmOlRFUhjFMmOhCRRbuW3U-2h8012xhpYhTTGpWR0ODa891aN7NlxAC8Y6nMsYhrht0mJltMcep5D8lnXEytkWlIOnOVCDsj5jjYIgj5ZfLcmFcuoYFBr5XOGkt1PyCUOSPL8_WQOkousHn3sdONSyUmqpGar1YGsMAiBt-f4ZldsxN9pTslTwP_duhMPzGfRLXF4frnGBzaZHvxnV4eBCtEprRZAdM50bbD6QOhsudTVfZyv6I1c9XJgnxSVvfak4-niMex8lZ22pmnvi5-METukxdt0T9ZgI9CdPCs5aU3GpAZ9T1WMqRYox4MsuRAlIUGlyRDWa94fvtpoOi_6KI0r6-sM859y7xIaILPRdY0P2wnqVxtVOXhpi10mEU3BFz9eaBC1GifG7IzHH4rIqtohpK-Xi3J1U2iNEdO5JHqVkubzth-3iv0InsMYYrM3W0jHn9sbMYAGOvyFZLBIFStpCmLbIgBLT16G0nCEZWwaZZzv8o_o7yghO4I8f-G5G1u-55Lfa2P5073ILkQXyl-pYp8n3P2lrOHb3Ujq3KOZ78YNgKwUtg7JiVRs3Xz6AurppkNlauEDOOmIjY8OtcbPxFXoDrC1qXv5DZSD1RnTJSScF4YGXeFW1shMK6l6BI3Mi1_gQ4isftA_Ow-WDCZ1grgazDcpKOYzbKI8UBJwOLkueNx3ieQ9HTaVg3rQ2eLN_znh_StlW0GH0vZQCi2fBONUXD1OueNnKpkGy-iz5iXL7XOAnkLbLHqujcNhkL1pGJGQOHYaahnXb8gXMy6I7tIuGiIfe7GV8X3u0hac2s6ViKt4gyh1njIGdjYCyvm1bXu7pNNGUkdm2D-CsYEyjRwkeGYC4lVwbRqMM8IWB-baNLioS28dkviSTIX96a5FVrhzUGPe0TdLgCP77SSky09BXweWwXpYDeh0me1EAbI9ePGouKLvheoltIEF9C5m5XR-CKcaTPz0K1UBxWQLy8IWtU5D2F_Jhirc0nPsALWXvUxAZRMP1Jt4fGomIo8sX97PaDNXPalG2tc2lBxDHbI2g_AwzZGJj-97iMxTWuav3EJlqQThL1QAQ65kicLUeeZGvjT8vNK3AIKfp5tU6XimhtyZ2ezdZdywL68AbqVT6h6b3RTZufY7L82c96RRzx4csMp6WdGFHGtBvE7ZrCUQbxfE1MNfax2HlEViX4iIN1LA6rUisiG4ZGimb_YjkbtWW1MKVFbPUHAPVqOb4-w2vG5FVIhtdvhdk1KY2rFN6nSuR0rHKu3R5DZpAsplAVkGwi7EmFmPC7TbpS7fJDODubr69KD64xptKC9ebP1DbYZyRWMTwHnD7n2BVQT4vJtu4IaMwjlGduJyV-nV6r5k0WCwk5jwuV_S9Z5TZzPuJMFh7FhTzDEQzFPCzyjRfIYJIFOVjdWZKe2BPqi0r671xO0XoBCl-EHxqZ9QAU_ufz4PmhiL5WVcDG4ta0iNXzkQMcNIjfx0M79_f_DtFgfUPxaAVcOSFIupx2nN8nFqWqzmR1NbB6Swlssw62iYYenC9aCBGzdwxmun-EukSp83B_Mt9sJKk5ejeslc8iEFUTclxWcJkNjdbx8qvqTWzG2fedqcTsWdbk3Ezlr6uH-V9Wg4C8poFiRyztGfRxdwOFki_a3RM1M4DihrJMyca-FRrvudnp-AiJsgaxGRObHwnADvSCRh4cUrjOBYNMHaGiznk4MpEUEu3S2L5q1Slnc5cFs8Ww99H2Br-AN-wI5wYX6EmP-L5olxFUeMFNqELrk3FQJ8xEi_3yjYXT4mO2F_AoHzOVE3cdITR6LKmPI81_z7T2sOxszEnOn-hQNeC-BpwMVJ9bKgM1W3BbQGFBBB_izGAq0WGgajr-ryJ2tSsC5ijOl5usxis-oFwTmE7QVdW17JmUGZ9wqgFhkQv_O84so5d8_cRHzPuPIWRRygmXrS2PKNm1k5n67WC1oNa6mq6eO8IXAqeAyIugBIe0fVySnB-4v8f7Ca9ASIrY1Zt0jnH0ls9FLN3fIWfXaGTjZHp1uE2129YCyyFkLuRHRlrbphyOFmQps-oVikkB3pwbV3ZtLYNAEjsRVpUMQ1LuKt3NFIswavOq-Gnv1tYaOH325YxAJ_TUJBKKXmwHyXmecymZgDDuv7K5xGkg1Hpiz0Hubl3rbgJj-5Ms5eC_636-2Rj_FIBc_Vs2phBsSvYqgIYprENgd7Mx-CRI9eNE4R7qGKoAwyx2ccojKP5tmqnaO3Dg3T297hnUrHy4o49f9M3NOTOjGLhQTatAPXdbAgeoHZZEud3ZfYMtpAnqH1RLtqt6Lr8K7YbcnL9an0HM7f-Cv6C1Jgl6IU-axkPyLLTG7Az0AYvRDDvh4RadwKHiAVAoOqRODbEwfwrnsBoCbBRr1ahCE21lFnaMPKUectY45Fq6BPdTIgM3_kznWPVlu6HCuj72sQyRKykYHtSuekx_M4gG2pnbprvt6nLKewuOYCbMQAk7B8s8yCwT6TqT2o9gGxSHoH1NgwAWXVEVjZ14upn1wHWq7sR729Ph7jvHwIiRsALVpAo5En6vd6uvcA8MA8G8-Q9yC3G7wuGw51IhknZphdWRLZ99veJCqACplM8MW3trtMI1isYnuGG5VU9LIgddQCLHuSqJCfWf7uEudvy43nZ-u9LKHPqIYCu_V-WzPTbqFLCb2QeFXetvG4SZahpiwRW6gnP8ZDLXLOPuqpPGPTgf14kHRbHnXmYTA3-IitF4ZTFXUrg-mCJTOawfsnIt7SdCo57HA-dznt5M3ZvsRIvHrRLjMyb_NbvUPTdu7-YD4PbZ_tFduovizKb4XdZIq_OnNtKku2jy0DYb52Gz-5T9OEm2we2Dqd-WvGxy55Ezke75C8MjLgEeJL3eqQeqdGiiXpXtP3LWl99iKbKpnaxTHipFUAtxyf6cZ68gReZqIPIwj-hnqmSiwJj-9fpAMtzhNJ-893myYRH-KgfMnObHsFH9k3vB-D5CalDkLcK_SlS1g9GzeAKBPAwLpQPIQRHQTUxIQBsGnkiALF4d97AJTCETJsBQ4L2ajxnUs1uZe7l4Y_06vL-nfwH5q_e1t08aUwGvbbrPBzB_eOFbc_20SJwNmJjAPF_gl1ar_o0fbTZUWBfXmUqbWwsiiVu2EQLjfuOE8Y2-Scfl3Hyq3HUejJki6HU2j1hQNhqi8opi-lTksY3pvsa53LGQ8JFBuceRdRafgEIKa57kKIDvvBCRv87qz96AoS3hElBx9U_zEAgLKXFoMh1RAx_Xl1irUqLuR_7m-1xsj_ZVaHZm_3NZHATchHIleNlzMpjVNTl4k9rxn3VGMKQwb8BqIN-zLnwasI9eWLSUMZQJyQINk90ai96rayuG1OUQ4kis_XhiJMEQaAu8FJ0kpSk8tOlV0wmBI3LkV1WtfRPOdImKB6wo28uTByjU36yVivVGaa7LL6fVzJcelFRad6CEXLFKKLcAe3YQjN6-ANW_kmM7ogFN6flMbKJRpqWsWCOClECB60YK-oJtoHsYQBI8dqKNvpC9droooGQi3HyeXIXVk2v7qt3Oh3GiacQSir6UKrI4MCGmCd-KlHFVoNPmrK_LSwwK3NRDpxPtQa9D-rV4DNK4iTfOQGAXJM7l0DDMGxTS0ZtLA12hDmym2WIkvP6y_ldy4EUXIYko8c6aswFHKN-ww_Z9RJ4UZw73GDHMFELoxVN_OIgPPFI6QxpkCnommAkCUFTksjKcyWzFVEj6NhfzfzntfkGT3-e5TU-i_jbq30DKes8btyA3NcyRTOAWNY7GwbpQL78dg_iLJwjOndZA-kdwAk2zj0MdszoIVNWmMce0AtUqumKDn6qNNUnaTnpc3Nac7jO50CDTPkIVtFiTnNNABtHeoV4hD6ztJhkta1IB4tdAeqCm6ei20lhxqhbzYj_j3VXyzbMmbJ-dIBcdegvQDVPMGJxCJ0SwQp2QxKtWT3n3y2mZiXYxHsnIaXcX5TsuNStBTAXfTVrc-Ru4K77uoDMY7L1APh86Wi_DM6FjOktfH-8j7fFfQOygrpifx6asvnWn16Si29HxLiDD4bSs4gcx_l4E--aM0mRNPqgQrMM3mqyRpaR_yUJxvyy6nZQwg-dmpMDB2o2gLYpSCxQatzTiI80T3l8Pc6E-br3_dPXeRFdDabps-muLlfNMaxTqFmburJW6qxYaks4cm_wVxYOeyeQewLc_t3hE9d5JhKOVUSeF79kmFMHSV7dqjz7PB_Tut5s8paNNtjvKa0LHtoQ38gTbe2m6xjNKrBPZqM_0PoM3Er7pFbuDFC8GknJ5XiD9rmtfN95uJOiCbueEwgXKf2nDnbAMjfQk__fmEFD7SqaT7b5-nxPcXUH9aqozjN0GEafvGQnLOifqaedlk5ICDfrA71dGZJH_W2GCFBJe1Cb_wsDz61OAyltrtWBadyHn3LtS-pmlpYIjLOOB-y7p6bIsG1zIoA-p_lLDfq_vv5RdN9_V3OExBulH4AQLN8mKXoUwM1gfMBF2k37NJBp5qwAt7b_idBlHMo2RRoEWKtdNLjQh6fVAJGMAij2WHIAON_M8SorJ7crC12eULM6lOMDilxUGO3c8yvmhdYt5n5cAagEQshORZagIbcatjdSUguNi9aZxkCt0baBwG5FJGFIgwRBYupW63uZydMxDAsFEr5JAPUDQXDZvVKzh_rl3HpVKRI7KhL0v6ZpC_PNzKBdTjhJlMzlzk8YmWjr7fBwjPRjqQ3Iw0QoQlpJQlwetMK_egWAt9SqHcYc_HAHZvLm2rqJKgWj0Fr59dtt80gpKnkyWYM6C7Z9oWqP29TOJfv_loB4I_jN7caZuTq37F0ewkwdndGm4v_pSFPAIwHAgSfESkhBe5OQ0IUVXV92pVOYkQgBtW0JbIP1z87NbKJwG3yi1m4dXHHj2waDUId2dF9j9rRteFchaIa4QuuBx8k53CzkEhk26z6vyAfXdbzbV4O46FexQWezGUr5ngXydfpueLUPLCyXZrR1l7KCcPx-4WWsCMdYtMbsK9TQIT3SJlXGAw_f9nSeybJGjMV3t1T_oJYCuLaWFrr6ICoqPDBI5S8JO9YHnEcVvR7t7CS2iEVd7IBXxpyKyqSp6Rfq-1u8ZX8JIoqgwI18_iZ9gkZg5XpJZS0oDXLDrWg4I7zeqKBO-ex4GWFSB_5Gq1KarIdZkQcwagdDTEAcj0VeajV6wCbseKtrfhl9342JBrjFuOARd2jYuhb1266rmRIDjTk37OQkF1bvJPKuWcAzYyIeoEKRbQXd4N2XGnp_HDrvOxrMZ3dTsgX_JzoQVydTQSI3HQg2U42KzzFJRxWWN_MnC_aGFLJ3PmjGI791L6eFefoXM54IqoXoqgXa0VoHw_6r4u5I2zQ1Bqvmp-u3Yf_2GK-L8pgwQsnb5uGS_9VnLunuNXiMllgEA9yUzLh3yUBCyRvxm-uzFILkzAhN-ejEu3Ckm8qrYdKz0mRk4ugSHVhH6VkRZFj6-nv6inK_6ll1c3RpVfItDxHI3Y8xN3zAGwmJ3ruRx2voSDP2_qfiGumN4N2AdUvP_hr7r1s5HjGC7lX8EMAMyzeTwpp8c8GL9vi_F9PRL6ohQei6X_FbMcAvxDkagsLvRElOTbV8xe4bUSr4TiIxypOGir5ro94Wmv54tLKzs46jz7_glOFCPePOG9NRoypvolrF7vV8UOTbYP7RrltTPCxdtSvhjiOVHmut2Ms7axXBsWEP7nsQVFvhw6UaQCz4W17QlerlKZMFIqB3b6ZL78s5BVMT6HApD-kLW4YBhssNJUC0D3o4nhBst_aOWItZJCeOU8pwd7lYI1yk1mN2EULAoc97-QvS-FbkP2JVrdsVfNk9qeNNVJl68EGK6_eBORUwe4DEMdoWeBZgmJjkZTGQPXLScOvfCN5gyen14ig_z0ubXPZuDccKwdVD_MfGInuSyYCj6sAUnX4x1TBbQviBcSdY0hTm5VaHCfjPE54bnKnJCpc4c6L43vJFp7-FuKgS2mvFflZU0mY8kPC9_dWYP4qOIg3YmZVmhM1nR4cTo1P4fknaPHrmsA-RJQeh9zlZePiEs7bYrJBwAe864kK7o4PeyYF4e-dhlw_ci7K3aXegSBXgLwT4p1uvMChN2PeYmZAB0ph12BYUbi0J9BuZA3k-TlJB_2OClTIxUlGTGXVF3IHrCOIS01k9Yf0SpdJIiw3CsBrMissa-cJi4jXlGIM-S6ODRUmk1W3gQvhFlco=\",\"summary\":[]},\"output_index\":0,\"sequence_number\":3}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"ig_028d7fb658c136b3016a5ce5a91890819fa161dd35e5e7c1b1\",\"type\":\"image_generation_call\",\"status\":\"in_progress\"},\"output_index\":1,\"sequence_number\":4}\n\nevent: response.image_generation_call.in_progress\ndata: {\"type\":\"response.image_generation_call.in_progress\",\"item_id\":\"ig_028d7fb658c136b3016a5ce5a91890819fa161dd35e5e7c1b1\",\"output_index\":1,\"sequence_number\":5}\n\nevent: response.image_generation_call.generating\ndata: {\"type\":\"response.image_generation_call.generating\",\"item_id\":\"ig_028d7fb658c136b3016a5ce5a91890819fa161dd35e5e7c1b1\",\"output_index\":1,\"sequence_number\":6}\n\nevent: response.image_generation_call.partial_image\ndata: {\"type\":\"response.image_generation_call.partial_image\",\"background\":\"opaque\",\"item_id\":\"ig_028d7fb658c136b3016a5ce5a91890819fa161dd35e5e7c1b1\",\"output_format\":\"jpeg\",\"output_index\":1,\"partial_image_b64\":\"/9j/4AAQSkZJRgABAQAAAQABAAD/62FlSlACEQAAAAEAAGFbanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAYTVqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjY1M2EzZTVkLThlNzUtNDA0Ni1iNDU2LWU1MDRjMThkODA4NAAAABf9anVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNo7jOSha7DqlpqKw+PkKJzMQAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAF+anVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2hdSkvjFmKRxUgNqSNNJa5ZAAABNWNib3KhZ2FjdGlvbnODpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25jMi4wcWRpZ2l0YWxTb3VyY2VUeXBleEZodHRwOi8vY3YuaXB0Yy5vcmcvbmV3c2NvZGVzL2RpZ2l0YWxzb3VyY2V0eXBlL3RyYWluZWRBbGdvcml0aG1pY01lZGlhomZhY3Rpb25uYzJwYS5jb252ZXJ0ZWRkd2hlbsB0MjAyNi0wNy0xOVQwMDowMDowMFqiZmFjdGlvbngYYzJwYS53YXRlcm1hcmtlZC51bmJvdW5kZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBaAAALump1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2htwRZizBAqU+ypnOv4HGAmAAALaWNib3KhaG9jc3BWYWxzgnkFhE1JSUVId29CQUtDQ0JCZ3dnZ1FVQmdrckJnRUZCUWN3QVFFRWdnUUZNSUlFQVRDQm9xSVdCQlErQkh2WmhwRXNxV2tkcUc0YU55NXVZQmdMeXhnUE1qQXlOakEzTVRnd09URXlORGRhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkQ1TWZJNVFDNGRzY3hXK3IyNlg2aER1bENESkJCVERzeVNXTkpPaFdlcFNHR3VlRitDcHV0YXdUQUlVVXBRbEI0RzFhb2I1TXhkNGNOYU9yZTlpR2tHQUFCZ1BNakF5TmpBM01UZ3dPVEV5TkRaYW9CRVlEekl3TWpZd056STFNRGt4TWpRMldqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUE5cTc1WEo2d3VvQS9ESlRXS0F3ekQ1bGw1N3pxdXRRUzdONzFDWVlvRU40Q0lRRGRIcGRvYTUySEQ0OC9zcDh2NmVWNUQxMWFESS85MkVNU3l5dVVxY2pBaGFDQ0F3RXdnZ0w5TUlJQytUQ0NBbjZnQXdJQkFnSVVLNXZHUDVEZXFocTFUV2hVYUZRRlFmNWxUSll3Q2dZSUtvWkl6ajBFQXdNd2dhY3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnd3SVRtVjNJRmx2Y21zeEV6QVJCZ05WQkFvTUNsUnlkV1p2SUVsdVl5NHhGREFTQmdOVkJBc01DME5CSUVScGRtbHphVzl1TVJvd0dBWUpLb1pJaHZjTkFRa0JGZ3RqWVVCMGNuVm1ieTVoYVRFck1Da0dBMVVFQXd3aVZISjFabThnUXpKUVFTQkRiR0ZwYlNCVGFXZHVhVzVuSUVOQklDZ3lNREkxS1RBZUZ3MHlOakEzTVRjd01EQXpNakZhRncweU5qQTRNVFl3TURBek1qRmFNSUdsTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUk13RVFZRFZRUUtEQXBVY25WbWJ5QkpibU11TVJRd0VnWURWUVFMREF0RFFTQkVhWFpwYzJsdmJqRWFNQmdHQ1NxR1NJYjNEUUVKQVJZTFkyRkFkSEoxWm04dVlXa3hLVEFuQmdOVkJBTU1JRlJ5ZFdadklFTXlVRUVnVDBOVFVDQlNaWE53YjI1a1pYSWdLREl3TWpVcE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVpFQVo1NnFMcG1ncU4zb3ZMcWg0VFh6cWJHTDV2dndCczgrWDhHdVhxOWE4SXZHL3lzNG5ycWRlbms1U2xaUEJZdmJYUlIzT0JMVHB6UkpoWUxLZnhxT0JoekNCaERBZEJnTlZIUTRFRmdRVVBnUjcyWWFSTEtscEhhaHVHamN1Ym1BWUM4c3dId1lEVlIwakJCZ3dGb0FVdzdNa2xqU1RvVm5xVWhocm5oZmdxYnJXc0V3d0RBWURWUjBUQVFIL0JBSXdBREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd2t3RHdZSkt3WUJCUVVITUFFRkJBSUZBREFLQmdncWhrak9QUVFEQXdOcEFEQm1BakVBdTROOElsVksrZVBWd1cxTFBCUzVOU2F3ZkRvM1ZmRUI4TTlrUC9WL0dEdGlpU1A1NUROWlZKd0JFNHorM3ZVWUFqRUEzaHNZakdVL2FpaG5ZMGFEU3pPQkFvT0ZJVFpKQWYxK1ozTEVZM0ZRcmdOd2VuNHhuRGM4ZHhhL0w3cUQzL2RieQXMTUlJRVZBb0JBS0NDQkUwd2dnUkpCZ2tyQmdFRkJRY3dBUUVFZ2dRNk1JSUVOakNCb3FJV0JCVEwySTQyaWlFUmN5eTU3NG9hbzJxZXZGTk1RQmdQTWpBeU5qQTNNVGd3T1RFMU1qVmFNSGN3ZFRCTk1Ba0dCU3NPQXdJYUJRQUVGSUFnOWJ6aUpPbHR2Tlp2eGhjcFpYd2t5UEg5QkJRRDFWK3Zmb1BsQkIxWmdDZEtOUDlGL2V0SmVBSVVNT2loOEtXSlFtdlN1WUpJUjVrWjNCWTNBc3VBQUJnUE1qQXlOakEzTVRnd09URTFNalZhb0JFWUR6SXdNall3TnpJMU1Ea3hOVEkxV2pBS0JnZ3Foa2pPUFFRREF3Tm9BREJsQWpFQWt1Z0g1TklqOXU3Y2F5YTB2TmluN09rMExIeE5XaW9WencvS1poaTRpWlFsTGx3SGpnbTNLZmZ5T0JEQWtkZ1VBakJOcmhCS1ZYQ1M0bk01a2wwRSs4dXZsNmM4ajV2MENDYWc5Z2JJK0plOXVaMnBQL3hzeDZvQzVCbmNWQnNSeUVxZ2dnTVhNSUlERXpDQ0F3OHdnZ0tWb0FNQ0FRSUNGQVBRZlRTU2JWY1pjTWJZRkpCTWM4WFQ1WnZnTUFvR0NDcUdTTTQ5QkFNRE1JR29NUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVRtVjNJRmx2Y21zeEVUQVBCZ05WQkFjTUNFNWxkeUJaYjNKck1STXdFUVlEVlFRS0RBcFVjblZtYnlCSmJtTXVNUlF3RWdZRFZRUUxEQXREUVNCRWFYWnBjMmx2YmpFYU1CZ0dDU3FHU0liM0RRRUpBUllMWTJGQWRISjFabTh1WVdreExEQXFCZ05WQkFNTUkxUnlkV1p2SUVNeVVFRWdVbTl2ZENCRFFTQW9NakF5TlN3Z1JVTkRJRkF6T0RRcE1CNFhEVEkyTURVeE1USXpOREl5TlZvWERUTTJNRFV3T0RJek5ESXlOVm93Z1o0eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhPWlhjZ1dXOXlhekVSTUE4R0ExVUVCd3dJVG1WM0lGbHZjbXN4RXpBUkJnTlZCQW9NQ2xSeWRXWnZJRWx1WXk0eEZEQVNCZ05WQkFzTUMwTkJJRVJwZG1semFXOXVNUm93R0FZSktvWklodmNOQVFrQkZndGpZVUIwY25WbWJ5NWhhVEVpTUNBR0ExVUVBd3daVkhKMVptOGdVbTl2ZENCUFExTlFJRkpsYzNCdmJtUmxjakIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHTDMxMnlnb0xYaHJOdkloaUxaeVhMTWU1ajRMSU1EaHJoMHdObFphTDlhV1Buc01WZVVFY1NCUVV1c29uL0pWaVhESSs3YVd5T3BzV3JLVm51cVcwcVhrOVFvNjN2cnlUZGszejlTYVJpbTYySkhOR1FKbkxzQ0lWaUNKN2tkT2FPQmh6Q0JoREFkQmdOVkhRNEVGZ1FVeTlpT05vb2hFWE1zdWUrS0dxTnFucnhUVEVBd0h3WURWUjBqQkJnd0ZvQVVBOVZmcjM2RDVRUWRXWUFuU2pUL1JmM3JTWGd3REFZRFZSMFRBUUgvQkFJd0FEQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3a3dEd1lKS3dZQkJRVUhNQUVGQkFJRkFEQUtCZ2dxaGtqT1BRUURBd05vQURCbEFqRUE3ZTBmaS9mTHpNNFRVOE42OUJyUXpBd1BHZ1RweERwV2hUV2FLcjRIaWJKR21WNUovTFdHNVZUV1VqckdhY2Q4QWpBWEdDVGEzdy9GZk1HVmlkUzFjZFRLckNuaEE2aUlxeTgzOE9sQi9sdCtHZU1TYnEydzZ2UVMza3oxc0ZFanh4Zz0AAADDanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaJlF/+7opq9IrrjxiEzjrUgAAAB7Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZYWdkbmFtZW5qdW1iZiBtYW5pZmVzdGNhbGdmc2hhMjU2ZGhhc2hYIAP5TkXl4191NS6N5LxLsOsH7r80GXXiCSzB6FJOZ6QlY3BhZEkAAAAAAAAAAAAAAAMbanVtYgAAACdqdW1kYzJjbAARABCAAACqADibcQNjMnBhLmNsYWltLnYyAAAAAuxjYm9ypmppbnN0YW5jZUlEeCx4bXA6aWlkOjY0YTdjNjkyLWQ5NTAtNGYwNS04MzUzLTA2YmNmZTlhYTgwNnRjbGFpbV9nZW5lcmF0b3JfaW5mb6RkbmFtZXgYT3BlbkFJIE1lZGlhIFNlcnZpY2UgQVBJZGljb26iY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQCd29yZy5jb250ZW50YXV0aC5jMnBhX3JzZjAuNzkuMmtzcGVjVmVyc2lvbmUyLjIuMGlzaWduYXR1cmV4TXNlbGYjanVtYmY9L2MycGEvdXJuOmMycGE6NjUzYTNlNWQtOGU3NS00MDQ2LWI0NTYtZTUwNGMxOGQ4MDg0L2MycGEuc2lnbmF0dXJlcmNyZWF0ZWRfYXNzZXJ0aW9uc4SiY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQComN1cmx4KnNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuYWN0aW9ucy52MmRoYXNoWCBSdrAznwM8WZOUtQcQ1wRzPhHjLcFrKo2gZnmx1eGLE6JjdXJseDJzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmNlcnRpZmljYXRlLXN0YXR1c2RoYXNoWCDOxOKbUidd7VeAgFE6yiUOeCDxZ2Qub1+Luar7CkkyuKJjdXJseClzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmhhc2guZGF0YWRoYXNoWCCNWe16fsv3drz877n+3X0wnpu6iTBm8qHNyrRVzPkpqmhkYzp0aXRsZWppbWFnZS5qcGVnY2FsZ2ZzaGEyNTYAAEXOanVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAAEWeY2JvctKEWQdVogEmGCGCWQNyMIIDbjCCAvOgAwIBAgIUUpQlB4G1aob5Mxd4cNaOre9iGkEwCgYIKoZIzj0E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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9lhAHrKMfwR3AJQ0QJhSYC5PQUPeDVQef+9uk4Mqi5f5tMZD5pRErn9dMUbgF8DIDuJfCMq6YVLE7vycgqoIXKt2Yf/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIBAAEAAMBIgACEQEDEQH/xAAZAAEBAQEBAQAAAAAAAAAAAAAABAUDAQL/xAApEAEAAgEBCAMBAQADAQAAAAAAAQMCBBITFCExQVGRETJxsSJCQ4Fh/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/ALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHj1LrLdjDYjrl/AUvUujt28NieuP8VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/Z\",\"partial_image_index\":0,\"quality\":\"low\",\"sequence_number\":7,\"size\":\"1024x1024\"}\n\nevent: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"ig_028d7fb658c136b3016a5ce5a91890819fa161dd35e5e7c1b1\",\"type\":\"image_generation_call\",\"status\":\"generating\",\"action\":\"generate\",\"background\":\"opaque\",\"output_format\":\"jpeg\",\"quality\":\"low\",\"result\":\"/9j/4AAQSkZJRgABAQAAAQABAAD/62FlSlACEQAAAAEAAGFbanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAYTVqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjY1M2EzZTVkLThlNzUtNDA0Ni1iNDU2LWU1MDRjMThkODA4NAAAABf9anVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNo7jOSha7DqlpqKw+PkKJzMQAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAF+anVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2hdSkvjFmKRxUgNqSNNJa5ZAAABNWNib3KhZ2FjdGlvbnODpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25jMi4wcWRpZ2l0YWxTb3VyY2VUeXBleEZodHRwOi8vY3YuaXB0Yy5vcmcvbmV3c2NvZGVzL2RpZ2l0YWxzb3VyY2V0eXBlL3RyYWluZWRBbGdvcml0aG1pY01lZGlhomZhY3Rpb25uYzJwYS5jb252ZXJ0ZWRkd2hlbsB0MjAyNi0wNy0xOVQwMDowMDowMFqiZmFjdGlvbngYYzJwYS53YXRlcm1hcmtlZC51bmJvdW5kZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBaAAALump1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2htwRZizBAqU+ypnOv4HGAmAAALaWNib3KhaG9jc3BWYWxzgnkFhE1JSUVId29CQUtDQ0JCZ3dnZ1FVQmdrckJnRUZCUWN3QVFFRWdnUUZNSUlFQVRDQm9xSVdCQlErQkh2WmhwRXNxV2tkcUc0YU55NXVZQmdMeXhnUE1qQXlOakEzTVRnd09URXlORGRhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkQ1TWZJNVFDNGRzY3hXK3IyNlg2aER1bENESkJCVERzeVNXTkpPaFdlcFNHR3VlRitDcHV0YXdUQUlVVXBRbEI0RzFhb2I1TXhkNGNOYU9yZTlpR2tHQUFCZ1BNakF5TmpBM01UZ3dPVEV5TkRaYW9CRVlEekl3TWpZd056STFNRGt4TWpRMldqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUE5cTc1WEo2d3VvQS9ESlRXS0F3ekQ1bGw1N3pxdXRRUzdONzFDWVlvRU40Q0lRRGRIcGRvYTUySEQ0OC9zcDh2NmVWNUQxMWFESS85MkVNU3l5dVVxY2pBaGFDQ0F3RXdnZ0w5TUlJQytUQ0NBbjZnQXdJQkFnSVVLNXZHUDVEZXFocTFUV2hVYUZRRlFmNWxUSll3Q2dZSUtvWkl6ajBFQXdNd2dhY3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnd3SVRtVjNJRmx2Y21zeEV6QVJCZ05WQkFvTUNsUnlkV1p2SUVsdVl5NHhGREFTQmdOVkJBc01DME5CSUVScGRtbHphVzl1TVJvd0dBWUpLb1pJaHZjTkFRa0JGZ3RqWVVCMGNuVm1ieTVoYVRFck1Da0dBMVVFQXd3aVZISjFabThnUXpKUVFTQkRiR0ZwYlNCVGFXZHVhVzVuSUVOQklDZ3lNREkxS1RBZUZ3MHlOakEzTVRjd01EQXpNakZhRncweU5qQTRNVFl3TURBek1qRmFNSUdsTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUk13RVFZRFZRUUtEQXBVY25WbWJ5QkpibU11TVJRd0VnWURWUVFMREF0RFFTQkVhWFpwYzJsdmJqRWFNQmdHQ1NxR1NJYjNEUUVKQVJZTFkyRkFkSEoxWm04dVlXa3hLVEFuQmdOVkJBTU1JRlJ5ZFdadklFTXlVRUVnVDBOVFVDQlNaWE53YjI1a1pYSWdLREl3TWpVcE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVpFQVo1NnFMcG1ncU4zb3ZMcWg0VFh6cWJHTDV2dndCczgrWDhHdVhxOWE4SXZHL3lzNG5ycWRlbms1U2xaUEJZdmJYUlIzT0JMVHB6UkpoWUxLZnhxT0JoekNCaERBZEJnTlZIUTRFRmdRVVBnUjcyWWFSTEtscEhhaHVHamN1Ym1BWUM4c3dId1lEVlIwakJCZ3dGb0FVdzdNa2xqU1RvVm5xVWhocm5oZmdxYnJXc0V3d0RBWURWUjBUQVFIL0JBSXdBREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd2t3RHdZSkt3WUJCUVVITUFFRkJBSUZBREFLQmdncWhrak9QUVFEQXdOcEFEQm1BakVBdTROOElsVksrZVBWd1cxTFBCUzVOU2F3ZkRvM1ZmRUI4TTlrUC9WL0dEdGlpU1A1NUROWlZKd0JFNHorM3ZVWUFqRUEzaHNZakdVL2FpaG5ZMGFEU3pPQkFvT0ZJVFpKQWYxK1ozTEVZM0ZRcmdOd2VuNHhuRGM4ZHhhL0w3cUQzL2RieQXMTUlJRVZBb0JBS0NDQkUwd2dnUkpCZ2tyQmdFRkJRY3dBUUVFZ2dRNk1JSUVOakNCb3FJV0JCVEwySTQyaWlFUmN5eTU3NG9hbzJxZXZGTk1RQmdQTWpBeU5qQTNNVGd3T1RFMU1qVmFNSGN3ZFRCTk1Ba0dCU3NPQXdJYUJRQUVGSUFnOWJ6aUpPbHR2Tlp2eGhjcFpYd2t5UEg5QkJRRDFWK3Zmb1BsQkIxWmdDZEtOUDlGL2V0SmVBSVVNT2loOEtXSlFtdlN1WUpJUjVrWjNCWTNBc3VBQUJnUE1qQXlOakEzTVRnd09URTFNalZhb0JFWUR6SXdNall3TnpJMU1Ea3hOVEkxV2pBS0JnZ3Foa2pPUFFRREF3Tm9BREJsQWpFQWt1Z0g1TklqOXU3Y2F5YTB2TmluN09rMExIeE5XaW9WencvS1poaTRpWlFsTGx3SGpnbTNLZmZ5T0JEQWtkZ1VBakJOcmhCS1ZYQ1M0bk01a2wwRSs4dXZsNmM4ajV2MENDYWc5Z2JJK0plOXVaMnBQL3hzeDZvQzVCbmNWQnNSeUVxZ2dnTVhNSUlERXpDQ0F3OHdnZ0tWb0FNQ0FRSUNGQVBRZlRTU2JWY1pjTWJZRkpCTWM4WFQ1WnZnTUFvR0NDcUdTTTQ5QkFNRE1JR29NUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVRtVjNJRmx2Y21zeEVUQVBCZ05WQkFjTUNFNWxkeUJaYjNKck1STXdFUVlEVlFRS0RBcFVjblZtYnlCSmJtTXVNUlF3RWdZRFZRUUxEQXREUVNCRWFYWnBjMmx2YmpFYU1CZ0dDU3FHU0liM0RRRUpBUllMWTJGQWRISjFabTh1WVdreExEQXFCZ05WQkFNTUkxUnlkV1p2SUVNeVVFRWdVbTl2ZENCRFFTQW9NakF5TlN3Z1JVTkRJRkF6T0RRcE1CNFhEVEkyTURVeE1USXpOREl5TlZvWERUTTJNRFV3T0RJek5ESXlOVm93Z1o0eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhPWlhjZ1dXOXlhekVSTUE4R0ExVUVCd3dJVG1WM0lGbHZjbXN4RXpBUkJnTlZCQW9NQ2xSeWRXWnZJRWx1WXk0eEZEQVNCZ05WQkFzTUMwTkJJRVJwZG1semFXOXVNUm93R0FZSktvWklodmNOQVFrQkZndGpZVUIwY25WbWJ5NWhhVEVpTUNBR0ExVUVBd3daVkhKMVptOGdVbTl2ZENCUFExTlFJRkpsYzNCdmJtUmxjakIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHTDMxMnlnb0xYaHJOdkloaUxaeVhMTWU1ajRMSU1EaHJoMHdObFphTDlhV1Buc01WZVVFY1NCUVV1c29uL0pWaVhESSs3YVd5T3BzV3JLVm51cVcwcVhrOVFvNjN2cnlUZGszejlTYVJpbTYySkhOR1FKbkxzQ0lWaUNKN2tkT2FPQmh6Q0JoREFkQmdOVkhRNEVGZ1FVeTlpT05vb2hFWE1zdWUrS0dxTnFucnhUVEVBd0h3WURWUjBqQkJnd0ZvQVVBOVZmcjM2RDVRUWRXWUFuU2pUL1JmM3JTWGd3REFZRFZSMFRBUUgvQkFJd0FEQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3a3dEd1lKS3dZQkJRVUhNQUVGQkFJRkFEQUtCZ2dxaGtqT1BRUURBd05vQURCbEFqRUE3ZTBmaS9mTHpNNFRVOE42OUJyUXpBd1BHZ1RweERwV2hUV2FLcjRIaWJKR21WNUovTFdHNVZUV1VqckdhY2Q4QWpBWEdDVGEzdy9GZk1HVmlkUzFjZFRLckNuaEE2aUlxeTgzOE9sQi9sdCtHZU1TYnEydzZ2UVMza3oxc0ZFanh4Zz0AAADDanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaJlF/+7opq9IrrjxiEzjrUgAAAB7Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZYWdkbmFtZW5qdW1iZiBtYW5pZmVzdGNhbGdmc2hhMjU2ZGhhc2hYIAP5TkXl4191NS6N5LxLsOsH7r80GXXiCSzB6FJOZ6QlY3BhZEkAAAAAAAAAAAAAAAMbanVtYgAAACdqdW1kYzJjbAARABCAAACqADibcQNjMnBhLmNsYWltLnYyAAAAAuxjYm9ypmppbnN0YW5jZUlEeCx4bXA6aWlkOjY0YTdjNjkyLWQ5NTAtNGYwNS04MzUzLTA2YmNmZTlhYTgwNnRjbGFpbV9nZW5lcmF0b3JfaW5mb6RkbmFtZXgYT3BlbkFJIE1lZGlhIFNlcnZpY2UgQVBJZGljb26iY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQCd29yZy5jb250ZW50YXV0aC5jMnBhX3JzZjAuNzkuMmtzcGVjVmVyc2lvbmUyLjIuMGlzaWduYXR1cmV4TXNlbGYjanVtYmY9L2MycGEvdXJuOmMycGE6NjUzYTNlNWQtOGU3NS00MDQ2LWI0NTYtZTUwNGMxOGQ4MDg0L2MycGEuc2lnbmF0dXJlcmNyZWF0ZWRfYXNzZXJ0aW9uc4SiY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQComN1cmx4KnNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuYWN0aW9ucy52MmRoYXNoWCBSdrAznwM8WZOUtQcQ1wRzPhHjLcFrKo2gZnmx1eGLE6JjdXJseDJzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmNlcnRpZmljYXRlLXN0YXR1c2RoYXNoWCDOxOKbUidd7VeAgFE6yiUOeCDxZ2Qub1+Luar7CkkyuKJjdXJseClzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmhhc2guZGF0YWRoYXNoWCCNWe16fsv3drz877n+3X0wnpu6iTBm8qHNyrRVzPkpqmhkYzp0aXRsZWppbWFnZS5qcGVnY2FsZ2ZzaGEyNTYAAEXOanVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAAEWeY2JvctKEWQdVogEmGCGCWQNyMIIDbjCCAvOgAwIBAgIUUpQlB4G1aob5Mxd4cNaOre9iGkEwCgYIKoZIzj0E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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9lhAHrKMfwR3AJQ0QJhSYC5PQUPeDVQef+9uk4Mqi5f5tMZD5pRErn9dMUbgF8DIDuJfCMq6YVLE7vycgqoIXKt2Yf/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIBAAEAAMBIgACEQEDEQH/xAAZAAEBAQEBAQAAAAAAAAAAAAAABAUDAQL/xAApEAEAAgEBCAMBAQADAQAAAAAAAQMCBBITFCExQVGRETJxsSJCQ4Fh/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/ALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHj1LrLdjDYjrl/AUvUujt28NieuP8VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/Z\",\"revised_prompt\":\"Simple flat solid black triangle centered on a plain white background. Minimal vector-style graphic with no shading, gradients, outlines, or textures. Triangle pointing upward (base at bottom), crisp edges, centered both vertically and horizontally, occupying about 40% of the image width. High resolution, clean white background.\",\"size\":\"1024x1024\"},\"output_index\":1,\"sequence_number\":8}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_028d7fb658c136b3016a5ce5b662b8819fa19ff40122f1c07a\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":2,\"sequence_number\":9}\n\nevent: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_028d7fb658c136b3016a5ce5b662b8819fa19ff40122f1c07a\",\"output_index\":2,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":10}\n\nevent: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_028d7fb658c136b3016a5ce5b662b8819fa19ff40122f1c07a\",\"logprobs\":[],\"output_index\":2,\"sequence_number\":11,\"text\":\"\"}\n\nevent: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_028d7fb658c136b3016a5ce5b662b8819fa19ff40122f1c07a\",\"output_index\":2,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":12}\n\nevent: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_028d7fb658c136b3016a5ce5b662b8819fa19ff40122f1c07a\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"}],\"role\":\"assistant\"},\"output_index\":2,\"sequence_number\":13}\n\nevent: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_028d7fb658c136b3016a5ce59cd0e8819f804427824478bc8c\",\"object\":\"response\",\"created_at\":1784472988,\"status\":\"completed\",\"background\":false,\"completed_at\":1784473014,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":null,\"max_tool_calls\":null,\"model\":\"gpt-5-mini-2025-08-07\",\"moderation\":null,\"output\":[{\"id\":\"rs_028d7fb658c136b3016a5ce59d154c819f85755db041801f6a\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqXOW2RoFJWpA81w_vweFr0iHQ5uCpsReoKbmPpyUhCwlm5lLubRBc3D2Ken8UNoPaPHzA0IAUTPoQ4CmwTAzRBn9nTz0upKnytFs2ilrchJskeslMO7WGA0otkbPG_ZDvYTSj1lfofNGbyDHiVnFyt5yhQ_MmIs2l5yjTK6TgHV3towKRrp7YFKbmVE9z3RJ2WBRFzZ3YIb4i4GuctmtedrplMjZR86kuvxZuePz_1iEV3sq0vpazrC1OMHtchHTeX_KSM1Xv_GoK9narTYcEv2V5yw3ssbu27qRAEzy_ZlwIphQdUP2wzRd0UxYKuEe6HEnyBUBnh8hymbhg7UC7-fKgBpcUHNnBID5m8Mr38yg-ZSALNhrJex_5PSpna0WdZRODUkJGxxiUf2LP7HS8hJe7aQafSAZWoPvv7d83urjyqF7rwHsDgWpvzd_wEUWsOns-W6cpNkdSotMOOcFgajCyY3RwsYLqR0Kdv3S3cMvxx55jUwXEcNT8JWkIH9yzS9OWwvo0a4aJPW_UbyfuAW4ube5Q1AuJngq2AUxOeuOFwHgVW-Vgunnt4xuFG0-EsoMsZDR7xBkhsV8wcx7QUTsbVhZPALDDgAxFFyJBrj3ST7JRFs9QcJG7a-uqpinkbhHeMid2Il8g2mN5Su6UjF024PGFLiYx_k3x9RBkpAaA60pzTsUzyHDRFPwiwQluSA9mYYB66M-mHNNFy_NmsHeZmJCFz6HHqInY3rjmG0VoPYitDFZWbjPk8-bm8X3j7oCofYrau-axXESc7D5XNrA1hzT6FYtn7QTg5SeeQ6Bd8LolJ2C54josvOzXIiWoR8rJnOSf6Q7JOC5jRely5rSoJ_pUVc-G3-m9wkgfquRj0hTQ_B8WpSzmVcyibAFjaSzHb2u-9J8bnmMT5NyYGxmI3XTQgPghAP6LnjA71PLCKEmYA4OxCqfhelwRZMdee9ggZFTqwGa9Q9WYj6WbI3Ke-JN0cdPa_BSTgv7fVOMY7e1hjNMtlcnzDp-VImKryaezu3Vj29H0nO-g1HNC3mqhx912UJ_dyuKlDSNjsnNDTVA_taLXT41AVJwM84eCA9N5ocIvmPh9zwngi8zKyLYzcoEM5OqmQgM04usrXG9z8A4mKuuMFFgVvKEh46TYlfGICLH2mK5ojxnQq5DBTuoOvlAqciaYwb4I4PhBUxvwFN3-_hLxVp8d21zI02mfjq4zdlN2BkfwE5uvZUucukx-dbhzbarMMybM3xfu5_ihFOg43JeABYTmjmTceBW2kpuVU6GiAb09Yr8kQkKsUD9RkjO6uCaSJIgxUEfUZMym1Flg7eHFPJns56YEMXOw_Gk-nz_HfDvdkw3NmW7J089jx7ixjTP6dPI2ZcQBwze_41Zy64CnuV2ddDytWM5-nKIHuTAZzXpTsdJ4l7TPkl3VdvkF4cWnKCY0Zh80RVAegFU4iNp2pchxbAUWBOAUSF4wI6ccOmstwiPk3-NXN3Q5hWKP_ut5Qu34GB4avJDFFDz9xLNNJMEuxP3q2Y_qe1inSxSWmMXPBrzsPufR_x2Og4lj4U3eMVlcby0YL3hXw8nRnmFLh3zTEfNneiEon3u2DpKhgXJJSulS3oGq2qLBxqBS2dkwZ9rdR-sg5j-B6M2IME0Vnmp_Mqpd4sjQYj31LMr9SYhlCzmRup6SZCLmkw8Ryi1zNy49Qk4K3SYsS8P11hCuXZP9FV9tRP7uszKElguPeD28vgZIUuHgyW15dscWwGcwuOjIrl2RhiKOdLWUJLWS54yQWwHbCPUDea-3mI6ZXH2cEb_jKoODFAKYPYXcD4-g5l8m1q9_J2TiDnXyHXpmddT84W8yDzmxS5TWhWyNvvaVBHcH2e2jsiSCZkKdBSsT9irmt7A68GX6kSmBfN6xBa0zgRKapKdB-t9lFMgKJX58LtIgkJ4GyEa3Vljqkr6p_ogxbDvxdLBQQQKmROCGYWsY8vwj7xKkvGvDzP9LSowmy1r7WAWQRvhVltWWXnFR6C7gAQY5jFz4JjTgoDehAZk16GEYAyUMsGPdFCw6DqcuTf70bAmp40fMBbiz-Ezvw4fHXbAyuxJDDmik-7SS_fGnO0apwMxrmICMhuMEfofiu0TXeAwBwq1ztLEkf1jvAqNLyx6VKIrhqumgtmAObIGqNyIvN6uDGQe-3EEEQOLEoNf-25OQotsq0xXRgnxoCnF8vX4Y2gf_wIGf3_5AueR-lJFfU_R81FmRYfWWxT9o510aIS6BOLi7Yaw4WDM9hWSyyOwD4wcCa1jY6-e1DAFmk24oqp_DzriJz3gh_m69YeRyAbxgmMec82XjbUTrIKszr__QodFVeSxwZxhBXkp2fNIRN3orgQ1iccdS7BExLrP8iboYGdvZMUHZwQzBl9rioLFk1mwdghBsV4v-63haXKAm7-UKZmSXnslygCCtZ5bsBcgudZBtaEzEbFDbQcPKyQYycxdN69KpRnc7g8NPrFtWoT1Mkg1uhqA6FEYsH0QIuM_xvob-_F04ihHLL-93VcHPxoSosHynh1epp9PcfUzfC74SI8_TaKJ5OjT81i3lJCdVUH9UlJf2xFSswM5JJfRKAdU8u-ljQ1-uxafK5w9UWnlDcyhtikDGB8WNH27EPgb35b9rZJ1HzkURy6_5OoZAyLmNzs8cbt53cQeZf1QL4HrzkQHjLPOF-DGJvP-YEEQh-_Jicy6_aagtgl7sQ3AHSJwa5fc3kALE7j-vkMxRmP9tINYAw0pADx5TstQNTirMTB7-qAMOqfW_UyCVtBgG84OcFvlrsFzTERYW8Pidv6olXc8Lb8IbykePvtxrhufCFv5jNbO3GpXp62wW3kbmBxvTszwWecfVHxZ23CstGoDwbAmJDYVtYE7rOlobLGWkI01Q4IZmmAvus6tbqG3Lyt5If1F0DPEjjSkGY_dxwxTlFlc9rGG13o5a_FTAV2pSS5odrUvxWsaGOsG1FgnJKwf1NH00BeJzVlEUfIwLjZdAhs-l18ekU3Yikq4IegvXkEydFvpoqnqYA1fncdX9fuaI1ibPCO3t1HIVivSM2jNG00z9yrWX-5gYbUlyJ-7r5EUYDZBgZpogzFg6CPBQrcMtrtPBLuTpyrrR_E6Ck1ZBRV_rO0DXqM-Ku-MWY5X_nLa2CPROqlDfgakbqn038ARmxMbD-xrJBtCG4puNpuUwhwxgGuoVyFqObUDB0gGVoPAu1KjSj4ZD8nLE3sH7_l2pCCuyPEJDZTDWYBCSA7toushvVQCOnHEUwNlIK6Qr9AMZVjJTZEK5tXq1DsvH76J73No_y9CZXUiphjvKOVChsZqymtwyaadUkipCDVNsnK9_mmUttXQKSUxGRo-hsQV72_7cIsjwsrLCGH7DRLEKbHODTjt7pswikdFZVR69acRtbiL_bmaAirG3TXYXn9kyZw6ogPnGojwesjXZbW6nCpqCihQFzGQ6w0vKhj7kIaWvQXgiX5I8FtaN5sC1HTFmXgSUY05C0fQ0CfsFTossamPcAQ5h4fphLTTkpPP2qowiI3BVEE02HKGxl9FCHpvExuwrojvwuNxy_7EE9zzOL_bvKDESeX_aogsc6aAakFo74oGyQVN6LB5rrUYThrgBED6r41pYHQ7opvA2ZY76ixV_pCwt9LtBF8s7Vp-xrreBc_Qq5uQjY6LmDQTVbJ2M4iBCnkhV3B4jSBnlKIxxq2ZkFZwZlIcrP9T5se0KXBvzGZLRE5m_6J9jT8FNKhhho9QIsGomWsw5LtR4ZgFgXbnNlQZ6WNPMnfbNXFtYSVAvOZpa3v3-54kmcfyRa2gBXVN5PIh85fbjn2PL2GM1biqZ_fHU3huAWdH78mBa9S90cF-4_PKCwtUE6M3Uwkaik24uZwohy4F67YmE1jfQqIdcLIPC9Mk9AJj-ja35PI-FYSAdjGdJj57mBnneTW6vP-SXrE99vPtZa0lYa4OYnXpYE8_YJG6WZMaSSrLSQAZX2pQV5u3fTKSXd6EgXCLBZtxkxbsubsgrWa7OpOFDGWnj25zulb2KOrZYN4cAf5VMMqBc9f14Z8MnLMvTJ2JsnJAyzOAH2EH00Kyi2axkNs76KcumtJbrzIMQkmXnCsm0CTIwqPuDR6PxWWmNjKzGT-YVeEzWe26vHvDYYISBZRrMLo5owx1fP592JKM_003-uABJAjiugeYrETonQA68Uhwj63M_LDhHWbS3dNAaEaJ-qjnNMnmZFEcMVjUmLEOTvBMlo1FUHerUXmyh-8S2O4rwwuevQvTsZIw-x8CbQ4YTny_oNa0KKJ-jT56ysCod9UE-OwzrWrgLQcFxDmUrFcAmHUA0eiTFJGCut3YT0UDJEDNrETT9Dv50Et9p_B2IbhpS0sYJVQrMGtXF968tSSrSkcN8YbFmRd-f22EXR7oOANEI185gtDiFMsBSEfXd1dra60ayMoqaXRQ2FM4-agzetZau8XyjF4Hunmly69zgX-SPknE0-XGoOTId0UhjSb77JuJBTvMZDxyCfRtUiMnxRnCHYyg1rrQyiIxsfMwB9Adx0LdQzBLBTCTAGEAiKiNrxlLwG3o7xdai-8A-3XFdbuKpMw2SMYPfHgTwzixuttX44uC4A1kjA1WC59roDEzLvuNnxje77WXqy9C2DR3OHIt_bS1k2q58wTwLXWp56v23AwNNoogOsDovtQ1qF4m0hAGtBzYmPZ3S8DczXaF5TeXIx1VkK_cThLS7-wIhoU5V_F9eWjzjl6GjkUMn8FW0jqmTsO56auyzztDuxWnoBL5xTrM4epvbqKSk-Oo4k0fKCp_TlHary_ufEoLudY0iVtHUR6UxMn-8cbBHHkRkTj5G8AH2o5OGdFxtSXByTfZtOIJcEgIgKDu18rF37Jrv9ppC0EQqEQLNgWw45S2SbkSMRGv3AvU24Oy_ClfS7JhWrlGZTxIb8_oM958lL6aAVZsOVAHss9GdFxIw-ywlD-HAckWctbyquEUZQDfGPDhFymAWqbQW70jrTzcHW_Jjf0i6pdbCjDz1XP1LbTpVXcg_SGKCY4PYGCStwWf6xmaO6JcbYLyqv3TrBA23uiF3bHjX6rAqPw3Bqb6Z3sI8u50de9y6jiJma0fzUev6uEJt9pnqi1MA9ent1s3oKGkrgbX0uAQ0mrlZNNUuTLrIJMO---51BoVqQRViR4mmGIfdb1MpMwcF2HmRfVGuWTb-C50NDHZCb7x3BIlWj_5Ithwf4HNJTuRRWLO4RJ35yi_KuCF2l95ozR-h6GXdrb44pPj9uA1DvAykaYntGW_0IBZZoPoNfOKJSC_ZXXj0fG3SbeIK3MhgGUKr3NpFmm3BWbJXEF-PZlvvylEwKtZeVNFtorvOSS4F3ANorFPj_K8BFcU-MyLakPNrCBIiw8MzzgRHyO6PfySOVP78zyPNg_3mYMEnn_jnFlTLA4PHzABdxbumd0K09IHvZquTYorsNcrSsxWP0atTYG_fKH41eK6uir40vzI_unFjHXhxm5K5OiWC3LqXy6q2FZVxUaoWqF_1jzg1TeM01V6pNkVU2F2rxO9IrR8rym0w6m3REPqCNkkUo2icZ6srRWDaSJMaHd-qCEJKWsmqdnvVGa04Hk612u7i4HoCbakclXlkORzBHLVR-1XwlC2Bo_ehmVpqbWnHO7bFh5ngfFU5oQYEUsmL-J_qtMTxnAP5dFI3hD3cfQol5r2aTCn8c0qvLo7CYW-p19BzYBn8FDOqPc353e9KiIWVlYNuJSw2wHdZ5sI55lTdC94bL0pvy1Og9C5E1vJF91c3LY3fWkAFHbPWp_tQ3ORENSMxp3pzfAKRcKILpBmdrCvsk_VU14p0ijgYr4Xtl39p65jU0sqUH_LjDVS4GPXp_qObRdPO2awTycteRVXUc0V56ODwG1zU-JhtB7cs7eAXtjlEgig8VCEXW1kF608joYrlrDRMzvwoE2tzRLxzbkpWmCOARu3XzVKf35_qCkeWfAISdo0ihEtHSha6MJn1NLsOXXhGf2JqKD8WscPg2CSTaOV7MZM2Ipubulbwfw2jhAdT9c9CEcEnu-G38B8kCbbNYRrb5saF-cw7BVj3y7Ncuin0hbbRpX3dkXHKtSJgcg3JU4XOhwW1Wn9stvh3dE_exFNntgUkdOjXUp1XUbbH72yLdD9GjoG24XdMekDQ3JguQp-_V678R31CG46nlwSECcyMbFWTeNt5weNnPA2qRzoywsd2zJWR76NgXdt9X4l89ohStp044qFH-z0SdTviBIqjgQSp4ntNGrzIiPEXuMBUpysEsQFQvHDde4dw-qf9GNkdqMe_wYjsjcF1RBP0-i9DRCotHHvmwZBye8-ehQ5c_4HIGGj0vKvJGVwl1wDFU-atPFTHJ6tHk8_-0SvrNQKfaR3upzdN5ntwyQ4CGcfDyADhhAco-ft4YKo2-GXXKSrhH307mRCTmuROBSBP8kuNgEOYMVsbUFp3Yq9wRR_CJBEhvfIQYIc507MZhjYiMRkB2uvY5v6n4ji7HWcdxTp5grUd2xcv5Y0HHX6lMK333lfEBeegY2_tL5IKCsrTDZ_309twAkBXnQyjrrzBLRf7fi6Dx4UUdVfXMzdGUGbwWYzWqK70LxCdkITIdFw_fLCm72jZQe19JrHpRvYGspcpm-jb_G8t0L37QhNB2_iZXOMwVJABNpGffcNz7G7DvUGCF-mYa13uJsnBg_QIrO-ZfJpA6qI4H9ivSW7VLi_sVh_ozT4cl_K822ci1drOoeM2Jm7dKrysLbyxB9E1KqROEG7TlnqhZlxmN2znDDV8UNZElk9maJSpXysxMtRtf_8Kq_rxbzLvDcyw0-QPMpmimy_IbmtJV-g3WHKndThr33AR2h0u_Jnwbfu4oaLJbfi-hIwkePbeFi9E1JN9bbLX4uVFv1-6F7ThScFaQL9pk14fG8mFVvohzcUIVuOgSubv0PEvLklLNk5WWC4B5TkLXfUjKxlXc7w1pHuLg3pEvPcIPA9CT9g2A1Wym7gbxGvuNLT27xZGpjOVdNvXXLDJ8J1-jdKPQZ0wd3IbwhP-jEh7DL4sj2ZaSOJ1QB1ULpfkZeq8Vg-H7BLLzXlC09CQwEZI2Ehaj7kyajZlyiXx8TQwdEjxjzETPnuqPKO8tTNjkTrj2hzyIhXQJ5hnKn5OeDeJxU5dRuNSe25R9rOJknTVZlv5cponvn_NjQhCw3S5VGzVOka8nbglPM5cw7EeaJ_t1e7t-QRO5NbAhpjIzGrKvqtBuqzXyVxb63WoUUwWXTEz1f8xx5SsPslkH55wWfoRYIM9KzAAZxemMLiLfTzHVc8gwXGtYVHv9DAwt0wOqcMxfCGCpJIMa4hfmtlgZV6DDAfiz5TfErhGNQFzDNtqw9UMVtPbLsAXL7RJqmwKkkulk6SEDbEmEPxaR4Mu2S7DvuJHHG_ENf1LI3p1CHl77jqQhdKr2Mha5Wut6454233pQFlpXxd8DsPjynY_tEdCYCW6I85FhC_OEq4S-aC-NqTdIPCVVSqflSyvq-Px7qhbM3Dd-20c7NqPCJNY75nSlawBn5JNoPQSG3yINI9GWxboCU_qtIEZXzGfKb4mFnZ9xY5aRL7yuLuARtPuka5Xab4ZXO1wr52OBl4Kir8Wfl0b6TO_5C8Q9EWhOc5L3Ym2lV6UF37J8ikGiY7za7zRRxs90zZQfBhuzgizCU_PP4uVAxhyC0gSDhytOK_MdO6PCNvkIDZvyBnjT4W_Zku4Sf3MXUgFxo7W8Q0Ipus1RUvIM-EZD-2yEKCDEcORF8H9kZb2kP7IZgcBp4_GSzyktDN5VkfnCiU8qYacx07ZFataXiXb0SQzTAtoYr13Y28hWk75xbCYeTNBGLlwQl112Hl2xSdoErMPUfMxXlZfdyGyaY_Q9uBrM48flEHec3QjNSgHCbibJGNp3HZE2gBozd1jcbcC9nLNotrJ3ONBAbRA4tEP6JNorNrCl9_bN3iw5975XWy4SwBssarhSG0Pbq9dsdRtE2YyYRUTovy1y_1zFZLBlYXRbabVvYe-cLeVJKi_UGGcBbfLeor_XWOUGB48V_pBLD2qPQGFOzJy7_qOLD2uzHynpBct91kz2KUZ-IX6tZO7cpnQFCxnNfzzNTzlz_4VcN1RDBCAH-U2Y3SyfhtVDXwJwCcKAY1ant3hmtTtFqRekvgtTi0T7rXNHlJxE9FT5bL4P6q73HRq0pSz94NNuxS4J6-X4qNJjjJnpuRLfi_U67Op8V1YUPjRlLDGDW_bpmzFMcVulyyOdIJZTFBSEHxhb5fGpLp1T8mH94hwAbQ9MFNujT0O9_fOq8YjJCiY4jOOaG6vwn0TONeuMH3X8BZ4wfg6xWmQEhEX9EcMfQ0xcrrPGDgVhzuaRCB25IvbHOLBuQEE0UvuvT2226Dl7xj1IHFqHAywccZPuj0NCQYXm6u1Yc8o3XB7HbTxQfIQbOsA2PK5xih2mlsdp1KXUBeMTWJZ19EZ74rxpKPrUXGIB5FUl8_mRVjvnYuM0OgweL1twHCQmRFemfNpfRi1cZbGhmOJQNwAoNe8TDfjQWLFbXYz-7HYptXCN5iqFCJeXN_DnD1N9WOoktYfnhU4BpxIe90gdnaO8qE7TyHToIVl4QU4s2_gMzCnqJPKaWFrldfanwh2lHmJqj7ZRVe69nP6NpEYqWd8G6wVMLQiq9IfUFwLi6Mxatx73HoUeV5Xx0BC_71kFs40VTPI2313mLz8wPPkrPvnDYraCDixDkPFZG96pbdLARjONwntTQEH-rxlTkKgCmksrr25-7B9mBVEtxz8Tez2OxiGcVnWnGCLnVqiijo0Yr8q45ZGKoCSov8MSLS_mIHE2Q8VMZ_0WLy4I-rPkn3Ouix310Ds8FEzLPPBILgB7iH7oaXuPxGS5-bKPQH3DEdaNj3yf9vMdFrW7_Y3-zcgQ9kL68T5sS1laG2WJG_lnVdhxzjx8GyZ9wRoJyF6D38-4YtWc8Z14I3lB_kAhK01IKpi0URqFY7_71wcndO38ApYhr3dgcgzgpSXXKwsyOmF2iEE0zEflCHLnb7Byao21Co=\",\"summary\":[]},{\"id\":\"ig_028d7fb658c136b3016a5ce5a91890819fa161dd35e5e7c1b1\",\"type\":\"image_generation_call\",\"status\":\"generating\",\"action\":\"generate\",\"background\":\"opaque\",\"output_format\":\"jpeg\",\"quality\":\"low\",\"result\":\"/9j/4AAQSkZJRgABAQAAAQABAAD/62FlSlACEQAAAAEAAGFbanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAYTVqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjY1M2EzZTVkLThlNzUtNDA0Ni1iNDU2LWU1MDRjMThkODA4NAAAABf9anVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNo7jOSha7DqlpqKw+PkKJzMQAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAF+anVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2hdSkvjFmKRxUgNqSNNJa5ZAAABNWNib3KhZ2FjdGlvbnODpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25jMi4wcWRpZ2l0YWxTb3VyY2VUeXBleEZodHRwOi8vY3YuaXB0Yy5vcmcvbmV3c2NvZGVzL2RpZ2l0YWxzb3VyY2V0eXBlL3RyYWluZWRBbGdvcml0aG1pY01lZGlhomZhY3Rpb25uYzJwYS5jb252ZXJ0ZWRkd2hlbsB0MjAyNi0wNy0xOVQwMDowMDowMFqiZmFjdGlvbngYYzJwYS53YXRlcm1hcmtlZC51bmJvdW5kZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBaAAALump1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2htwRZizBAqU+ypnOv4HGAmAAALaWNib3KhaG9jc3BWYWxzgnkFhE1JSUVId29CQUtDQ0JCZ3dnZ1FVQmdrckJnRUZCUWN3QVFFRWdnUUZNSUlFQVRDQm9xSVdCQlErQkh2WmhwRXNxV2tkcUc0YU55NXVZQmdMeXhnUE1qQXlOakEzTVRnd09URXlORGRhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkQ1TWZJNVFDNGRzY3hXK3IyNlg2aER1bENESkJCVERzeVNXTkpPaFdlcFNHR3VlRitDcHV0YXdUQUlVVXBRbEI0RzFhb2I1TXhkNGNOYU9yZTlpR2tHQUFCZ1BNakF5TmpBM01UZ3dPVEV5TkRaYW9CRVlEekl3TWpZd056STFNRGt4TWpRMldqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUE5cTc1WEo2d3VvQS9ESlRXS0F3ekQ1bGw1N3pxdXRRUzdONzFDWVlvRU40Q0lRRGRIcGRvYTUySEQ0OC9zcDh2NmVWNUQxMWFESS85MkVNU3l5dVVxY2pBaGFDQ0F3RXdnZ0w5TUlJQytUQ0NBbjZnQXdJQkFnSVVLNXZHUDVEZXFocTFUV2hVYUZRRlFmNWxUSll3Q2dZSUtvWkl6ajBFQXdNd2dhY3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnd3SVRtVjNJRmx2Y21zeEV6QVJCZ05WQkFvTUNsUnlkV1p2SUVsdVl5NHhGREFTQmdOVkJBc01DME5CSUVScGRtbHphVzl1TVJvd0dBWUpLb1pJaHZjTkFRa0JGZ3RqWVVCMGNuVm1ieTVoYVRFck1Da0dBMVVFQXd3aVZISjFabThnUXpKUVFTQkRiR0ZwYlNCVGFXZHVhVzVuSUVOQklDZ3lNREkxS1RBZUZ3MHlOakEzTVRjd01EQXpNakZhRncweU5qQTRNVFl3TURBek1qRmFNSUdsTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUk13RVFZRFZRUUtEQXBVY25WbWJ5QkpibU11TVJRd0VnWURWUVFMREF0RFFTQkVhWFpwYzJsdmJqRWFNQmdHQ1NxR1NJYjNEUUVKQVJZTFkyRkFkSEoxWm04dVlXa3hLVEFuQmdOVkJBTU1JRlJ5ZFdadklFTXlVRUVnVDBOVFVDQlNaWE53YjI1a1pYSWdLREl3TWpVcE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVpFQVo1NnFMcG1ncU4zb3ZMcWg0VFh6cWJHTDV2dndCczgrWDhHdVhxOWE4SXZHL3lzNG5ycWRlbms1U2xaUEJZdmJYUlIzT0JMVHB6UkpoWUxLZnhxT0JoekNCaERBZEJnTlZIUTRFRmdRVVBnUjcyWWFSTEtscEhhaHVHamN1Ym1BWUM4c3dId1lEVlIwakJCZ3dGb0FVdzdNa2xqU1RvVm5xVWhocm5oZmdxYnJXc0V3d0RBWURWUjBUQVFIL0JBSXdBREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd2t3RHdZSkt3WUJCUVVITUFFRkJBSUZBREFLQmdncWhrak9QUVFEQXdOcEFEQm1BakVBdTROOElsVksrZVBWd1cxTFBCUzVOU2F3ZkRvM1ZmRUI4TTlrUC9WL0dEdGlpU1A1NUROWlZKd0JFNHorM3ZVWUFqRUEzaHNZakdVL2FpaG5ZMGFEU3pPQkFvT0ZJVFpKQWYxK1ozTEVZM0ZRcmdOd2VuNHhuRGM4ZHhhL0w3cUQzL2RieQXMTUlJRVZBb0JBS0NDQkUwd2dnUkpCZ2tyQmdFRkJRY3dBUUVFZ2dRNk1JSUVOakNCb3FJV0JCVEwySTQyaWlFUmN5eTU3NG9hbzJxZXZGTk1RQmdQTWpBeU5qQTNNVGd3T1RFMU1qVmFNSGN3ZFRCTk1Ba0dCU3NPQXdJYUJRQUVGSUFnOWJ6aUpPbHR2Tlp2eGhjcFpYd2t5UEg5QkJRRDFWK3Zmb1BsQkIxWmdDZEtOUDlGL2V0SmVBSVVNT2loOEtXSlFtdlN1WUpJUjVrWjNCWTNBc3VBQUJnUE1qQXlOakEzTVRnd09URTFNalZhb0JFWUR6SXdNall3TnpJMU1Ea3hOVEkxV2pBS0JnZ3Foa2pPUFFRREF3Tm9BREJsQWpFQWt1Z0g1TklqOXU3Y2F5YTB2TmluN09rMExIeE5XaW9WencvS1poaTRpWlFsTGx3SGpnbTNLZmZ5T0JEQWtkZ1VBakJOcmhCS1ZYQ1M0bk01a2wwRSs4dXZsNmM4ajV2MENDYWc5Z2JJK0plOXVaMnBQL3hzeDZvQzVCbmNWQnNSeUVxZ2dnTVhNSUlERXpDQ0F3OHdnZ0tWb0FNQ0FRSUNGQVBRZlRTU2JWY1pjTWJZRkpCTWM4WFQ1WnZnTUFvR0NDcUdTTTQ5QkFNRE1JR29NUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVRtVjNJRmx2Y21zeEVUQVBCZ05WQkFjTUNFNWxkeUJaYjNKck1STXdFUVlEVlFRS0RBcFVjblZtYnlCSmJtTXVNUlF3RWdZRFZRUUxEQXREUVNCRWFYWnBjMmx2YmpFYU1CZ0dDU3FHU0liM0RRRUpBUllMWTJGQWRISjFabTh1WVdreExEQXFCZ05WQkFNTUkxUnlkV1p2SUVNeVVFRWdVbTl2ZENCRFFTQW9NakF5TlN3Z1JVTkRJRkF6T0RRcE1CNFhEVEkyTURVeE1USXpOREl5TlZvWERUTTJNRFV3T0RJek5ESXlOVm93Z1o0eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhPWlhjZ1dXOXlhekVSTUE4R0ExVUVCd3dJVG1WM0lGbHZjbXN4RXpBUkJnTlZCQW9NQ2xSeWRXWnZJRWx1WXk0eEZEQVNCZ05WQkFzTUMwTkJJRVJwZG1semFXOXVNUm93R0FZSktvWklodmNOQVFrQkZndGpZVUIwY25WbWJ5NWhhVEVpTUNBR0ExVUVBd3daVkhKMVptOGdVbTl2ZENCUFExTlFJRkpsYzNCdmJtUmxjakIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHTDMxMnlnb0xYaHJOdkloaUxaeVhMTWU1ajRMSU1EaHJoMHdObFphTDlhV1Buc01WZVVFY1NCUVV1c29uL0pWaVhESSs3YVd5T3BzV3JLVm51cVcwcVhrOVFvNjN2cnlUZGszejlTYVJpbTYySkhOR1FKbkxzQ0lWaUNKN2tkT2FPQmh6Q0JoREFkQmdOVkhRNEVGZ1FVeTlpT05vb2hFWE1zdWUrS0dxTnFucnhUVEVBd0h3WURWUjBqQkJnd0ZvQVVBOVZmcjM2RDVRUWRXWUFuU2pUL1JmM3JTWGd3REFZRFZSMFRBUUgvQkFJd0FEQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3a3dEd1lKS3dZQkJRVUhNQUVGQkFJRkFEQUtCZ2dxaGtqT1BRUURBd05vQURCbEFqRUE3ZTBmaS9mTHpNNFRVOE42OUJyUXpBd1BHZ1RweERwV2hUV2FLcjRIaWJKR21WNUovTFdHNVZUV1VqckdhY2Q4QWpBWEdDVGEzdy9GZk1HVmlkUzFjZFRLckNuaEE2aUlxeTgzOE9sQi9sdCtHZU1TYnEydzZ2UVMza3oxc0ZFanh4Zz0AAADDanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaJlF/+7opq9IrrjxiEzjrUgAAAB7Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZYWdkbmFtZW5qdW1iZiBtYW5pZmVzdGNhbGdmc2hhMjU2ZGhhc2hYIAP5TkXl4191NS6N5LxLsOsH7r80GXXiCSzB6FJOZ6QlY3BhZEkAAAAAAAAAAAAAAAMbanVtYgAAACdqdW1kYzJjbAARABCAAACqADibcQNjMnBhLmNsYWltLnYyAAAAAuxjYm9ypmppbnN0YW5jZUlEeCx4bXA6aWlkOjY0YTdjNjkyLWQ5NTAtNGYwNS04MzUzLTA2YmNmZTlhYTgwNnRjbGFpbV9nZW5lcmF0b3JfaW5mb6RkbmFtZXgYT3BlbkFJIE1lZGlhIFNlcnZpY2UgQVBJZGljb26iY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQCd29yZy5jb250ZW50YXV0aC5jMnBhX3JzZjAuNzkuMmtzcGVjVmVyc2lvbmUyLjIuMGlzaWduYXR1cmV4TXNlbGYjanVtYmY9L2MycGEvdXJuOmMycGE6NjUzYTNlNWQtOGU3NS00MDQ2LWI0NTYtZTUwNGMxOGQ4MDg0L2MycGEuc2lnbmF0dXJlcmNyZWF0ZWRfYXNzZXJ0aW9uc4SiY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQComN1cmx4KnNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuYWN0aW9ucy52MmRoYXNoWCBSdrAznwM8WZOUtQcQ1wRzPhHjLcFrKo2gZnmx1eGLE6JjdXJseDJzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmNlcnRpZmljYXRlLXN0YXR1c2RoYXNoWCDOxOKbUidd7VeAgFE6yiUOeCDxZ2Qub1+Luar7CkkyuKJjdXJseClzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmhhc2guZGF0YWRoYXNoWCCNWe16fsv3drz877n+3X0wnpu6iTBm8qHNyrRVzPkpqmhkYzp0aXRsZWppbWFnZS5qcGVnY2FsZ2ZzaGEyNTYAAEXOanVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAAEWeY2JvctKEWQdVogEmGCGCWQNyMIIDbjCCAvOgAwIBAgIUUpQlB4G1aob5Mxd4cNaOre9iGkEwCgYIKoZIzj0E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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9lhAHrKMfwR3AJQ0QJhSYC5PQUPeDVQef+9uk4Mqi5f5tMZD5pRErn9dMUbgF8DIDuJfCMq6YVLE7vycgqoIXKt2Yf/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIBAAEAAMBIgACEQEDEQH/xAAZAAEBAQEBAQAAAAAAAAAAAAAABAUDAQL/xAApEAEAAgEBCAMBAQADAQAAAAAAAQMCBBITFCExQVGRETJxsSJCQ4Fh/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/ALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHj1LrLdjDYjrl/AUvUujt28NieuP8VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/Z\",\"revised_prompt\":\"Simple flat solid black triangle centered on a plain white background. Minimal vector-style graphic with no shading, gradients, outlines, or textures. Triangle pointing upward (base at bottom), crisp edges, centered both vertically and horizontally, occupying about 40% of the image width. High resolution, clean white background.\",\"size\":\"1024x1024\"},{\"id\":\"msg_028d7fb658c136b3016a5ce5b662b8819fa19ff40122f1c07a\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":\"current_turn\",\"effort\":\"medium\",\"mode\":\"standard\",\"summary\":\"detailed\"},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":false,\"temperature\":1.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":{\"type\":\"image_generation\"},\"tool_usage\":{\"image_gen\":{\"input_tokens\":67,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":67},\"output_tokens\":196,\"output_tokens_details\":{\"image_tokens\":196,\"text_tokens\":0},\"total_tokens\":263},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"image_generation\",\"background\":\"auto\",\"model\":\"gpt-image-2\",\"moderation\":\"auto\",\"n\":1,\"output_compression\":10,\"output_format\":\"jpeg\",\"quality\":\"low\",\"size\":\"1024x1024\"}],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":2853,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":1256,\"output_tokens_details\":{\"reasoning_tokens\":1152},\"total_tokens\":4109},\"user\":null,\"metadata\":{}},\"sequence_number\":14}\n\n" + } + }, + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.openai.com/v1/responses", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"gpt-5-mini\",\"input\":[{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Generate a simple flat black triangle centered on a plain white background.\"}]},{\"type\":\"reasoning\",\"summary\":[],\"encrypted_content\":\"gAAAAABqXOWpnAP0UBYvlSBekoHJCZH4q8xzRle879t05tnZpveHS-lRgcpzHWBcNwm8Qs8hBSGdQZgdOM-EKf0EJvBo27ynkLRL18hL29zaj_TqlNVZW3P9a0cij_UGUhhh7JFDXUJcxn2CNJs6hfZIs5vjS3zd0QvDSW-iCRPqT_NaT-VJIyXwZaZI8txwYY-buZg83BwkZidY1AGGv12xkyKCn7vhrTf_JM3tDgiWIIOd5bhaYLDlId3n_IKixf5mo8CKN0oyZyPz01XK82EwKVg8rkpdwW7XOiirQ7Ro0-oT_0TJCRa2uYxAyjzCoYWNXPsouRiyter3YdetjJkUR0-yNwmsJVv9ofkaeL5x5R7OcrA_YMsuqyXyyPIl1vpDqy7iA_U_4gwDnDJi5mOg3Y5fE4a3MwewwQgVcZx427UhTLltyaPCWZIcNVhey57hJxCt3RjWZGSWV-GMV2GC2dD5dHlXQiiCJ_Mkr3xyPXdjTyoe94KQlsfmO267RN3NyW74L2TqPEP_HnR0TyNtg-nClTYQPuhvx34nzqZQresJwksxHQU_W9AoBD2DTQMVL9DAoayVy5aB0fyyzwrT82xLkMP6XredNROM-qJSuBWRVVsG4f_mFriYv0yFgjwrtohLlGpPKEbjIsEKBFCyfQ2ERIVYYv8I80EaVTwPuKljMJFcYDa065ZNh8k-rFhg2Q_iQB-yLPH7kx4de3qvYrxZ7DTY2U5wVvZdPmW7sYzqN-8RnktWmUx-fSoGxVbClW6c7Gn_GkE9FmZ8qYcCRizpzSWfec41lS2dD-9g0Biow04K65k6R9Z1-TU-JMNgEn6t_1W5sOL8izzdXOTVZXxe-zlFbm_PNWpE4rMRuL8usVOB-cD4NVACqBvYQOrZ9Cp7scYfDX9KockxtPOpy6gKsn1VJdNWnwNgH_aKKrSO8WFePD3Mcw167HcPQpZ_wnJouWaPrFWKC_k0Iz6CFHvuu_WoTiREItFp10FibQEe-kQJ1PANwxWhjwBKsW7zJDOhhEtWrYpPUZq4eA6OyZgAzVQ6KMvgP38ZR0NxFoi4qwbcPoNY_Fp3AvcmTKLdQiOQ54DSM24LDQbT2LusMaQjr6pKuOwrj5glaGjK4JmBGu_6J05TIdZ6V7WLn39R3PU8tVI3RdEpam3Go6wBjU7yu4cp5O4eWc3XzKzh8bI5f1i_-toPgtJxodv6xGFMErYxxXgD5nWLo_0ELXd4SlcVKGA6o9vpctrkE9fNdWL6CDpXn6mh444E5gJMiPWGG5ZsdtolN1EVgesNwQBwFu4rkWQ5OwzT2liqOW4hEQTHI6W-L2jmKxejveBX0ai2FCmHBrb8Zboi17-CdK8yr3A6oUqUh6dcu5s_xiMAT-TyhOlCdWKJav-wjutKx4IJdACOSKZV6ePToTg43Hsm5PPKWgyg-hdb0zE6uCKKcjYT31zRqYCqhhrWbkAh4Dj7vZgNyZ0RhLfDcVZ5Oa-vAstRTv0MHzv9wOSitIQDMQdw8AJNQwgJfzc_TVtGNOi0-cR7tJjrcZZrMrLDXscgQc3MbQXoKtiiXNuR6nxX53rFFsEVC-J8T2T0pLFqsI9neSh69DGhdXS2PvggM1GD1ibNPbwcY_2uKPlImYoy8eyq1uXZ1GmgIfuFSV4wwct59BfV2l_WQ6nNOwmjCsY_KOO3yOkmdpQHOOwNbiHWpQ0CQ-KVnzpxqz9PaHpBhJwgcnOrAs9LXnWCDOETgnR8tc8MYQEAxgWLvEC1wpqGrOSZSCWoaZTUtQ52IrNJNB3qazGeIgOJSi_C42U2mnPhC34Bxcdutp0lYf_NVmiPzPil7L-qBSoyvAcrhJ6RM_39z77lXgNr7Zrl6wNbYej3qo6t8MoHyCxtnMHO8L_Dk2ug0EGl65TK6Hp3lqPTPY57XaXfxVkjUZczaKpxP4HeFAbRIVYh5Ygdi1beUUMqtgyG8_UF23ccgTLcwN4NminghUqdj0RJtZNxP8RIr-3F4qpWCAmTqthfZ1ncdaRHv90j0EnxoGdoYBY9jgkqFE8BOLrhD41ykwBSSiqx9JQTeMwZ5yLVYJSxshUhwP1OBeu97vaS6gfDqpG2anRXpf9dcqH5P-RCrPB1E-BphEQw3BFDeNC57Bwb4Sbt29wZTu87yqQO6WIrUOLK2psyG6lllPrlOz0MYko-rJMnDIGiQ92S4ddeh5Kqklia1q9SHIP36mxqN86gBczqJKmvutiIwBnZb8yLSNy04ppCb9fhqCFaIMazEXChkxwkQv2730Ffx4wxMRqJJbSFvC_4yg3sMgNPgBwbHGIpQTRh4R_4fKGaFnT1dNRrrPUraRcQZQSIpV81G3mxtyRWxxKyCZ-TWwOvE7SmTZu84UFPEUFA5MpLsM4SPw_loZTCTNs-4zkNbKD3dEYJjDafU3xS0eEZoBmHaGsG6UuRNjq_Es2qqOb7HPvHQU7OsDuvNju7t-RfBDFydfkTrBODvDLkKr8Y9erd81wzq8vwHswO-qT90coHnacAn7-AI6Dx-rR0wkSwJl9HIQ7pC5-zDHyDAa-Rt7gXZJxyEyoRdB6Xr-9xIrLvyWHjhtmmqY7kw9OpObgjw031cKnmcYtvykXT9dG4vb_ZJosy0froYxZMMlnmV3TT27Vhm85apQ53wCM2D8lp8xc4yUlkSBF-Mob28bm_z8gaymSIeMkMk46TROw86nKqJG_MwjE7394LbTQ4AQL63UdabVbJ-vE7w_D7ke3RQ93xFC2GYybqTQqA-oL4TGW4GTANjHNBYGFPrZLQgB57QWNsK0zOJ2w6X8zcF4pl4fkmOlRFUhjFMmOhCRRbuW3U-2h8012xhpYhTTGpWR0ODa891aN7NlxAC8Y6nMsYhrht0mJltMcep5D8lnXEytkWlIOnOVCDsj5jjYIgj5ZfLcmFcuoYFBr5XOGkt1PyCUOSPL8_WQOkousHn3sdONSyUmqpGar1YGsMAiBt-f4ZldsxN9pTslTwP_duhMPzGfRLXF4frnGBzaZHvxnV4eBCtEprRZAdM50bbD6QOhsudTVfZyv6I1c9XJgnxSVvfak4-niMex8lZ22pmnvi5-METukxdt0T9ZgI9CdPCs5aU3GpAZ9T1WMqRYox4MsuRAlIUGlyRDWa94fvtpoOi_6KI0r6-sM859y7xIaILPRdY0P2wnqVxtVOXhpi10mEU3BFz9eaBC1GifG7IzHH4rIqtohpK-Xi3J1U2iNEdO5JHqVkubzth-3iv0InsMYYrM3W0jHn9sbMYAGOvyFZLBIFStpCmLbIgBLT16G0nCEZWwaZZzv8o_o7yghO4I8f-G5G1u-55Lfa2P5073ILkQXyl-pYp8n3P2lrOHb3Ujq3KOZ78YNgKwUtg7JiVRs3Xz6AurppkNlauEDOOmIjY8OtcbPxFXoDrC1qXv5DZSD1RnTJSScF4YGXeFW1shMK6l6BI3Mi1_gQ4isftA_Ow-WDCZ1grgazDcpKOYzbKI8UBJwOLkueNx3ieQ9HTaVg3rQ2eLN_znh_StlW0GH0vZQCi2fBONUXD1OueNnKpkGy-iz5iXL7XOAnkLbLHqujcNhkL1pGJGQOHYaahnXb8gXMy6I7tIuGiIfe7GV8X3u0hac2s6ViKt4gyh1njIGdjYCyvm1bXu7pNNGUkdm2D-CsYEyjRwkeGYC4lVwbRqMM8IWB-baNLioS28dkviSTIX96a5FVrhzUGPe0TdLgCP77SSky09BXweWwXpYDeh0me1EAbI9ePGouKLvheoltIEF9C5m5XR-CKcaTPz0K1UBxWQLy8IWtU5D2F_Jhirc0nPsALWXvUxAZRMP1Jt4fGomIo8sX97PaDNXPalG2tc2lBxDHbI2g_AwzZGJj-97iMxTWuav3EJlqQThL1QAQ65kicLUeeZGvjT8vNK3AIKfp5tU6XimhtyZ2ezdZdywL68AbqVT6h6b3RTZufY7L82c96RRzx4csMp6WdGFHGtBvE7ZrCUQbxfE1MNfax2HlEViX4iIN1LA6rUisiG4ZGimb_YjkbtWW1MKVFbPUHAPVqOb4-w2vG5FVIhtdvhdk1KY2rFN6nSuR0rHKu3R5DZpAsplAVkGwi7EmFmPC7TbpS7fJDODubr69KD64xptKC9ebP1DbYZyRWMTwHnD7n2BVQT4vJtu4IaMwjlGduJyV-nV6r5k0WCwk5jwuV_S9Z5TZzPuJMFh7FhTzDEQzFPCzyjRfIYJIFOVjdWZKe2BPqi0r671xO0XoBCl-EHxqZ9QAU_ufz4PmhiL5WVcDG4ta0iNXzkQMcNIjfx0M79_f_DtFgfUPxaAVcOSFIupx2nN8nFqWqzmR1NbB6Swlssw62iYYenC9aCBGzdwxmun-EukSp83B_Mt9sJKk5ejeslc8iEFUTclxWcJkNjdbx8qvqTWzG2fedqcTsWdbk3Ezlr6uH-V9Wg4C8poFiRyztGfRxdwOFki_a3RM1M4DihrJMyca-FRrvudnp-AiJsgaxGRObHwnADvSCRh4cUrjOBYNMHaGiznk4MpEUEu3S2L5q1Slnc5cFs8Ww99H2Br-AN-wI5wYX6EmP-L5olxFUeMFNqELrk3FQJ8xEi_3yjYXT4mO2F_AoHzOVE3cdITR6LKmPI81_z7T2sOxszEnOn-hQNeC-BpwMVJ9bKgM1W3BbQGFBBB_izGAq0WGgajr-ryJ2tSsC5ijOl5usxis-oFwTmE7QVdW17JmUGZ9wqgFhkQv_O84so5d8_cRHzPuPIWRRygmXrS2PKNm1k5n67WC1oNa6mq6eO8IXAqeAyIugBIe0fVySnB-4v8f7Ca9ASIrY1Zt0jnH0ls9FLN3fIWfXaGTjZHp1uE2129YCyyFkLuRHRlrbphyOFmQps-oVikkB3pwbV3ZtLYNAEjsRVpUMQ1LuKt3NFIswavOq-Gnv1tYaOH325YxAJ_TUJBKKXmwHyXmecymZgDDuv7K5xGkg1Hpiz0Hubl3rbgJj-5Ms5eC_636-2Rj_FIBc_Vs2phBsSvYqgIYprENgd7Mx-CRI9eNE4R7qGKoAwyx2ccojKP5tmqnaO3Dg3T297hnUrHy4o49f9M3NOTOjGLhQTatAPXdbAgeoHZZEud3ZfYMtpAnqH1RLtqt6Lr8K7YbcnL9an0HM7f-Cv6C1Jgl6IU-axkPyLLTG7Az0AYvRDDvh4RadwKHiAVAoOqRODbEwfwrnsBoCbBRr1ahCE21lFnaMPKUectY45Fq6BPdTIgM3_kznWPVlu6HCuj72sQyRKykYHtSuekx_M4gG2pnbprvt6nLKewuOYCbMQAk7B8s8yCwT6TqT2o9gGxSHoH1NgwAWXVEVjZ14upn1wHWq7sR729Ph7jvHwIiRsALVpAo5En6vd6uvcA8MA8G8-Q9yC3G7wuGw51IhknZphdWRLZ99veJCqACplM8MW3trtMI1isYnuGG5VU9LIgddQCLHuSqJCfWf7uEudvy43nZ-u9LKHPqIYCu_V-WzPTbqFLCb2QeFXetvG4SZahpiwRW6gnP8ZDLXLOPuqpPGPTgf14kHRbHnXmYTA3-IitF4ZTFXUrg-mCJTOawfsnIt7SdCo57HA-dznt5M3ZvsRIvHrRLjMyb_NbvUPTdu7-YD4PbZ_tFduovizKb4XdZIq_OnNtKku2jy0DYb52Gz-5T9OEm2we2Dqd-WvGxy55Ezke75C8MjLgEeJL3eqQeqdGiiXpXtP3LWl99iKbKpnaxTHipFUAtxyf6cZ68gReZqIPIwj-hnqmSiwJj-9fpAMtzhNJ-893myYRH-KgfMnObHsFH9k3vB-D5CalDkLcK_SlS1g9GzeAKBPAwLpQPIQRHQTUxIQBsGnkiALF4d97AJTCETJsBQ4L2ajxnUs1uZe7l4Y_06vL-nfwH5q_e1t08aUwGvbbrPBzB_eOFbc_20SJwNmJjAPF_gl1ar_o0fbTZUWBfXmUqbWwsiiVu2EQLjfuOE8Y2-Scfl3Hyq3HUejJki6HU2j1hQNhqi8opi-lTksY3pvsa53LGQ8JFBuceRdRafgEIKa57kKIDvvBCRv87qz96AoS3hElBx9U_zEAgLKXFoMh1RAx_Xl1irUqLuR_7m-1xsj_ZVaHZm_3NZHATchHIleNlzMpjVNTl4k9rxn3VGMKQwb8BqIN-zLnwasI9eWLSUMZQJyQINk90ai96rayuG1OUQ4kis_XhiJMEQaAu8FJ0kpSk8tOlV0wmBI3LkV1WtfRPOdImKB6wo28uTByjU36yVivVGaa7LL6fVzJcelFRad6CEXLFKKLcAe3YQjN6-ANW_kmM7ogFN6flMbKJRpqWsWCOClECB60YK-oJtoHsYQBI8dqKNvpC9droooGQi3HyeXIXVk2v7qt3Oh3GiacQSir6UKrI4MCGmCd-KlHFVoNPmrK_LSwwK3NRDpxPtQa9D-rV4DNK4iTfOQGAXJM7l0DDMGxTS0ZtLA12hDmym2WIkvP6y_ldy4EUXIYko8c6aswFHKN-ww_Z9RJ4UZw73GDHMFELoxVN_OIgPPFI6QxpkCnommAkCUFTksjKcyWzFVEj6NhfzfzntfkGT3-e5TU-i_jbq30DKes8btyA3NcyRTOAWNY7GwbpQL78dg_iLJwjOndZA-kdwAk2zj0MdszoIVNWmMce0AtUqumKDn6qNNUnaTnpc3Nac7jO50CDTPkIVtFiTnNNABtHeoV4hD6ztJhkta1IB4tdAeqCm6ei20lhxqhbzYj_j3VXyzbMmbJ-dIBcdegvQDVPMGJxCJ0SwQp2QxKtWT3n3y2mZiXYxHsnIaXcX5TsuNStBTAXfTVrc-Ru4K77uoDMY7L1APh86Wi_DM6FjOktfH-8j7fFfQOygrpifx6asvnWn16Si29HxLiDD4bSs4gcx_l4E--aM0mRNPqgQrMM3mqyRpaR_yUJxvyy6nZQwg-dmpMDB2o2gLYpSCxQatzTiI80T3l8Pc6E-br3_dPXeRFdDabps-muLlfNMaxTqFmburJW6qxYaks4cm_wVxYOeyeQewLc_t3hE9d5JhKOVUSeF79kmFMHSV7dqjz7PB_Tut5s8paNNtjvKa0LHtoQ38gTbe2m6xjNKrBPZqM_0PoM3Er7pFbuDFC8GknJ5XiD9rmtfN95uJOiCbueEwgXKf2nDnbAMjfQk__fmEFD7SqaT7b5-nxPcXUH9aqozjN0GEafvGQnLOifqaedlk5ICDfrA71dGZJH_W2GCFBJe1Cb_wsDz61OAyltrtWBadyHn3LtS-pmlpYIjLOOB-y7p6bIsG1zIoA-p_lLDfq_vv5RdN9_V3OExBulH4AQLN8mKXoUwM1gfMBF2k37NJBp5qwAt7b_idBlHMo2RRoEWKtdNLjQh6fVAJGMAij2WHIAON_M8SorJ7crC12eULM6lOMDilxUGO3c8yvmhdYt5n5cAagEQshORZagIbcatjdSUguNi9aZxkCt0baBwG5FJGFIgwRBYupW63uZydMxDAsFEr5JAPUDQXDZvVKzh_rl3HpVKRI7KhL0v6ZpC_PNzKBdTjhJlMzlzk8YmWjr7fBwjPRjqQ3Iw0QoQlpJQlwetMK_egWAt9SqHcYc_HAHZvLm2rqJKgWj0Fr59dtt80gpKnkyWYM6C7Z9oWqP29TOJfv_loB4I_jN7caZuTq37F0ewkwdndGm4v_pSFPAIwHAgSfESkhBe5OQ0IUVXV92pVOYkQgBtW0JbIP1z87NbKJwG3yi1m4dXHHj2waDUId2dF9j9rRteFchaIa4QuuBx8k53CzkEhk26z6vyAfXdbzbV4O46FexQWezGUr5ngXydfpueLUPLCyXZrR1l7KCcPx-4WWsCMdYtMbsK9TQIT3SJlXGAw_f9nSeybJGjMV3t1T_oJYCuLaWFrr6ICoqPDBI5S8JO9YHnEcVvR7t7CS2iEVd7IBXxpyKyqSp6Rfq-1u8ZX8JIoqgwI18_iZ9gkZg5XpJZS0oDXLDrWg4I7zeqKBO-ex4GWFSB_5Gq1KarIdZkQcwagdDTEAcj0VeajV6wCbseKtrfhl9342JBrjFuOARd2jYuhb1266rmRIDjTk37OQkF1bvJPKuWcAzYyIeoEKRbQXd4N2XGnp_HDrvOxrMZ3dTsgX_JzoQVydTQSI3HQg2U42KzzFJRxWWN_MnC_aGFLJ3PmjGI791L6eFefoXM54IqoXoqgXa0VoHw_6r4u5I2zQ1Bqvmp-u3Yf_2GK-L8pgwQsnb5uGS_9VnLunuNXiMllgEA9yUzLh3yUBCyRvxm-uzFILkzAhN-ejEu3Ckm8qrYdKz0mRk4ugSHVhH6VkRZFj6-nv6inK_6ll1c3RpVfItDxHI3Y8xN3zAGwmJ3ruRx2voSDP2_qfiGumN4N2AdUvP_hr7r1s5HjGC7lX8EMAMyzeTwpp8c8GL9vi_F9PRL6ohQei6X_FbMcAvxDkagsLvRElOTbV8xe4bUSr4TiIxypOGir5ro94Wmv54tLKzs46jz7_glOFCPePOG9NRoypvolrF7vV8UOTbYP7RrltTPCxdtSvhjiOVHmut2Ms7axXBsWEP7nsQVFvhw6UaQCz4W17QlerlKZMFIqB3b6ZL78s5BVMT6HApD-kLW4YBhssNJUC0D3o4nhBst_aOWItZJCeOU8pwd7lYI1yk1mN2EULAoc97-QvS-FbkP2JVrdsVfNk9qeNNVJl68EGK6_eBORUwe4DEMdoWeBZgmJjkZTGQPXLScOvfCN5gyen14ig_z0ubXPZuDccKwdVD_MfGInuSyYCj6sAUnX4x1TBbQviBcSdY0hTm5VaHCfjPE54bnKnJCpc4c6L43vJFp7-FuKgS2mvFflZU0mY8kPC9_dWYP4qOIg3YmZVmhM1nR4cTo1P4fknaPHrmsA-RJQeh9zlZePiEs7bYrJBwAe864kK7o4PeyYF4e-dhlw_ci7K3aXegSBXgLwT4p1uvMChN2PeYmZAB0ph12BYUbi0J9BuZA3k-TlJB_2OClTIxUlGTGXVF3IHrCOIS01k9Yf0SpdJIiw3CsBrMissa-cJi4jXlGIM-S6ODRUmk1W3gQvhFlco=\"},{\"role\":\"user\",\"content\":[{\"type\":\"input_image\",\"image_url\":\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/62FlSlACEQAAAAEAAGFbanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAYTVqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjY1M2EzZTVkLThlNzUtNDA0Ni1iNDU2LWU1MDRjMThkODA4NAAAABf9anVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNo7jOSha7DqlpqKw+PkKJzMQAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAF+anVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2hdSkvjFmKRxUgNqSNNJa5ZAAABNWNib3KhZ2FjdGlvbnODpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25jMi4wcWRpZ2l0YWxTb3VyY2VUeXBleEZodHRwOi8vY3YuaXB0Yy5vcmcvbmV3c2NvZGVzL2RpZ2l0YWxzb3VyY2V0eXBlL3RyYWluZWRBbGdvcml0aG1pY01lZGlhomZhY3Rpb25uYzJwYS5jb252ZXJ0ZWRkd2hlbsB0MjAyNi0wNy0xOVQwMDowMDowMFqiZmFjdGlvbngYYzJwYS53YXRlcm1hcmtlZC51bmJvdW5kZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBaAAALump1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2htwRZizBAqU+ypnOv4HGAmAAALaWNib3KhaG9jc3BWYWxzgnkFhE1JSUVId29CQUtDQ0JCZ3dnZ1FVQmdrckJnRUZCUWN3QVFFRWdnUUZNSUlFQVRDQm9xSVdCQlErQkh2WmhwRXNxV2tkcUc0YU55NXVZQmdMeXhnUE1qQXlOakEzTVRnd09URXlORGRhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkQ1TWZJNVFDNGRzY3hXK3IyNlg2aER1bENESkJCVERzeVNXTkpPaFdlcFNHR3VlRitDcHV0YXdUQUlVVXBRbEI0RzFhb2I1TXhkNGNOYU9yZTlpR2tHQUFCZ1BNakF5TmpBM01UZ3dPVEV5TkRaYW9CRVlEekl3TWpZd056STFNRGt4TWpRMldqQUtCZ2dxaGtqT1BRUURBZ05KQURCR0FpRUE5cTc1WEo2d3VvQS9ESlRXS0F3ekQ1bGw1N3pxdXRRUzdONzFDWVlvRU40Q0lRRGRIcGRvYTUySEQ0OC9zcDh2NmVWNUQxMWFESS85MkVNU3l5dVVxY2pBaGFDQ0F3RXdnZ0w5TUlJQytUQ0NBbjZnQXdJQkFnSVVLNXZHUDVEZXFocTFUV2hVYUZRRlFmNWxUSll3Q2dZSUtvWkl6ajBFQXdNd2dhY3hDekFKQmdOVkJBWVRBbFZUTVJFd0R3WURWUVFJREFoT1pYY2dXVzl5YXpFUk1BOEdBMVVFQnd3SVRtVjNJRmx2Y21zeEV6QVJCZ05WQkFvTUNsUnlkV1p2SUVsdVl5NHhGREFTQmdOVkJBc01DME5CSUVScGRtbHphVzl1TVJvd0dBWUpLb1pJaHZjTkFRa0JGZ3RqWVVCMGNuVm1ieTVoYVRFck1Da0dBMVVFQXd3aVZISjFabThnUXpKUVFTQkRiR0ZwYlNCVGFXZHVhVzVuSUVOQklDZ3lNREkxS1RBZUZ3MHlOakEzTVRjd01EQXpNakZhRncweU5qQTRNVFl3TURBek1qRmFNSUdsTVFzd0NRWURWUVFHRXdKVlV6RVJNQThHQTFVRUNBd0lUbVYzSUZsdmNtc3hFVEFQQmdOVkJBY01DRTVsZHlCWmIzSnJNUk13RVFZRFZRUUtEQXBVY25WbWJ5QkpibU11TVJRd0VnWURWUVFMREF0RFFTQkVhWFpwYzJsdmJqRWFNQmdHQ1NxR1NJYjNEUUVKQVJZTFkyRkFkSEoxWm04dVlXa3hLVEFuQmdOVkJBTU1JRlJ5ZFdadklFTXlVRUVnVDBOVFVDQlNaWE53YjI1a1pYSWdLREl3TWpVcE1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVpFQVo1NnFMcG1ncU4zb3ZMcWg0VFh6cWJHTDV2dndCczgrWDhHdVhxOWE4SXZHL3lzNG5ycWRlbms1U2xaUEJZdmJYUlIzT0JMVHB6UkpoWUxLZnhxT0JoekNCaERBZEJnTlZIUTRFRmdRVVBnUjcyWWFSTEtscEhhaHVHamN1Ym1BWUM4c3dId1lEVlIwakJCZ3dGb0FVdzdNa2xqU1RvVm5xVWhocm5oZmdxYnJXc0V3d0RBWURWUjBUQVFIL0JBSXdBREFPQmdOVkhROEJBZjhFQkFNQ0I0QXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUhBd2t3RHdZSkt3WUJCUVVITUFFRkJBSUZBREFLQmdncWhrak9QUVFEQXdOcEFEQm1BakVBdTROOElsVksrZVBWd1cxTFBCUzVOU2F3ZkRvM1ZmRUI4TTlrUC9WL0dEdGlpU1A1NUROWlZKd0JFNHorM3ZVWUFqRUEzaHNZakdVL2FpaG5ZMGFEU3pPQkFvT0ZJVFpKQWYxK1ozTEVZM0ZRcmdOd2VuNHhuRGM4ZHhhL0w3cUQzL2RieQXMTUlJRVZBb0JBS0NDQkUwd2dnUkpCZ2tyQmdFRkJRY3dBUUVFZ2dRNk1JSUVOakNCb3FJV0JCVEwySTQyaWlFUmN5eTU3NG9hbzJxZXZGTk1RQmdQTWpBeU5qQTNNVGd3T1RFMU1qVmFNSGN3ZFRCTk1Ba0dCU3NPQXdJYUJRQUVGSUFnOWJ6aUpPbHR2Tlp2eGhjcFpYd2t5UEg5QkJRRDFWK3Zmb1BsQkIxWmdDZEtOUDlGL2V0SmVBSVVNT2loOEtXSlFtdlN1WUpJUjVrWjNCWTNBc3VBQUJnUE1qQXlOakEzTVRnd09URTFNalZhb0JFWUR6SXdNall3TnpJMU1Ea3hOVEkxV2pBS0JnZ3Foa2pPUFFRREF3Tm9BREJsQWpFQWt1Z0g1TklqOXU3Y2F5YTB2TmluN09rMExIeE5XaW9WencvS1poaTRpWlFsTGx3SGpnbTNLZmZ5T0JEQWtkZ1VBakJOcmhCS1ZYQ1M0bk01a2wwRSs4dXZsNmM4ajV2MENDYWc5Z2JJK0plOXVaMnBQL3hzeDZvQzVCbmNWQnNSeUVxZ2dnTVhNSUlERXpDQ0F3OHdnZ0tWb0FNQ0FRSUNGQVBRZlRTU2JWY1pjTWJZRkpCTWM4WFQ1WnZnTUFvR0NDcUdTTTQ5QkFNRE1JR29NUXN3Q1FZRFZRUUdFd0pWVXpFUk1BOEdBMVVFQ0F3SVRtVjNJRmx2Y21zeEVUQVBCZ05WQkFjTUNFNWxkeUJaYjNKck1STXdFUVlEVlFRS0RBcFVjblZtYnlCSmJtTXVNUlF3RWdZRFZRUUxEQXREUVNCRWFYWnBjMmx2YmpFYU1CZ0dDU3FHU0liM0RRRUpBUllMWTJGQWRISjFabTh1WVdreExEQXFCZ05WQkFNTUkxUnlkV1p2SUVNeVVFRWdVbTl2ZENCRFFTQW9NakF5TlN3Z1JVTkRJRkF6T0RRcE1CNFhEVEkyTURVeE1USXpOREl5TlZvWERUTTJNRFV3T0RJek5ESXlOVm93Z1o0eEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUlEQWhPWlhjZ1dXOXlhekVSTUE4R0ExVUVCd3dJVG1WM0lGbHZjbXN4RXpBUkJnTlZCQW9NQ2xSeWRXWnZJRWx1WXk0eEZEQVNCZ05WQkFzTUMwTkJJRVJwZG1semFXOXVNUm93R0FZSktvWklodmNOQVFrQkZndGpZVUIwY25WbWJ5NWhhVEVpTUNBR0ExVUVBd3daVkhKMVptOGdVbTl2ZENCUFExTlFJRkpsYzNCdmJtUmxjakIyTUJBR0J5cUdTTTQ5QWdFR0JTdUJCQUFpQTJJQUJHTDMxMnlnb0xYaHJOdkloaUxaeVhMTWU1ajRMSU1EaHJoMHdObFphTDlhV1Buc01WZVVFY1NCUVV1c29uL0pWaVhESSs3YVd5T3BzV3JLVm51cVcwcVhrOVFvNjN2cnlUZGszejlTYVJpbTYySkhOR1FKbkxzQ0lWaUNKN2tkT2FPQmh6Q0JoREFkQmdOVkhRNEVGZ1FVeTlpT05vb2hFWE1zdWUrS0dxTnFucnhUVEVBd0h3WURWUjBqQkJnd0ZvQVVBOVZmcjM2RDVRUWRXWUFuU2pUL1JmM3JTWGd3REFZRFZSMFRBUUgvQkFJd0FEQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3a3dEd1lKS3dZQkJRVUhNQUVGQkFJRkFEQUtCZ2dxaGtqT1BRUURBd05vQURCbEFqRUE3ZTBmaS9mTHpNNFRVOE42OUJyUXpBd1BHZ1RweERwV2hUV2FLcjRIaWJKR21WNUovTFdHNVZUV1VqckdhY2Q4QWpBWEdDVGEzdy9GZk1HVmlkUzFjZFRLckNuaEE2aUlxeTgzOE9sQi9sdCtHZU1TYnEydzZ2UVMza3oxc0ZFanh4Zz0AAADDanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaJlF/+7opq9IrrjxiEzjrUgAAAB7Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZYWdkbmFtZW5qdW1iZiBtYW5pZmVzdGNhbGdmc2hhMjU2ZGhhc2hYIAP5TkXl4191NS6N5LxLsOsH7r80GXXiCSzB6FJOZ6QlY3BhZEkAAAAAAAAAAAAAAAMbanVtYgAAACdqdW1kYzJjbAARABCAAACqADibcQNjMnBhLmNsYWltLnYyAAAAAuxjYm9ypmppbnN0YW5jZUlEeCx4bXA6aWlkOjY0YTdjNjkyLWQ5NTAtNGYwNS04MzUzLTA2YmNmZTlhYTgwNnRjbGFpbV9nZW5lcmF0b3JfaW5mb6RkbmFtZXgYT3BlbkFJIE1lZGlhIFNlcnZpY2UgQVBJZGljb26iY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQCd29yZy5jb250ZW50YXV0aC5jMnBhX3JzZjAuNzkuMmtzcGVjVmVyc2lvbmUyLjIuMGlzaWduYXR1cmV4TXNlbGYjanVtYmY9L2MycGEvdXJuOmMycGE6NjUzYTNlNWQtOGU3NS00MDQ2LWI0NTYtZTUwNGMxOGQ4MDg0L2MycGEuc2lnbmF0dXJlcmNyZWF0ZWRfYXNzZXJ0aW9uc4SiY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIGiAoLKucP6DZW3n4G7oYobIrrgNIyysPIIIe95cIrQComN1cmx4KnNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuYWN0aW9ucy52MmRoYXNoWCBSdrAznwM8WZOUtQcQ1wRzPhHjLcFrKo2gZnmx1eGLE6JjdXJseDJzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmNlcnRpZmljYXRlLXN0YXR1c2RoYXNoWCDOxOKbUidd7VeAgFE6yiUOeCDxZ2Qub1+Luar7CkkyuKJjdXJseClzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmhhc2guZGF0YWRoYXNoWCCNWe16fsv3drz877n+3X0wnpu6iTBm8qHNyrRVzPkpqmhkYzp0aXRsZWppbWFnZS5qcGVnY2FsZ2ZzaGEyNTYAAEXOanVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAAEWeY2JvctKEWQdVogEmGCGCWQNyMIIDbjCCAvOgAwIBAgIUUpQlB4G1aob5Mxd4cNaOre9iGkEwCgYIKoZIzj0E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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9lhAHrKMfwR3AJQ0QJhSYC5PQUPeDVQef+9uk4Mqi5f5tMZD5pRErn9dMUbgF8DIDuJfCMq6YVLE7vycgqoIXKt2Yf/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIBAAEAAMBIgACEQEDEQH/xAAZAAEBAQEBAQAAAAAAAAAAAAAABAUDAQL/xAApEAEAAgEBCAMBAQADAQAAAAAAAQMCBBITFCExQVGRETJxsSJCQ4Fh/8QAFAEBAAAAAAAAAAAAAAAAAAAAAP/EABQRAQAAAAAAAAAAAAAAAAAAAAD/2gAMAwEAAhEDEQA/ALQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHj1LrLdjDYjrl/AUvUujt28NieuP8VAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/Z\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Now make the triangle blue.\"}]}],\"tools\":[{\"type\":\"image_generation\",\"action\":\"auto\",\"output_compression\":10,\"output_format\":\"jpeg\",\"partial_images\":0,\"quality\":\"low\",\"size\":\"1024x1024\"}],\"tool_choice\":{\"type\":\"image_generation\"},\"store\":false,\"include\":[\"reasoning.encrypted_content\"],\"reasoning\":{\"effort\":\"medium\",\"summary\":\"auto\"},\"stream\":true}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0a372a7fcba6b284016a5ce5b6a12081a1be0e5db6b7067a0b\",\"object\":\"response\",\"created_at\":1784473014,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":null,\"max_tool_calls\":null,\"model\":\"gpt-5-mini-2025-08-07\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":\"current_turn\",\"effort\":\"medium\",\"mode\":\"standard\",\"summary\":\"detailed\"},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":false,\"temperature\":1.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":{\"type\":\"image_generation\"},\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"image_generation\",\"background\":\"auto\",\"model\":\"gpt-image-2\",\"moderation\":\"auto\",\"n\":1,\"output_compression\":10,\"output_format\":\"jpeg\",\"quality\":\"low\",\"size\":\"1024x1024\"}],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}\n\nevent: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0a372a7fcba6b284016a5ce5b6a12081a1be0e5db6b7067a0b\",\"object\":\"response\",\"created_at\":1784473014,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":null,\"max_tool_calls\":null,\"model\":\"gpt-5-mini-2025-08-07\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":\"current_turn\",\"effort\":\"medium\",\"mode\":\"standard\",\"summary\":\"detailed\"},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":false,\"temperature\":1.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":{\"type\":\"image_generation\"},\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"image_generation\",\"background\":\"auto\",\"model\":\"gpt-image-2\",\"moderation\":\"auto\",\"n\":1,\"output_compression\":10,\"output_format\":\"jpeg\",\"quality\":\"low\",\"size\":\"1024x1024\"}],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"rs_0a372a7fcba6b284016a5ce5b7334081a1b3dc47c8448468b6\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqXOW3-Ow65f1AuZG4xw3IiCYm7EJ3ZPb6EqPBPK4wJeupE3cVGXIL92CKC2MMXvHbmV-LtR6csxDXJ7cOGOHD_KsKBJsnuDn8oBaUn56Ba2JqoVtEhHs3RDioGAB4fZp01cvBOiikRTzH1XYTpb1_4tR04nI8iO2pH5Kd3MrW5zYUeIl_Y9OdBTlJz3Mqxi0WfAIz4TY37_f_UaGJJXS8K9xu4fQ8Ef_poPHJVxWHiyZBiEh2FwPe8yoINa8Pu5_PyV_GfE--ClAfRTAhNZViOH2ne0Cg_oBtrRMVp9S9ql1Qx-IzWTAC38qh6tuhPWiAkrmPXUgN6BYaSK1S8z_E-Nr_51C9Q38uR2NUOEnpmeKR0RUjWEQC-cZYLQ19yTcAlfrYLccJSOPmp0R9h4GE8NvzB_HtvknArHZVaLxAOWrAwyGE7m6SGPMiVQqanAR85J3kFcZ3CMZlw4Y0u6rbYp30TSimarggY5epmeLE-1FC7LzgWRRvxTKS4N29mbUKoCPcXPyC47zR2OuHdV41Fvtaw-5oFutFU8WG0JJqF5jIt9WAvB4teei5dMdVRPo2iSGgvGrAYYjaOBy_P_XOPgp1woPy6_k6AzEhRuNzhgieMc9ZGUpNhIoge2slx_2WQKsjKnnqRjyAMl7e5EvelRoHpTOG0mDPxmqPDejoFiRGqGh2g6NM6-4KzOkZq7J5D455VN9OE_i0owr08zFSVfP5xlkwO6ByfHeSazzjQZjat3MLPzMKlIUAIzFNdvqO0ZwMCqiEQkQSN6tG9z4EDFUZddDjtNF0ncQg-VfTYZjV7r4fhKDJQKFhXRzgkHyyu_edb1mM5dd19-fzSV8zd_ZfgW7n_SgRSFqhrlE8Tmpi80gM_GPdn6UJ5oYC9q5CvdpR-sZ7kSOwcDTGDi3Jgt1r2hudc3CtAADTFf95O_-LnUg=\",\"summary\":[]},\"output_index\":0,\"sequence_number\":2}\n\nevent: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"rs_0a372a7fcba6b284016a5ce5b7334081a1b3dc47c8448468b6\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqXOW_JvNgvAr5mn5PqUudddAgMyL5Y37NwUV08gViStnE2hTne_KD9RB37hjzgSapdlCHawySV-S891qsw7g_RdaTeDW2oMZe2xjCA5_A1Gw0xQkzVl5fBS7TgW6cycbIGcrhPf1_z43vW2LOF4WFHAyzUhEc4gCBvXHs7iT2yeY9D1__xDQ5Bxuk8wxyesB3AwdR8UXQvdf0o9G-etykqcE-ZOMFapaDgNNFg2MSxuRMNjKnn_aRysRTtS3d3BCjzp8cbLCyB0nMSyfef7a7AnPnGPrxe7L5fg-h379tK2qK2D_-806o4BGrywd17Px3jUuXdob2w-daHT2xqzBcih1wEIuNOWsYTo9Db9NwM72VnwENpqZ32F7peWoQhn4C9Z3NGgvpK93szF1Hq_Fn7j1pcfYRCXzjz723GZdJow1bomxPqYdnoPjs1sRMpLxutxwbn_mRBe_cK5R7BsYL7GwR9ATwucIVEup93Wv091ZNmUP0H1H7jAkunGJHpVE3lTYK8wurfrFHHOmkOO9yTVOxQfQh4GgiYKle_Jsj7E7FKMpwDRvRchGa3T2FWXQMqscr7NYhLwgfPEzS-O8wsmr1KRVzzrlwSd85ejX1jZ4vYrS_fZKRGf7YrovxRUaZQOddNdayeFkLXTUIEUO8J69KokM8JOq39HbiDYxJbSUtlPjscBkoEZlURudRednd6Ov9WsTogwwjosuFbKNnNL0vzWpYODeGsgmz2dvTS4SM70XQ3tZhCulIUGeduJxPs9JdWdGwlODUoBg5foeL8HguxQ2yr2HbJf2pVoHVE0WjY5MOHT28uFkOuEWobLEkKPtxrQvelUiRK-dFk2I7Bs7XIABh0oe_ekZT5bgpsOydrPxidcjr_TRnVocTkLYPEo2QJf5QbhuC5i2L6wCdObazF9dNihKPb9LpPLH7NMjH5GAS1T-FwD9EHM-oG3DrSvYdbRHEKTlOmgoK5PmAuDzZtXOuoraLKD6OBw2cXmU1UlhBbSrZkHXMyApdQXy32o-pKI0QBqK6ajzSypsQex6zwV-QomPoLEuhIINcNVlOZfMeK3MRyLf8SmzYwAokhI-SVvix-Ev7UR8fHagS26OEb_AG4ttGxZiODPCAiNsJROzGj9LjusmaeFXuNlKj9evZlRTDCrA6hCwWPMAei_TzPpG_8TEceTwzb2acNE6SueKMb7lIqFU2kXsQngD4h7Uo-rGWL_THN5Vg75mEeCqh2xiqMsLABY-w3v31s0p5hxgn8bhLLlS0cWfAXZ_LtUs3JlAMDzncybYY6Y4eUAln98r3UigxWFzwxzxfJukJ9Xr74WA3L7T9K0RBb6cC5OiWDjXfbcNmZB0sN48dUMVyp6w_6YAWAKWUuBMO6sBBxZ4A40ZswXHpNlOzoJPV3Zf70kpFI-G-zsdcPB21JSuYxOUthp24hfn5ywkbQPeNSAgi7PcI9rJaSryeJzRgmWmDmYFC-XMOEbe-tD_zI3YqtekaBWq9_oXXzZe3FfbvUYWeCYJYp5ODNWGAHr6nt22AJ-mG0nIdGDUmVZbWfnhXyX5gUyWpdcVbe8i2ebGtPu8rDV4epC9NL4Sy6lvOWms1hc4Nja_uynZb4QcAqoYzP5djPEzTdemtZmhbODMG-cC0ymYhwNqjG29Kpv_PoYx-d0ZQbpFntDPUeb65H9WdX9wZqKmZLpJ5y00TMCZ5lGpb3pleyASAfSJoRcp6dQN4FArtb-LmiLBNpaZVOOg9m921ncZ7Gg5M9cqv_fnvkQPbtDigzu0TDTUMAjNzDRY2TyDC4-XhHYwmvmptAVLHmR0KunAzd4Td5fEQjblRP6G25Tk_jOZSIdC9mATwY_FdXnPfQYPw_fkDWGdAAy3FXkuLUAXZZUU9K_CxyxmC4UNS0k_yslwSdWMmMl_nFDT8CIpYc8aRrJlNU9RG04i0V1QSuZ0lmJkprJsqga9IRz5tLRdIJ9fazjsaLU8scM6JRkbEMf30HpbpWeRSMk097SmsHJqSx0GfmW_n3q0JGAPNVO3M6fh9L0I9kuaOWYg6uLJm7sWs_pamjlLMqJOvN2j4RxGc5QkF7eN3wlPuV7YkWDHU1ntGDzH95f5NgVTjXVTlEuqI5obRO-DdK82xdWpS-jTMMoqC7tiPMS5E8zHh_cAWldXcrWN5kOVJLJpn-n4WFC_hzf8q4uC3uarCALwmzIiA9bYEPS5_Xw0j6bFgLeEcynrFvmBjVEG3AVUParj-9Goc4kRply59MRHZeP59mZvn8wqT4HkGyNFvc3ZUfZrKr2Xdv2gZsMRx2D8vd0K6O6N9ihhfuk7lmhizSrIeHw_fuC_gzSrj-oYHmcLIQTTz9W5sgJI-6z-zskL7wFkV2vWiym747JTLG6p8GjQQeQ5pVOw2fDuYQSq5_ZzmMdJlU2dNg09CuO0fR9Zek9mgoefgXplh0-o3rGiaLreGL51Mxe1OGVlcolzDYw_IXeS4SYv6jh0ak_oCvFLIEM6y_BXx_bO3tk_R9BD6f3TO6IMTTuSLlO5IymvH-rTmuhqH2LVCDdSbCLSQ1qUAudbvomaro2CCD_bBJgqafe-x-DXWsuxBufEqqjl0g-oFjYRnf075VhGz-JqFAaOFcVKarF6K7srK3h3geKztlwQdt3NLl4wL5NYWMZ6yYloHDjh6oB2qOX9m27hD6Al4aW-X5r7aVekuDHUIF3cW3Isvtj2xeoKBqc-8l2tmKrvGmJReeWa0wf1MgHxZGjvSN-EvhCNsN40cZm6bdxVijQlPsHE83qLwN8SmVBbbWkp3IXEsLIDk1Ajnea8yi_MiHtHbOqXOFbc3W9Na-hOBNcmA6KruZkLcLULCHatVKhfreqBXQOzKnO_mHrOA0ORyiB6IXK-01DRJ-OUldKZrZ2KehkV3CtnT2y6P4Up8lXEZ4aKYyboEnmDUqJTuwO6_-b65b2qP6Gs3VPUCv8JQ3Q_uMcvGy_cIpd_xsi2VNf0k2hskpdRLJBRhULKQQVTYtYEanHatZPKQj2l6PFHQWCDnkS815BpEeNAIxecfAFElyxn21J4QIE53G6yJBC1wYgBlKXI1s7pOABdcQqBI5P0zBNRZqFUFPO83EIwCRAjGHCH-KdtFPmCB7ZktwEvAHiF0rnaMnpxdHFo-Vy_JjJeaOK9cvV6P24knAza7SI99xN5eX2euuFH7pQC6N7_TH3ZCHkm_oosUiPVJU699OmlIpRMXJNksqtQfhGOb0HjhkhHbp3xt4HfAq5XxzKqcLVHc8lNAsumN29kEOpuC2TrW9UdgF6pAXZ-xFaAPvq2VNdaHjwCpxwEq3GAu8vMHwV9Rx-j6cB-Ulr-WH0wKtzvhsQnhPYMA3lTmCJfw_mez4ji1UfE_yeHKZwTR3KWrbi0L4ZpqqIs6oCleoGOE1rAuugk9n3LRsbAdGDjdf0jfo6IDupJIXOHtVF2uuHA_hwcpehbm30cMSzEbgfA3u5F4v7EgL6AEUiB67jIJRgQJ0mlWds_r753993yqdWMziOHcIXu0ChXv23zoyIqdcLVDguVA6cBW7Dkg71ZnOby2rPSB2r_RODwvc9_S62rIP17X1B8JpVQFscKN8qYxT66PhTLXukKM5HmzAnHTRnVUB7p76YKqESBRydt_1RZduxcHpDjuz5ZNSLh0j1JfTDmNPuEhJioGDeGBug_OzqV_rvmKSrwNXj61piaWKm0FByuuEB5X8kfFnvKwxttyiYZz0NPHZPFyv74UNGLOz5yCBMkMLIY8a1eiNC4VTZt6ppHRyIT74TdA4OCCLTID6_npt5gt66WpCXmi0ag8jEYf0ZoLqJEMaIPG3pAHkts16FxL-s1wlbIsVdcGOtGpINXj8d6Oe6Jdrlgeba0uNfasigcmoFsIvLVgPJ_X81-QM3LFR_0ANFNNWbTf9C0xZNy7x8JjMmTBbaBot-I7q7hodrCprqdDJ5kYcgbK1kbJDzN584Ojp6GILovMfeDyyjWaUSy5g5Ju_LFo0OFks2p3s5v9Wg5Z5q2Z5-bf3z3nuASZR6axMC2PGdch_NTN8NPAh8C-njKHXA8z62m5dy9kJNPzCqbaNqySAxCW_alEYpPW2IaxmsqgfNrupl3yknSpxFR0KZGOgDRc0JndrAj859XWhFj3tNZwIdJjHcEwhFZcpGNgrBEXSy1kC24Di6GJVnB_XIP6rSp5kCqH672eBqZ5FLaKYoF8JOIZq0gdIoKv5Ew-5LgJnZZrXOyKs-Q4uDtg1q0ToSirnYKafmwcx7w0wz83lZop3IJ1DSwxoDWVfgn5UzPfeRqehIqJx2daGJFaml3A76BnjT3YY-UUAp84MZLlx5FeXlzYvqK3Qi5I5RzHpN7P6NUibJM-i0G2ejmS3nhQdlqn2m7nlU6-10VFDDPoZqaUMmWPDIkmXcrZifV_c56S7o63HevKAScwxrbjoivaF105RSg7DTCQwEgrfMzJZfbT0NKyx4ZLrZ-3nA3JLhAGHS5l6PoBCJUL6_ZNq90hXI8nRVmam6svuoZ9H8kjsA3xP4mTYNLh2PfU_i6GrMUTmg2O9Dto994ggh_j2zJgP9U2X3D5WJrWJHP1IeNIS2YDgoDDtTs9mj7tKF4EhcWDlpihJmkJzFJZJ3RZ761Fa-B6DsxH5-4vesns_kGEhCNFXTjjjNmc9y8PTfjcgqVHnvoabRXHXaDQROZkPHNqf69y39FEUxjePW63mk-MeV7vcYdmlgxfdhyX-GoycoUPPpY5yVUez6auomjpB9hcUVdPXUE8Szg=\",\"summary\":[]},\"output_index\":0,\"sequence_number\":3}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"ig_0a372a7fcba6b284016a5ce5bf22e081a19e660657ce98596f\",\"type\":\"image_generation_call\",\"status\":\"in_progress\"},\"output_index\":1,\"sequence_number\":4}\n\nevent: response.image_generation_call.in_progress\ndata: {\"type\":\"response.image_generation_call.in_progress\",\"item_id\":\"ig_0a372a7fcba6b284016a5ce5bf22e081a19e660657ce98596f\",\"output_index\":1,\"sequence_number\":5}\n\nevent: response.image_generation_call.generating\ndata: {\"type\":\"response.image_generation_call.generating\",\"item_id\":\"ig_0a372a7fcba6b284016a5ce5bf22e081a19e660657ce98596f\",\"output_index\":1,\"sequence_number\":6}\n\nevent: response.image_generation_call.partial_image\ndata: {\"type\":\"response.image_generation_call.partial_image\",\"background\":\"opaque\",\"item_id\":\"ig_0a372a7fcba6b284016a5ce5bf22e081a19e660657ce98596f\",\"output_format\":\"jpeg\",\"output_index\":1,\"partial_image_b64\":\"/9j/4AAQSkZJRgABAQAAAQABAAD/63GmSlACEQAAAAEAAHGcanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAcXZqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjE4OTI0ZjJlLWE3MzgtNGY5MC1iYjEwLTg3MDZkYjg0YjU5OQAAACFRanVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNo67z35LsqLoVg7O+vcvLhRAAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAF+anVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2j+lf0LRwjwk6l99FttgUeWAAABNWNib3KhZ2FjdGlvbnODpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25jMi4wcWRpZ2l0YWxTb3VyY2VUeXBleEZodHRwOi8vY3YuaXB0Yy5vcmcvbmV3c2NvZGVzL2RpZ2l0YWxzb3VyY2V0eXBlL3RyYWluZWRBbGdvcml0aG1pY01lZGlhomZhY3Rpb25uYzJwYS5jb252ZXJ0ZWRkd2hlbsB0MjAyNi0wNy0xOVQwMDowMDowMFqiZmFjdGlvbngYYzJwYS53YXRlcm1hcmtlZC51bmJvdW5kZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBaAAAVDmp1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2iJ/+NtK3pzfjJ5leK6i9DYAAAUvWNib3KhaG9jc3BWYWxzgnkKdE1JSUgwd29CQUtDQ0I4d3dnZ2ZJQmdrckJnRUZCUWN3QVFFRWdnZTVNSUlIdFRDQjZhSVdCQlE5cXFwNGp2cjJUUHBlYXRGQVRRN2xWUElmcmhnUE1qQXlOakEzTVRnd09UQXlOVGxhTUlHWU1JR1ZNRWt3Q1FZRkt3NERBaG9GQUFRVTM0STNVMTVUMkRPeDRBUTlKRFh4ZGViaENoa0VGRGs5RUVmY2w0K3ZpSHROY3hnZHplWHVwS1VxQWhBTHBmenBEbkNNOGdXQU1lNUVIR1J6Z0FBWUR6SXdNall3TnpFNE1Ea3dNalU1V3FBUkdBOHlNREkyTURjeU5UQTVNREkxT0ZxaElqQWdNQjRHQ1NzR0FRVUZCekFCQmdRUkdBOHlNREUyTURjeU1EQTVNREkxT1ZxaEl6QWhNQjhHQ1NzR0FRVUZCekFCQWdRU0JCQnhhdGo5cHd3RUkwTTlyVExzNUg4Uk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQmdRQlo1Q0VxaVNQNEZ0c1prcGNhb3htanpqOElmTytLY2drajBRRDI1ZTJxUWY2bmdzVEVDSEIzQVlCY0pGeTRGanNWbVEyMlgxeHN3TEhzWHdlNi9JNFJnbWQxUmxQSGQ4QXBCUG9xWEJmTmNZRm9obEhYV2dPUnJqS0JzSkg1c1NVdWZZZmpoK1N1NkZNdTVyMFpyTnRuT3N5VUtMbHR0TUt6eStwQ3NYbWU5eDRLcHlrRnI1RS9tRjRvR0FlS29kKzAwTmpId2szUE13Z2hFR28yZDBhUy9PbTFKYWFybjN5YmZTVXp4MVczN2t2N2hTaWlSeDZMRWlTNWZlaVRVRDNDazZ6YXR3WUcrZXh4clFKci90WTFRQW95Y0hKMWh6cVRrQUxLa0xIZGNDbkZNQ3pYSGk5ZXhBRVNQNFU1cFBBV2VJVE9kZ1RXTDRmeGFOSUNFaFhHVDQ5Wk5nSUVmY3lDdnpZQkRYTWxKQ2ViNko1cTdwQUlYLzRxS2U0cklnRzZ3WDEwVUYrMkpHZmJISjRWeCtYN3NCSTZTT0Y5dEdxZ0ZBZlJmM0ozYWhJTmp5d2ZFRi9uMlRlM09tSXdRL0grMFJZTUF3ZjFKUndOMlB6UmdLT0JtSmdreExzTjhpcHhDY2Qrbm4zcDVkQzNlSkE0ek4vV2lLcXIxY3hZNklTZ2dnVXhNSUlGTFRDQ0JTa3dnZ01Sb0FNQ0FRSUNFRnBLc2ovUUtNYitTN00vYmozako3b3dEUVlKS29aSWh2Y05BUUVMQlFBd1NqRWhNQjhHQTFVRUF3d1lVMU5NTG1OdmJTQkRNbEJCSUVsRFFTQlNNU0F5TURJMU1SZ3dGZ1lEVlFRS0RBOVRVMHdnUTI5eWNHOXlZWFJwYjI0eEN6QUpCZ05WQkFZVEFsVlRNQjRYRFRJMk1ERXdNakl3TVRReE5Wb1hEVEkzTURFd01qSXdNVFF4TkZvd1RURUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQW9NQ0ZOVFRDQkRiM0p3TVNzd0tRWURWUVFERENKVFUwd3VZMjl0SUVNeVVFRWdTVU5CSUZJeElFOURVMUFnVW1WemNHOXVaR1Z5TUlJQm9qQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FZOEFNSUlCaWdLQ0FZRUFvbENUUWVaS1M5NExtNmFWZENaWVBPeFMvTHVVSFRMTkZNUEdVTi9Rdlp6R2JuQ0xJNWZYak83TUNIeFc3bWUrK1pyQWtyRHJ1cVV6LzIxcEZKQ0RMd2lJTFJYdHNFdGRIeXlidWJobEZ5Umo3aE93SkdDTkN1Z0YrSGtmeHROaE5WdU1CSmRZbjdPTVhOamt4cWJRUS9DenA5TlUyV3lJOXhpbnVNVFlidjB4S040T0NTNlFKL1Z6MlhlbTFWQ2FJTm04eXpMRlJybjhvbFVGVGU2Z202eG9hc0ViUHpncWVnYlkwMTI2dExNZTY1MVZLZTdzMGpjVW42N0ZOcW1jc0xmZVJDcUw2RkNuRVNBSWdBdDVleVhQMlRueW5rV2JkN29IZUFtZ3BrNTdRSTR4L2VvaWFJY1ZnTVNDSWVSUFd2SVI4NGdQcEV1SktuNU1KQUVtcWFDYUJNbWRmQVh1YTJLRklqSUI3dGJjSzlMZjFrWTBkcUNDS0hpT3ZpcmREaFRrMW1vcWQ5dDBlalVucG9jV0Y4RzRIdkE2VTRHcW10WXJrNi9qSDV1M1pkSW1NRXFsSEE2K3l2R0xmMW8wQWFhaDBnRUloWEk0V0RuRTdENHlIUitFM3pjVWVkWXcwemNiZU9ib3paTHBiaXNOYnV3dzZ6STRMcWs4MGkzbEFnTUJBQUdqZ1ljd2dZUXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RBV2dCUTVQUkJIM0plUHI0aDdUWE1ZSGMzbDdxU2xLakFQQmdrckJnRUZCUWN3QVFVRUFnVUFNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUZCd01KTUIwR0ExVWREZ1FXQkJROXFxcDRqdnIyVFBwZWF0RkFUUTdsVlBJZnJqQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFMdHpwbFdFbzJoUTZ4RHhvR3pYeVNtRW5UNm9MKzBLdXc2ZzY2dkx3UjY0QVlZRnR6QWxTRzN6RGVHOW9VMG8waXRsWUVUY3RvMnJWVC9YM1lVZS92Q1hXeVFzN0sxTEgwdjB1d242bnJEZ3NMRDlqa1J5dEk4TWF0MWo2T3V5MWd2VXgvSG5pdzdmMzJ6RUNhTDlQUjl6R3hGWXdTZ3BvbXRnYVRBcE8xVzBqS21rQ0pDcEVuQStibkxFZGh3d2FZSlBKYlJQVmM3cFNNOWZpd2QvemZCV2E5L2Nub1lmTnZBMWpzRTNsWE80N2JZWXFFUys5cGZlU1ErOGo2RStjaWZRUFNGOFVseFFxY2NWM0tuNzkyMndLZ2NtRUJTZ2xOOFZaSVdNcHoyS09qRUdkSkVoNFJqc1N0K0ZFV2pPWWFta2F6SXowMmpteWIrei9QK1Y4UnpYd2dWbFNteE9SLzZvWUpSM2FFSE9UaWhFcGNhWWg2ZzE4bzRHWnFva3ZXckJFcTRZSUd2ZWRLTjNKbVducGNJb0hTWDlQcW5sRkVtNUIvOTBhQlJ5UjFEN2RKb2lhSVVhakwrREFKelo0MjBOb2p4Y3gwNmxkdEwvd3FyRnJyVDhLa0pzSjZpMDFqbkxGNWxZeXdjTHc3SDhOdWcxMU10ZXlSR1ltTTdvZ29zUzdRdFlZYnBoa2RHcGVzaytXT0Q4bEVoTWRPYlAxSHl6QWZMb0kwdm9NR2dadXlmc3VmWUp0dTE1aytVS2dyWEg1eTRheG9Wcms2VkJXU21VdWxqVGI1Wk5uMUV6a1QvQXVGQWJ6N1c2WUlqcE53cE1scDhqZU5yQnlvN0ZsajVzK2w4QU4xYmZDUVlobUpKNTk4Qy80ODZTcHhTckxGYzlRZFFTaWVBL3kKME1JSUhuZ29CQUtDQ0I1Y3dnZ2VUQmdrckJnRUZCUWN3QVFFRWdnZUVNSUlIZ0RDQng2SVdCQlRhNWVlVXdkS1VTU3phRDBLd2o3NmNYM0JZcFJnUE1qQXlOakEzTVRnd09UQXlOVGxhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkthaUt0REhIckRSY0dvUGQ4Vnp5YU1yMTNGb0JCVDhLa3AxT29ENm1XT1Q4SE5YN0w2VHNIM0Rld0lVSnl0anlNd2RUUzJiaEZGeWJQU2NYakpScnQ2QUFCZ1BNakF5TmpBM01UZ3dPVEF5TlRsYW9CRVlEekl3TWpZd056STFNRGt3TWpVNFdxRWpNQ0V3SHdZSkt3WUJCUVVITUFFQ0JCSUVFRjd0MkFTQ0dpb0xDZ09ldzV5dWRXSXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JBTFExR3k0NDFBMWczQ1hodGJ0cVM0V0Mybmpndm5GdEQ0YlI0V1FQTTNBMHRuRG8zMnZ4Ykp1OHRyeFhWNGk3enpqTy91QkZXRVZaRzJ3ckp6aitBMVM5aVNkNU9oSUhZaFhZQjFab0xFandZUDU4RnFSUldDRkNTK2lGd05FcnZHQmxDNUR4Vlh0c3Q4VTliTWF5RExsemo2amRQbTFFVDVIR3JkR3Y1WFlXS3U4MHBZY2RNaWE3ZCt4ZlZzcWtQZzFVTDVjVHZoazhqOVY3eDFmb2hPUzQ3RzV0cG4yako1TzdZcXg1Z1BrRW9Dd202ZGdiN1ZLUEhWWjZQem93dlI1cnIrTlhKT1lRd09KOXZyQzJRYS9TK1JjaUlvcWRGZHE5YSsrZGp3L1dZOFI2bWY3N0UvbDcyM1lYQ2xNeEZzbVBVNHgvNmZZNEJWSEhoSVZqMXJsNDd4d0pHM0orTVJSVE5rcGE5VTJEWlpyd3JoV1hxc2JMemg4Nzl1Z3FxNHYzMlR2a0tpa01VV05PaHlWeGphYTFqVG5FbjNrODVLOU9OcFhqaU5ncjFCOXpRT1FkRGNYemFzd2NMQlpYWDd0cElSM281YXVLL08vRklzazcwaE80c3NraHBLak80dXcrcnp0SE1NTCsyeExqY0hDRlVMR3k2d0dQTDZ2QTZxQ0NCUjR3Z2dVYU1JSUZGakNDQXY2Z0F3SUJBZ0lRVkdZd0l0eThXUDRVdTF5Tm5YRU4zVEFOQmdrcWhraUc5dzBCQVFzRkFEQlBNU1l3SkFZRFZRUUREQjFUVTB3dVkyOXRJRU15VUVFZ1VsTkJJRkp2YjNRZ1EwRWdNakF5TlRFWU1CWUdBMVVFQ2d3UFUxTk1JRU52Y25CdmNtRjBhVzl1TVFzd0NRWURWUVFHRXdKVlV6QWVGdzB5TmpBME1UVXlNVFEwTWpKYUZ3MHlOekEwTVRVeU1UUTBNakZhTUVVeEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUtEQWhUVTB3Z1EyOXljREVqTUNFR0ExVUVBd3dhVTFOTUxtTnZiUzFETWxCQkxWSnZiM1F0TWpBeU5TMVNVMEV3Z2dHaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQmp3QXdnZ0dLQW9JQmdRQzdSeTZseHpDUWYvSWlZSmNHQm56eGY1SndWbFN0MVB6QnZEaE5lV0xpcVA0QkI5THorbk1SK2hLTVdFRk1ZNkg4bjYrOU5HbWJnaUFjZDVpbkJ1dEVDTWhNVDJMWDNaeUovREU4TWJMbkRkZk9YYmpZTVVmTVd2ZWdCMWJTSS9hUE8wNm5kYi8vbWpnQ0dXeHpmRzZtQ0lpSWZRdUorbm82b2lSUXVhSW1OWVM4aDA5eWpnVTU3OWROZVVjUW9QRzNhdmU3OE8zbjZQZFV2S2pNOE1NREF2MTF3WXV4QXhicDJJL0Rkd0RaSng1NUQzaEYza0t4MU54T0lxaG42NmU0R3liMVY1WndrUTBrdVRBT0g2MklsU1BwcWYxMldPQXoyVkZIWVNaSEE4Sk5kaWNZMHEwZ1RtbWV0YVBNM1laMjJHQmdwbGt6Y3hSbU1rRDJzdmxmQWRrb01aQTVhRDBPbjAzSlErSGUyV255STVCRWh5TWN3SWJEeHhGU3QwZG9rM0REb3R0VVdtZnl0dEVzV205d0hrNlhLUmluZlJ2M0d1OEtJN1dSMXJKVk9idGtrUm92bXBUb2d6bTR4dk0rbG8zNXVYSUxzVWIrYUhhWjNyVWhqRCtJSGllaW5iY3BIaFVkN21tamZQczB2Tkdaaklna1VOdXNTaGpWODhFQ0F3RUFBYU40TUhZd0h3WURWUjBqQkJnd0ZvQVUvQ3BLZFRxQStwbGprL0J6Vit5K2s3Qjl3M3N3RHdZSkt3WUJCUVVITUFFRkJBSUZBREFUQmdOVkhTVUVEREFLQmdnckJnRUZCUWNEQ1RBZEJnTlZIUTRFRmdRVTJ1WG5sTUhTbEVrczJnOUNzSSsrbkY5d1dLVXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQ3l0TkQwOHQvZDBUSFU5N1U3L2E4ejVHMmp0R2owSmgzY3NNSC9QcGVZd0hUZnNzSjNvbkxiTy9EMERjZHp4U0hNeXVaR3JwY1RZUlFmQXJ6RnRVejV3UlV5QlVJcVZRMFBnMVppT0tQa0xXUjBUYWhYcmpoRlZCeHRWNWk1MXpUdk9PeXBZbUJHUkpSZVhPeXpVclFwWndNSldCSEYyaHhLVjhrTUFlSkdzVUQxWGhUeXpFdktOU1ZYZnNid2QvSWNwRUZPL01nWFQvVmZjN3BrQ1hZMStsQ2RDZnhOUnBUMExLdE1TbWkyWCtmVzJYVnlUbXE0c2pma1V5akI2VC95L005THVrZmFJb2MvNUp6alVrVmpmT2wxaHRoZkNYYWF6S1NYU3AzdytrZlBJYVRDVHJwZmgzc2xzbHdoWHFNbzVKcnUzVk9WMVROK0FGcUpsWXMzZGFoaEVvMTVLOTkvdC84cWdxeGQrVmdWK1B0Q0g2dWttSCs0bFMzL0ZxZ1F4eGs3VGUvQ1pxcnVFMGpXcjVidVd5SXF4U2pHcWFGZWlJT0luREVTVXFxTWhoemNyNjNIaFNnTEdHaUhpbllFbEo0SGxqY3k5S1FBR2xidkIvcEN0WVpRUllUV3R6bUhSRmYwQnYxUE1YZVZ5Sk9nSldzZU1FYm1Ic21HQmkrWitUYkRVWlQ1OGJDTU1iYUFlQ2l2cDV1eW1YdW5GV1FPaUNJclZBbjlJZ0M1bFFyNWFHeklwamZTL3BYOXB2WjJHT0pVTkpndkdLbGFWK1EvTlpYMHUvV0FTcllRVVNTeDJnVC9WUE41TjIzendsSlNjays1eGpmbnFnNElRRG9XekFsa0U1S0RTeWlxQWNuOVZ5VGRrWTRNM1VIU3NjQWRmcDZNQU9aVmx3PT0AAADDanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaKzEVW7RIfl02KGNZDdCvvQAAAB7Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZcahkbmFtZW5qdW1iZiBtYW5pZmVzdGNhbGdmc2hhMjU2ZGhhc2hYIGUd3Q8WVSfx91zZvNzz0nvklixhs7T3KRc8/DNzGXGcY3BhZEkAAAAAAAAAAAAAAAMbanVtYgAAACdqdW1kYzJjbAARABCAAACqADibcQNjMnBhLmNsYWltLnYyAAAAAuxjYm9ypmppbnN0YW5jZUlEeCx4bXA6aWlkOmIyOTc1MmY2LTU3MTctNDEwYy1iYjk0LTkyZDkzNzE0M2Y1NnRjbGFpbV9nZW5lcmF0b3JfaW5mb6RkbmFtZXgYT3BlbkFJIE1lZGlhIFNlcnZpY2UgQVBJZGljb26iY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIFe4aYSgE0XUyKdIdMJaRg17CTH84WdOvlzBRFBgLm4Ed29yZy5jb250ZW50YXV0aC5jMnBhX3JzZjAuNzkuMmtzcGVjVmVyc2lvbmUyLjIuMGlzaWduYXR1cmV4TXNlbGYjanVt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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2WQEAD5CfVJp4uiaZuKpR4iCNQzqcdih5Ys2AT08VMqEgdwjhfEtAVhK9s6Vom+zFOT/ryd4t368R2EEmAym4DaH3jX6/0PoZYRRkUqDtgKU68nOCgAbWD9nhPE7XTR1Uf7IXfPI93ucZZpblztCFvSeQtqg+GhzrjmlJljPcmrLfHUwbm1Fh78NdZCJfvtnXWMr4K3Ond6QEFiFPtMoZN0iVJfHJIJrGqwZfxRucWWRt9/91t1XYngTEHXKo2IQMUE3mxi1ijtcf/ySgs/fCk8wxSUdz8ISm+wKfM4J6Qdi5jPKYPdJPZO1OhrmQcSMcEA+qI+EAqee/89MWFdAEfwqUov/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIBAAEAAMBIgACEQEDEQH/xAAZAAEAAwEBAAAAAAAAAAAAAAAAAQMEBQL/xAApEAEAAgEBCQACAwEBAQAAAAAAAQMCMQQREhMUIUFSoTJxQ4GxImGR/8QAGAEBAAMBAAAAAAAAAAAAAAAAAAECAwT/xAAcEQEBAAIDAQEAAAAAAAAAAAAAAQIRAxJRQSH/2gAMAwEAAhEDEQA/ANoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/9k=\",\"partial_image_index\":0,\"quality\":\"low\",\"sequence_number\":7,\"size\":\"1024x1024\"}\n\nevent: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"ig_0a372a7fcba6b284016a5ce5bf22e081a19e660657ce98596f\",\"type\":\"image_generation_call\",\"status\":\"generating\",\"action\":\"edit\",\"background\":\"opaque\",\"output_format\":\"jpeg\",\"quality\":\"low\",\"result\":\"/9j/4AAQSkZJRgABAQAAAQABAAD/63GmSlACEQAAAAEAAHGcanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAcXZqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjE4OTI0ZjJlLWE3MzgtNGY5MC1iYjEwLTg3MDZkYjg0YjU5OQAAACFRanVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNo67z35LsqLoVg7O+vcvLhRAAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAF+anVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2j+lf0LRwjwk6l99FttgUeWAAABNWNib3KhZ2FjdGlvbnODpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25jMi4wcWRpZ2l0YWxTb3VyY2VUeXBleEZodHRwOi8vY3YuaXB0Yy5vcmcvbmV3c2NvZGVzL2RpZ2l0YWxzb3VyY2V0eXBlL3RyYWluZWRBbGdvcml0aG1pY01lZGlhomZhY3Rpb25uYzJwYS5jb252ZXJ0ZWRkd2hlbsB0MjAyNi0wNy0xOVQwMDowMDowMFqiZmFjdGlvbngYYzJwYS53YXRlcm1hcmtlZC51bmJvdW5kZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBaAAAVDmp1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2iJ/+NtK3pzfjJ5leK6i9DYAAAUvWNib3KhaG9jc3BWYWxzgnkKdE1JSUgwd29CQUtDQ0I4d3dnZ2ZJQmdrckJnRUZCUWN3QVFFRWdnZTVNSUlIdFRDQjZhSVdCQlE5cXFwNGp2cjJUUHBlYXRGQVRRN2xWUElmcmhnUE1qQXlOakEzTVRnd09UQXlOVGxhTUlHWU1JR1ZNRWt3Q1FZRkt3NERBaG9GQUFRVTM0STNVMTVUMkRPeDRBUTlKRFh4ZGViaENoa0VGRGs5RUVmY2w0K3ZpSHROY3hnZHplWHVwS1VxQWhBTHBmenBEbkNNOGdXQU1lNUVIR1J6Z0FBWUR6SXdNall3TnpFNE1Ea3dNalU1V3FBUkdBOHlNREkyTURjeU5UQTVNREkxT0ZxaElqQWdNQjRHQ1NzR0FRVUZCekFCQmdRUkdBOHlNREUyTURjeU1EQTVNREkxT1ZxaEl6QWhNQjhHQ1NzR0FRVUZCekFCQWdRU0JCQnhhdGo5cHd3RUkwTTlyVExzNUg4Uk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQmdRQlo1Q0VxaVNQNEZ0c1prcGNhb3htanpqOElmTytLY2drajBRRDI1ZTJxUWY2bmdzVEVDSEIzQVlCY0pGeTRGanNWbVEyMlgxeHN3TEhzWHdlNi9JNFJnbWQxUmxQSGQ4QXBCUG9xWEJmTmNZRm9obEhYV2dPUnJqS0JzSkg1c1NVdWZZZmpoK1N1NkZNdTVyMFpyTnRuT3N5VUtMbHR0TUt6eStwQ3NYbWU5eDRLcHlrRnI1RS9tRjRvR0FlS29kKzAwTmpId2szUE13Z2hFR28yZDBhUy9PbTFKYWFybjN5YmZTVXp4MVczN2t2N2hTaWlSeDZMRWlTNWZlaVRVRDNDazZ6YXR3WUcrZXh4clFKci90WTFRQW95Y0hKMWh6cVRrQUxLa0xIZGNDbkZNQ3pYSGk5ZXhBRVNQNFU1cFBBV2VJVE9kZ1RXTDRmeGFOSUNFaFhHVDQ5Wk5nSUVmY3lDdnpZQkRYTWxKQ2ViNko1cTdwQUlYLzRxS2U0cklnRzZ3WDEwVUYrMkpHZmJISjRWeCtYN3NCSTZTT0Y5dEdxZ0ZBZlJmM0ozYWhJTmp5d2ZFRi9uMlRlM09tSXdRL0grMFJZTUF3ZjFKUndOMlB6UmdLT0JtSmdreExzTjhpcHhDY2Qrbm4zcDVkQzNlSkE0ek4vV2lLcXIxY3hZNklTZ2dnVXhNSUlGTFRDQ0JTa3dnZ01Sb0FNQ0FRSUNFRnBLc2ovUUtNYitTN00vYmozako3b3dEUVlKS29aSWh2Y05BUUVMQlFBd1NqRWhNQjhHQTFVRUF3d1lVMU5NTG1OdmJTQkRNbEJCSUVsRFFTQlNNU0F5TURJMU1SZ3dGZ1lEVlFRS0RBOVRVMHdnUTI5eWNHOXlZWFJwYjI0eEN6QUpCZ05WQkFZVEFsVlRNQjRYRFRJMk1ERXdNakl3TVRReE5Wb1hEVEkzTURFd01qSXdNVFF4TkZvd1RURUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQW9NQ0ZOVFRDQkRiM0p3TVNzd0tRWURWUVFERENKVFUwd3VZMjl0SUVNeVVFRWdTVU5CSUZJeElFOURVMUFnVW1WemNHOXVaR1Z5TUlJQm9qQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FZOEFNSUlCaWdLQ0FZRUFvbENUUWVaS1M5NExtNmFWZENaWVBPeFMvTHVVSFRMTkZNUEdVTi9Rdlp6R2JuQ0xJNWZYak83TUNIeFc3bWUrK1pyQWtyRHJ1cVV6LzIxcEZKQ0RMd2lJTFJYdHNFdGRIeXlidWJobEZ5Umo3aE93SkdDTkN1Z0YrSGtmeHROaE5WdU1CSmRZbjdPTVhOamt4cWJRUS9DenA5TlUyV3lJOXhpbnVNVFlidjB4S040T0NTNlFKL1Z6MlhlbTFWQ2FJTm04eXpMRlJybjhvbFVGVGU2Z202eG9hc0ViUHpncWVnYlkwMTI2dExNZTY1MVZLZTdzMGpjVW42N0ZOcW1jc0xmZVJDcUw2RkNuRVNBSWdBdDVleVhQMlRueW5rV2JkN29IZUFtZ3BrNTdRSTR4L2VvaWFJY1ZnTVNDSWVSUFd2SVI4NGdQcEV1SktuNU1KQUVtcWFDYUJNbWRmQVh1YTJLRklqSUI3dGJjSzlMZjFrWTBkcUNDS0hpT3ZpcmREaFRrMW1vcWQ5dDBlalVucG9jV0Y4RzRIdkE2VTRHcW10WXJrNi9qSDV1M1pkSW1NRXFsSEE2K3l2R0xmMW8wQWFhaDBnRUloWEk0V0RuRTdENHlIUitFM3pjVWVkWXcwemNiZU9ib3paTHBiaXNOYnV3dzZ6STRMcWs4MGkzbEFnTUJBQUdqZ1ljd2dZUXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RBV2dCUTVQUkJIM0plUHI0aDdUWE1ZSGMzbDdxU2xLakFQQmdrckJnRUZCUWN3QVFVRUFnVUFNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUZCd01KTUIwR0ExVWREZ1FXQkJROXFxcDRqdnIyVFBwZWF0RkFUUTdsVlBJZnJqQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFMdHpwbFdFbzJoUTZ4RHhvR3pYeVNtRW5UNm9MKzBLdXc2ZzY2dkx3UjY0QVlZRnR6QWxTRzN6RGVHOW9VMG8waXRsWUVUY3RvMnJWVC9YM1lVZS92Q1hXeVFzN0sxTEgwdjB1d242bnJEZ3NMRDlqa1J5dEk4TWF0MWo2T3V5MWd2VXgvSG5pdzdmMzJ6RUNhTDlQUjl6R3hGWXdTZ3BvbXRnYVRBcE8xVzBqS21rQ0pDcEVuQStibkxFZGh3d2FZSlBKYlJQVmM3cFNNOWZpd2QvemZCV2E5L2Nub1lmTnZBMWpzRTNsWE80N2JZWXFFUys5cGZlU1ErOGo2RStjaWZRUFNGOFVseFFxY2NWM0tuNzkyMndLZ2NtRUJTZ2xOOFZaSVdNcHoyS09qRUdkSkVoNFJqc1N0K0ZFV2pPWWFta2F6SXowMmpteWIrei9QK1Y4UnpYd2dWbFNteE9SLzZvWUpSM2FFSE9UaWhFcGNhWWg2ZzE4bzRHWnFva3ZXckJFcTRZSUd2ZWRLTjNKbVducGNJb0hTWDlQcW5sRkVtNUIvOTBhQlJ5UjFEN2RKb2lhSVVhakwrREFKelo0MjBOb2p4Y3gwNmxkdEwvd3FyRnJyVDhLa0pzSjZpMDFqbkxGNWxZeXdjTHc3SDhOdWcxMU10ZXlSR1ltTTdvZ29zUzdRdFlZYnBoa2RHcGVzaytXT0Q4bEVoTWRPYlAxSHl6QWZMb0kwdm9NR2dadXlmc3VmWUp0dTE1aytVS2dyWEg1eTRheG9Wcms2VkJXU21VdWxqVGI1Wk5uMUV6a1QvQXVGQWJ6N1c2WUlqcE53cE1scDhqZU5yQnlvN0ZsajVzK2w4QU4xYmZDUVlobUpKNTk4Qy80ODZTcHhTckxGYzlRZFFTaWVBL3kKME1JSUhuZ29CQUtDQ0I1Y3dnZ2VUQmdrckJnRUZCUWN3QVFFRWdnZUVNSUlIZ0RDQng2SVdCQlRhNWVlVXdkS1VTU3phRDBLd2o3NmNYM0JZcFJnUE1qQXlOakEzTVRnd09UQXlOVGxhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkthaUt0REhIckRSY0dvUGQ4Vnp5YU1yMTNGb0JCVDhLa3AxT29ENm1XT1Q4SE5YN0w2VHNIM0Rld0lVSnl0anlNd2RUUzJiaEZGeWJQU2NYakpScnQ2QUFCZ1BNakF5TmpBM01UZ3dPVEF5TlRsYW9CRVlEekl3TWpZd056STFNRGt3TWpVNFdxRWpNQ0V3SHdZSkt3WUJCUVVITUFFQ0JCSUVFRjd0MkFTQ0dpb0xDZ09ldzV5dWRXSXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JBTFExR3k0NDFBMWczQ1hodGJ0cVM0V0Mybmpndm5GdEQ0YlI0V1FQTTNBMHRuRG8zMnZ4Ykp1OHRyeFhWNGk3enpqTy91QkZXRVZaRzJ3ckp6aitBMVM5aVNkNU9oSUhZaFhZQjFab0xFandZUDU4RnFSUldDRkNTK2lGd05FcnZHQmxDNUR4Vlh0c3Q4VTliTWF5RExsemo2amRQbTFFVDVIR3JkR3Y1WFlXS3U4MHBZY2RNaWE3ZCt4ZlZzcWtQZzFVTDVjVHZoazhqOVY3eDFmb2hPUzQ3RzV0cG4yako1TzdZcXg1Z1BrRW9Dd202ZGdiN1ZLUEhWWjZQem93dlI1cnIrTlhKT1lRd09KOXZyQzJRYS9TK1JjaUlvcWRGZHE5YSsrZGp3L1dZOFI2bWY3N0UvbDcyM1lYQ2xNeEZzbVBVNHgvNmZZNEJWSEhoSVZqMXJsNDd4d0pHM0orTVJSVE5rcGE5VTJEWlpyd3JoV1hxc2JMemg4Nzl1Z3FxNHYzMlR2a0tpa01VV05PaHlWeGphYTFqVG5FbjNrODVLOU9OcFhqaU5ncjFCOXpRT1FkRGNYemFzd2NMQlpYWDd0cElSM281YXVLL08vRklzazcwaE80c3NraHBLak80dXcrcnp0SE1NTCsyeExqY0hDRlVMR3k2d0dQTDZ2QTZxQ0NCUjR3Z2dVYU1JSUZGakNDQXY2Z0F3SUJBZ0lRVkdZd0l0eThXUDRVdTF5Tm5YRU4zVEFOQmdrcWhraUc5dzBCQVFzRkFEQlBNU1l3SkFZRFZRUUREQjFUVTB3dVkyOXRJRU15VUVFZ1VsTkJJRkp2YjNRZ1EwRWdNakF5TlRFWU1CWUdBMVVFQ2d3UFUxTk1JRU52Y25CdmNtRjBhVzl1TVFzd0NRWURWUVFHRXdKVlV6QWVGdzB5TmpBME1UVXlNVFEwTWpKYUZ3MHlOekEwTVRVeU1UUTBNakZhTUVVeEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUtEQWhUVTB3Z1EyOXljREVqTUNFR0ExVUVBd3dhVTFOTUxtTnZiUzFETWxCQkxWSnZiM1F0TWpBeU5TMVNVMEV3Z2dHaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQmp3QXdnZ0dLQW9JQmdRQzdSeTZseHpDUWYvSWlZSmNHQm56eGY1SndWbFN0MVB6QnZEaE5lV0xpcVA0QkI5THorbk1SK2hLTVdFRk1ZNkg4bjYrOU5HbWJnaUFjZDVpbkJ1dEVDTWhNVDJMWDNaeUovREU4TWJMbkRkZk9YYmpZTVVmTVd2ZWdCMWJTSS9hUE8wNm5kYi8vbWpnQ0dXeHpmRzZtQ0lpSWZRdUorbm82b2lSUXVhSW1OWVM4aDA5eWpnVTU3OWROZVVjUW9QRzNhdmU3OE8zbjZQZFV2S2pNOE1NREF2MTF3WXV4QXhicDJJL0Rkd0RaSng1NUQzaEYza0t4MU54T0lxaG42NmU0R3liMVY1WndrUTBrdVRBT0g2MklsU1BwcWYxMldPQXoyVkZIWVNaSEE4Sk5kaWNZMHEwZ1RtbWV0YVBNM1laMjJHQmdwbGt6Y3hSbU1rRDJzdmxmQWRrb01aQTVhRDBPbjAzSlErSGUyV255STVCRWh5TWN3SWJEeHhGU3QwZG9rM0REb3R0VVdtZnl0dEVzV205d0hrNlhLUmluZlJ2M0d1OEtJN1dSMXJKVk9idGtrUm92bXBUb2d6bTR4dk0rbG8zNXVYSUxzVWIrYUhhWjNyVWhqRCtJSGllaW5iY3BIaFVkN21tamZQczB2Tkdaaklna1VOdXNTaGpWODhFQ0F3RUFBYU40TUhZd0h3WURWUjBqQkJnd0ZvQVUvQ3BLZFRxQStwbGprL0J6Vit5K2s3Qjl3M3N3RHdZSkt3WUJCUVVITUFFRkJBSUZBREFUQmdOVkhTVUVEREFLQmdnckJnRUZCUWNEQ1RBZEJnTlZIUTRFRmdRVTJ1WG5sTUhTbEVrczJnOUNzSSsrbkY5d1dLVXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQ3l0TkQwOHQvZDBUSFU5N1U3L2E4ejVHMmp0R2owSmgzY3NNSC9QcGVZd0hUZnNzSjNvbkxiTy9EMERjZHp4U0hNeXVaR3JwY1RZUlFmQXJ6RnRVejV3UlV5QlVJcVZRMFBnMVppT0tQa0xXUjBUYWhYcmpoRlZCeHRWNWk1MXpUdk9PeXBZbUJHUkpSZVhPeXpVclFwWndNSldCSEYyaHhLVjhrTUFlSkdzVUQxWGhUeXpFdktOU1ZYZnNid2QvSWNwRUZPL01nWFQvVmZjN3BrQ1hZMStsQ2RDZnhOUnBUMExLdE1TbWkyWCtmVzJYVnlUbXE0c2pma1V5akI2VC95L005THVrZmFJb2MvNUp6alVrVmpmT2wxaHRoZkNYYWF6S1NYU3AzdytrZlBJYVRDVHJwZmgzc2xzbHdoWHFNbzVKcnUzVk9WMVROK0FGcUpsWXMzZGFoaEVvMTVLOTkvdC84cWdxeGQrVmdWK1B0Q0g2dWttSCs0bFMzL0ZxZ1F4eGs3VGUvQ1pxcnVFMGpXcjVidVd5SXF4U2pHcWFGZWlJT0luREVTVXFxTWhoemNyNjNIaFNnTEdHaUhpbllFbEo0SGxqY3k5S1FBR2xidkIvcEN0WVpRUllUV3R6bUhSRmYwQnYxUE1YZVZ5Sk9nSldzZU1FYm1Ic21HQmkrWitUYkRVWlQ1OGJDTU1iYUFlQ2l2cDV1eW1YdW5GV1FPaUNJclZBbjlJZ0M1bFFyNWFHeklwamZTL3BYOXB2WjJHT0pVTkpndkdLbGFWK1EvTlpYMHUvV0FTcllRVVNTeDJnVC9WUE41TjIzendsSlNjays1eGpmbnFnNElRRG9XekFsa0U1S0RTeWlxQWNuOVZ5VGRrWTRNM1VIU3NjQWRmcDZNQU9aVmx3PT0AAADDanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaKzEVW7RIfl02KGNZDdCvvQAAAB7Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZcahkbmFtZW5qdW1iZiBtYW5pZmVzdGNhbGdmc2hhMjU2ZGhhc2hYIGUd3Q8WVSfx91zZvNzz0nvklixhs7T3KRc8/DNzGXGcY3BhZEkAAAAAAAAAAAAAAAMbanVtYgAAACdqdW1kYzJjbAARABCAAACqADibcQNjMnBhLmNsYWltLnYyAAAAAuxjYm9ypmppbnN0YW5jZUlEeCx4bXA6aWlkOmIyOTc1MmY2LTU3MTctNDEwYy1iYjk0LTkyZDkzNzE0M2Y1NnRjbGFpbV9nZW5lcmF0b3JfaW5mb6RkbmFtZXgYT3BlbkFJIE1lZGlhIFNlcnZpY2UgQVBJZGljb26iY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIFe4aYSgE0XUyKdIdMJaRg17CTH84WdOvlzBRFBgLm4Ed29yZy5jb250ZW50YXV0aC5jMnBhX3JzZjAuNzkuMmtzcGVjVmVyc2lvbmUyLjIuMGlzaWduYXR1cmV4TXNlbGYjanVt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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2WQEAD5CfVJp4uiaZuKpR4iCNQzqcdih5Ys2AT08VMqEgdwjhfEtAVhK9s6Vom+zFOT/ryd4t368R2EEmAym4DaH3jX6/0PoZYRRkUqDtgKU68nOCgAbWD9nhPE7XTR1Uf7IXfPI93ucZZpblztCFvSeQtqg+GhzrjmlJljPcmrLfHUwbm1Fh78NdZCJfvtnXWMr4K3Ond6QEFiFPtMoZN0iVJfHJIJrGqwZfxRucWWRt9/91t1XYngTEHXKo2IQMUE3mxi1ijtcf/ySgs/fCk8wxSUdz8ISm+wKfM4J6Qdi5jPKYPdJPZO1OhrmQcSMcEA+qI+EAqee/89MWFdAEfwqUov/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIBAAEAAMBIgACEQEDEQH/xAAZAAEAAwEBAAAAAAAAAAAAAAAAAQMEBQL/xAApEAEAAgEBCQACAwEBAQAAAAAAAQMCMQQREhMUIUFSoTJxQ4GxImGR/8QAGAEBAAMBAAAAAAAAAAAAAAAAAAECAwT/xAAcEQEBAAIDAQEAAAAAAAAAAAAAAQIRAxJRQSH/2gAMAwEAAhEDEQA/ANoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/9k=\",\"revised_prompt\":\"Edit the provided image: change the solid black equilateral triangle to a flat solid blue triangle (use color #0000FF). Keep the triangle centered and the exact shape, size, and crisp edges as in the original. Preserve the plain white background (pure white). No shading, gradients, outlines, or texture—flat uniform blue fill. Maintain original image resolution and aspect ratio. Ensure anti-aliased clean edges.\",\"size\":\"1024x1024\"},\"output_index\":1,\"sequence_number\":8}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_0a372a7fcba6b284016a5ce5cc22f481a18bbb28bae4f0ce38\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":2,\"sequence_number\":9}\n\nevent: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_0a372a7fcba6b284016a5ce5cc22f481a18bbb28bae4f0ce38\",\"output_index\":2,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":10}\n\nevent: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_0a372a7fcba6b284016a5ce5cc22f481a18bbb28bae4f0ce38\",\"logprobs\":[],\"output_index\":2,\"sequence_number\":11,\"text\":\"\"}\n\nevent: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_0a372a7fcba6b284016a5ce5cc22f481a18bbb28bae4f0ce38\",\"output_index\":2,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":12}\n\nevent: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_0a372a7fcba6b284016a5ce5cc22f481a18bbb28bae4f0ce38\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"}],\"role\":\"assistant\"},\"output_index\":2,\"sequence_number\":13}\n\nevent: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0a372a7fcba6b284016a5ce5b6a12081a1be0e5db6b7067a0b\",\"object\":\"response\",\"created_at\":1784473014,\"status\":\"completed\",\"background\":false,\"completed_at\":1784473036,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":null,\"max_tool_calls\":null,\"model\":\"gpt-5-mini-2025-08-07\",\"moderation\":null,\"output\":[{\"id\":\"rs_0a372a7fcba6b284016a5ce5b7334081a1b3dc47c8448468b6\",\"type\":\"reasoning\",\"content\":[],\"encrypted_content\":\"gAAAAABqXOXMPG3ar_yhYbV9hXMqlRF9LZiYy0K1DHVeRg3CJAgnN8f--ijiLuuT9tlPsJaWLvSoiGxqFtHaUH1w-Msm38QXa2G5XMQlPmjkfevSwLrVavxhA8DFTwR_7kL9FSkvpQgATEMk12TCCOPLR7aZZBQKdz9OZXyD2OKYi5JEhZ-8QRR3DIW_LUIoQv5wkNA77zJ_WouJyCrsJ4cYkB6_3jLHUUTl0uieEswXEsq4UP_v9ffj1CyHfHBNwC1hjRkoIb1aEzW9DncsyHJUn7V-2lNg7aPSqRGKNxbz9931nyjfLEjQji-QW9XC0sEtORhDSPMJzokvmmvAtbEcR8fECguFiOz4SuSm3E3WbHfrvdAJKa5i4NpLluXpDRsRsb-L6O22BeU90JEJe69XLAC1nM7fp1W9mKxrHoplX1w0EzCfuSjvUjMO1GoTifVuBKOuwiry6NykzmpiiXVmej4qKX4o9K_YKN2QOK-u_f576lHDxDqHzeAz99bcqXVJtm5yDq-iIsOrg_CYpu0829lelz8mfgkK0426Icg3gzq09qWIZm7ly_VjOlLiqQJyzML-n20OzQBHXzYupeeicbx-qpxpxHsE6E5deHfSg-hKyLaBVLCIomd2V-EiObFW9hGc7HwMqz1ZGucNQ5hJtx-DxNzKG0z79vrvWo4qiPzsakHWL4AuhiPW4n8thbvLirRPDr2GOqBWI2wFySuUrMcceTxstivM2znrHEUcrbP19LI3y4cKQqHRwUUktxlC4vj99QApKsw26jNm-WQTuADFjYBYuEKLF2akU9Y5mvA3czEtK5lXFnDcUNwOB_Xn-va10N-g99e2pbm6CTXZjP0YjhnY5Ndx5czvksKhZabbtK4_pj3ha6NVhd59-erGAqZzJb6DuCbTwqw-HRa2gXIE011tOpGAbxp4OovBod7hDXOiJVk_qpEnjlxlZG0h7fHNVxU1Kf2Po7-VBo-4pPqU9pjG8Rk6TKqawlZ7ApZgMilUCEx4tVgiRUgSi_VgCA8X5_iW7ng24rfQ3PXUkm8Zn0Z860SJLRhsm_QlvzoJ3kXPmjOEcYI8gKtIjCzxpuu9JRZRBP4KQee3kk-yoQv0nTehVeTOCFbCRQ8xg6FwghAEEw9t6lN9spnDi9-S_mXgm9cezKFxQ1ai78WvWWTl4-om8DI0Qb82IxqASDhGPTgOX-bk8bXW-A80QXmbJm1aLDyKPztZ1jIWNY5Pcctba6nFK55ckd6EE8FptExQ-oTDsBFd_zbAh7DgA36ge9ZBXfMZ_8uhndX0YgWuALXfkP9XAfmTb_U0QJsSuk_7uKJ0TRgNBrIeeI90WRSwoDARh8wL-PLP_cl0u2tZGPHBo5Up75x_S3CX97jJ8_wOnzdwxbc-SJmBQ1FHRrib6s-7OT4IIpMunDb6cgqcE3kuazHG4sUqSD5k4CqvWl4lcc6DNtot9zJ3mXl-o1T1DfWhpa56kXkvC5DJwkGjej_ZeMeacHOKCXQwLMEMNheeRy-0_FhSH1ish-s7nwcLmWhZz6p6YVffFTTcHnKaFuYCcXPMDXcym1PFWJjxjwFJYTOOahtsBrVMx3Q1Hh7gZ83i4ND1JR7ezZp3Un_Gt_GnQL84QYYmqvordDxFh0mXGXXwza9ErAdco29q75qb-y-edT8OFY3VoPHCV6jgFUA8LgkFaI7-1mxoLBdHeflgxIcLoCFlsrCiuKtk2GDDIgIIeALA1JK7ePmsgSO-3nsHI2eMwpPdDHE8S4LnuY_e8zGw0T8xRN9STH6ug7dl-cNM50zCs4dPAaJXhL-tW33wjhuThxR5B_3j7keygP6k1pNNiyGuOUhuzGMHxKbhvmG_wD-fGT6hA3nX0d56JwqYYld8O6yQloBrDjJMSnshRHFg_FnCwboENZD0TTbKe6-9Y3L6rX_lWzFlsWWGTKjJ3fzuBrNfMunqoJOsVwYfmaECu5Wc1SuMpP6MWkn-J-pQWTT_b-SSDYCnok4xN09NgCCrtge5tDvnuwbeKeqNDLYlcDT-jxxFQN7R2PGbXxXezz-KJJxLzZxD7ImKN4WSDNXA__KaFgZ1S-icgSK2OjqwzqYi-onuluZPJguhRSsAEqmh50dQctpz6sb1UVgvzveCluuUuA-bveQ3382Vvmd01d35yRmpwHdxgnasJPq1hoG96qgORgAUZ6C1F4QyQRUvaO-XWzctSqOJKkcBdyfcKFjYOl3sCmR9H6NTEDhMkwczfEf4oET3W0kTEKlrhdHrp-02AHwmlNaCdoPQuyY4o86PSFZFwdvGdabBnU3K_FBr9UCURoRkZJRxeexBffWCFYTMSLFtFV_ZEXprLgkgb6LjybZ8srLbMgHE5AwqRUFMx_0kFmoMGN5OeKca3rIFsG7YURGsdaN6s22OLu_sgpk-y1S4fF6Cyy_b4AwiYRW4tzdkiQ11saUlI4q1_bPFhAtJ2_Fw9r6QSvViGgZFujXIMwral-8Nv1XZdT6w8ia-MLtb69eFiIq8wvnHgJfroeAbMZoF6CyORTWw6iM0ytb5sjSv28t28o-3X_r4zKjW4n-Q2e8ebiDRTsj0N81qGnmGtkzG4WmgQ116kQKiBITq2Gm3_HtTmLSKnz5OB505GF91NqDk-gHJk-1lC5xzCopnMdujJ2r_JrnysiUPRt4jwr2UJ5ZuhdUXNTVxuTO4OXhguZLz_Lb4Jzl4AEtoj8kr0jUwaddWyQWOFMjO2Oa5OSmP55nEkkZyHVa__0eT1UXAAWNOHn30doiyOQEuxh94d-Vhu9mTL0ftj12DKbb_f4vzNZtkkzxnS-e7-EL9STHwBiJlAJnm4sZTzoHOf88HJJfkCSPXkVdBHKKRiI81-jn2ZEAER22m02DzI4Mh0Ewdw9Wj2r5n0HZkKBI4TNiUqI-WKlptYhaJOwpa6zeMFYGF8_vah9wy_ef3APb623CF7-NNqJiQYdqq8auGuBhhRYCnU1ASwiWaOHVh5WkLwsTtKvHDAidTCUCN5e-Wm-y46CcMrmxUZZ2_498VT-iIplOuGig5aFKg9tzJwahpXlxAhxoyEXjxeG_ND7tgXS1AwORwvtiIOlv-J0pnPbw0U9UXXamuIZX3_xsaVil-JMDC_0Ee7f7klD0gUyeFBp2ZuaancXmqv58kN3m6fYGM1zxDGr_a25JJWGgowQ35PZt8tYWioAHCArqgYoCbV-uk3Gl0Y_PXc7kWIauhHbPXYJNYjm50u5TUwBo8MZA7TGZFFSLo1s9Eb9E-AVtfuA5Ag1A8e31yI7ifygerhIcaV66IefiSo0nG9LBdQBeLu-p35TvcPb5acfJdYUTmQ3Ans6UZSsNONgA3Yq0HdUG94_UWSS0FCetHrKm-ajS2mJ4ZF6MQ8ozGz2VN-_0OkOPgdniiVAu3F9gkKPGtjTQgjxtrgvkKvXgpnSMlTuDxAG8jLNRDZEVFNOg7D-27DDJeeAJhGlnDy2jQsq5D2szI4H7_sEXEIgcNqxDuzq3uKPagjFQM4Dj1BIKn3havdKzkQASGSdz1XoAvmDvUnc0zkIH6rZLp-tq4pS5LZCS_P8Lhcbjyb-Cw_DZi8iCuN1NfCmO9VFtxoUQCSkrt1e9UxxYcSPM1mugbsj4uo-6LVIe7uKcZ3VMjaerj-wNJmn0q9y60vlQL76JZOravQL1arK7CkqTKOs0YpkEmwBZkdBSbd0oRKNPoHkRuxQ3OpzSS-P-ZsP9rhqDK044u8s8X3K00DwF53rLvJTrRZYfzf7hymRYBjlXM1DQ7hreOqlFVBlOfv8Z7FaIVB28SIfrTB_GzmKPqy0FvxkwHGnLA8MLgGSxtxeALn0bxZblIiMtMG3xp7ZsmFInQ557YJc2itiTMdOg9UAKwsQjRe5UizldmKUUaVzfMlKWO5fCewHQ9REi9A3xx1CHLKr_IjSiRwSfbmkmEn0BJqkooAm2Lg1Gh9_lgDmPz9_kI3_aGn2pxyX2R85JElpeB4V-Ze085wrAq7mFDAP1XGai8FRxu0yZKDiCT_tjauLzs1l-SwM-tAZwzDOkogfFs7Hi8jVk3P58KamUVsua4mG-I_pfSgmwj3kkRgfN1ms_i76Yix8eVppxCnYXaiA4RbXXYtH0IEs6Z5V-W-4UY_ycKxjvOLxBqArXqSWX952-JYht9r1L6bP6jdV-V3l9P6McTAcjiOKaOfNuRN0AW1xfOGbaCAgb7bL1Ji-KrZfFpcFHvzyzkIo5kUikAc48ZG3Hp_voOE6YGTIcnhyiZSm9lvQKLigiT1f6zp2yKkCISsYN3twoYpDr4ZBicbFIhXav2fn59dtNfypTAPY5YEylch2--u3-7NEmIauzbqW3lIetzBAaRwlX_ZQHnx2eA2l8TM1cOIuOeJjQxweRR2LMNTQZMEwPsx3DYfCbdkJrPusXJuZ_QLoumDiF4tiHutM6spdPALnU9wGsfecce3-UW_6Xhp64hTaELYrB-_2kqhECY4PGPbwGZg9lU1AYeR-ibTJvrDUXZnbktxYXPXlyudxedWuIjPTCD_0h1ZfVgZAaSvMLH3kQE4h8kO4txZtJG7M5tc3zJQZJDjNY8LXSxbEZTQqTleD4TSZ7Uia7H7wdz4Jdc5x6cRm89aVFtmDJyCyiXgwOwppvnw5LGEsmfVAdmmIaoYd9u5WNTrPBgGV8_aiykflmZnD1enJToj3EvhgH3KKePqvjfg8ay61Q1A0f5PlqCe9knA6N3jGRM3IoB_s-5Rp9cYMF1jLCO7n9HB40t7W5mqEBTO-Qn55TF3os=\",\"summary\":[]},{\"id\":\"ig_0a372a7fcba6b284016a5ce5bf22e081a19e660657ce98596f\",\"type\":\"image_generation_call\",\"status\":\"generating\",\"action\":\"edit\",\"background\":\"opaque\",\"output_format\":\"jpeg\",\"quality\":\"low\",\"result\":\"/9j/4AAQSkZJRgABAQAAAQABAAD/63GmSlACEQAAAAEAAHGcanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAAcXZqdW1iAAAAR2p1bWRjMm1hABEAEIAAAKoAOJtxA3VybjpjMnBhOjE4OTI0ZjJlLWE3MzgtNGY5MC1iYjEwLTg3MDZkYjg0YjU5OQAAACFRanVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAJ0Wp1bWIAAAA7anVtZEDLDDK7ikidpwsq1vR/Q2kTYzJwYS5pY29uAAAAABhjMnNo67z35LsqLoVg7O+vcvLhRAAAABdiZmRiAGltYWdlL3N2Zyt4bWwAAAAJd2JpZGI8c3ZnIHdpZHRoPSI3MTYiIGhlaWdodD0iNzE2IiB2aWV3Qm94PSIwIDAgNzE2IDcxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTUwOC43NDkgMzE3LjM5OUM1MTYuNzc3IDI4Ny4zMTQgNTA4Ljk5MSAyNTMuODg0IDQ4NS4zODkgMjMwLjI4MkM0NjEuNzg4IDIwNi42ODEgNDI4LjM2IDE5OC44OTUgMzk4LjI3MyAyMDYuOTIzQzM3Ni4yMzEgMTg0LjkyOCAzNDMuMzkgMTc0Ljk1NiAzMTEuMTQ4IDE4My41OTZDMjc4LjkwNiAxOTIuMjM0IDI1NS40NSAyMTcuMjkyIDI0Ny4zNiAyNDcuMzYxQzIxNy4yOTEgMjU1LjQ1MSAxOTIuMjMzIDI3OC45MSAxODMuNTk1IDMxMS4xNDlDMTc0Ljk1NyAzNDMuMzkxIDE4NC45MjcgMzc2LjIzMiAyMDYuOTI0IDM5OC4yNzRDMTk4Ljg5NiA0MjguMzU5IDIwNi42ODMgNDYxLjc4OSAyMzAuMjg0IDQ4NS4zOTFDMjUzLjg4NSA1MDguOTkyIDI4Ny4zMTMgNTE2Ljc3OSAzMTcuNDAxIDUwOC43NUMzMzkuNDQyIDUzMC43NDUgMzcyLjI4NiA1NDAuNzE3IDQwNC41MjUgNTMyLjA3OUM0MzYuNzY3IDUyMy40NDEgNDYwLjIyMyA0OTguMzg0IDQ2OC4zMTMgNDY4LjMxNUM0OTguMzgzIDQ2MC4yMjQgNTIzLjQ0IDQzNi43NjYgNTMyLjA3OCA0MDQuNTI2QzU0MC43MTYgMzcyLjI4NSA1MzAuNzQ3IDMzOS40NDMgNTA4Ljc0OSAzMTcuNDAyVjMxNy4zOTlaTTQ3MC44OTkgMjQ0Ljc3NkM0ODYuODkyIDI2MC43NyA0OTMuNDg4IDI4Mi42MDEgNDkwLjY4NyAzMDMuNDEyTDQxNS41NzcgMjYwLjA0NkM0MTIuNDExIDI1OC4yMTggNDA4LjUwOSAyNTguMjE4IDQwNS4zNDUgMjYwLjA0NkwzMTcuNDAxIDMxMC44MlYyNzcuNTI2QzMxNy40MDEgMjc1LjE5MSAzMTguNjUyIDI3My4wMDUgMzIwLjY3NiAyNzEuODM3TDM4Ny42NDQgMjMzLjE3NEM0MTQuMTc4IDIxOC4zNTMgNDQ4LjM0NiAyMjIuMjIzIDQ3MC45MDEgMjQ0Ljc3Nkg0NzAuODk5Wk0zNTcuODM3IDMxMS4xNDRMMzk4LjI3NSAzMzQuNDkxVjM4MS4xODVMMzU3LjgzNyA0MDQuNTMyTDMxNy4zOTggMzgxLjE4NVYzMzQuNDkxTDM1Ny44MzcgMzExLjE0NFpNMjY0Ljc3NiAyNjkuNjkzQzI2NS4yMDcgMjM5LjMwNSAyODUuNjQ0IDIxMS42NDkgMzE2LjQ1MyAyMDMuMzkzQzMzOC4zIDE5Ny41NCAzNjAuNTA1IDIwMi43NDQgMzc3LjEyNyAyMTUuNTczTDMwMi4wMTQgMjU4LjkzN0MyOTguODQ4IDI2MC43NjQgMjk2Ljg5OCAyNjQuMTQ0IDI5Ni44OTggMjY3Ljc5OFYzNjkuMzQ2TDI2OC4wNjUgMzUyLjY5OUMyNjYuMDQzIDM1MS41MzEgMjY0Ljc3NiAzNDkuMzUzIDI2NC43NzYgMzQ3LjAxN1YyNjkuNjkxVjI2OS42OTNaTTIwMy4zOTEgMzE2LjQ1NEMyMDkuMjQ0IDI5NC42MDggMjI0Ljg1NCAyNzcuOTc4IDI0NC4yNzYgMjY5Ljk5OVYzNTYuNzNDMjQ0LjI3NiAzNjAuMzg0IDI0Ni4yMjYgMzYzLjc2MyAyNDkuMzkyIDM2NS41OTFMMzM3LjMzNyA0MTYuMzY1TDMwOC41MDMgNDMzLjAxM0MzMDYuNDgxIDQzNC4xODEgMzAzLjk2MSA0MzQuMTg4IDMwMS45MzkgNDMzLjAyTDIzNC45NzEgMzk0LjM1N0MyMDguODY4IDM3OC43ODkgMTk1LjEzOCAzNDcuMjYxIDIwMy4zOTEgMzE2LjQ1NFpNMjQ0Ljc3NSA0NzAuOUMyMjguNzgxIDQ1NC45MDYgMjIyLjE4NiA0MzMuMDc1IDIyNC45ODYgNDEyLjI2NEwzMDAuMDk2IDQ1NS42M0MzMDMuMjYzIDQ1Ny40NTcgMzA3LjE2NCA0NTcuNDU3IDMxMC4zMjggNDU1LjYzTDM5OC4yNzMgNDA0Ljg1NlY0MzguMTQ5QzM5OC4yNzMgNDQwLjQ4NSAzOTcuMDIyIDQ0Mi42NzEgMzk0Ljk5NyA0NDMuODM5TDMyOC4wMjkgNDgyLjUwMkMzMDEuNDk1IDQ5Ny4zMjIgMjY3LjMyNyA0OTMuNDUyIDI0NC43NzIgNDcwLjlIMjQ0Ljc3NVpNNDUwLjg5NyA0NDUuOTgyQzQ1MC40NjYgNDc2LjM3MSA0MzAuMDI5IDUwNC4wMjcgMzk5LjIyIDUxMi4yODNDMzc3LjM3MyA1MTguMTM2IDM1NS4xNjggNTEyLjkzMiAzMzguNTQ3IDUwMC4xMDJMNDEzLjY1OSA0NTYuNzM4QzQxNi44MjYgNDU0LjkxMSA0MTguNzc1IDQ1MS41MzIgNDE4Ljc3NSA0NDcuODc3VjM0Ni4zMjlMNDQ3LjYwOSAzNjIuOTc3QzQ0OS42MzEgMzY0LjE0NSA0NTAuODk3IDM2Ni4zMjMgNDUwLjg5NyAzNjguNjU5VjQ0NS45ODVWNDQ1Ljk4MlpNNTEyLjI4MiAzOTkuMjIxQzUwNi40MjkgNDIxLjA2OCA0OTAuODE5IDQzNy42OTcgNDcxLjM5NyA0NDUuNjc2VjM1OC45NDZDNDcxLjM5NyAzNTUuMjkyIDQ2OS40NDggMzUxLjkxMiA0NjYuMjgxIDM1MC4wODVMMzc4LjMzNiAyOTkuMzExTDQwNy4xNyAyODIuNjYzQzQwOS4xOTIgMjgxLjQ5NSA0MTEuNzEyIDI4MS40ODcgNDEzLjczNCAyODIuNjU1TDQ4MC43MDIgMzIxLjMxOEM1MDYuODA1IDMzNi44ODcgNTIwLjUzNiAzNjguNDE1IDUxMi4yODIgMzk5LjIyMVoiIGZpbGw9ImJsYWNrIi8+Cjwvc3ZnPgoAAAF+anVtYgAAAEFqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmFjdGlvbnMudjIAAAAAGGMyc2j+lf0LRwjwk6l99FttgUeWAAABNWNib3KhZ2FjdGlvbnODpGZhY3Rpb25sYzJwYS5jcmVhdGVkZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBabXNvZnR3YXJlQWdlbnSiZG5hbWVpZ3B0LWltYWdlZ3ZlcnNpb25jMi4wcWRpZ2l0YWxTb3VyY2VUeXBleEZodHRwOi8vY3YuaXB0Yy5vcmcvbmV3c2NvZGVzL2RpZ2l0YWxzb3VyY2V0eXBlL3RyYWluZWRBbGdvcml0aG1pY01lZGlhomZhY3Rpb25uYzJwYS5jb252ZXJ0ZWRkd2hlbsB0MjAyNi0wNy0xOVQwMDowMDowMFqiZmFjdGlvbngYYzJwYS53YXRlcm1hcmtlZC51bmJvdW5kZHdoZW7AdDIwMjYtMDctMTlUMDA6MDA6MDBaAAAVDmp1bWIAAABJanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5jZXJ0aWZpY2F0ZS1zdGF0dXMAAAAAGGMyc2iJ/+NtK3pzfjJ5leK6i9DYAAAUvWNib3KhaG9jc3BWYWxzgnkKdE1JSUgwd29CQUtDQ0I4d3dnZ2ZJQmdrckJnRUZCUWN3QVFFRWdnZTVNSUlIdFRDQjZhSVdCQlE5cXFwNGp2cjJUUHBlYXRGQVRRN2xWUElmcmhnUE1qQXlOakEzTVRnd09UQXlOVGxhTUlHWU1JR1ZNRWt3Q1FZRkt3NERBaG9GQUFRVTM0STNVMTVUMkRPeDRBUTlKRFh4ZGViaENoa0VGRGs5RUVmY2w0K3ZpSHROY3hnZHplWHVwS1VxQWhBTHBmenBEbkNNOGdXQU1lNUVIR1J6Z0FBWUR6SXdNall3TnpFNE1Ea3dNalU1V3FBUkdBOHlNREkyTURjeU5UQTVNREkxT0ZxaElqQWdNQjRHQ1NzR0FRVUZCekFCQmdRUkdBOHlNREUyTURjeU1EQTVNREkxT1ZxaEl6QWhNQjhHQ1NzR0FRVUZCekFCQWdRU0JCQnhhdGo5cHd3RUkwTTlyVExzNUg4Uk1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQmdRQlo1Q0VxaVNQNEZ0c1prcGNhb3htanpqOElmTytLY2drajBRRDI1ZTJxUWY2bmdzVEVDSEIzQVlCY0pGeTRGanNWbVEyMlgxeHN3TEhzWHdlNi9JNFJnbWQxUmxQSGQ4QXBCUG9xWEJmTmNZRm9obEhYV2dPUnJqS0JzSkg1c1NVdWZZZmpoK1N1NkZNdTVyMFpyTnRuT3N5VUtMbHR0TUt6eStwQ3NYbWU5eDRLcHlrRnI1RS9tRjRvR0FlS29kKzAwTmpId2szUE13Z2hFR28yZDBhUy9PbTFKYWFybjN5YmZTVXp4MVczN2t2N2hTaWlSeDZMRWlTNWZlaVRVRDNDazZ6YXR3WUcrZXh4clFKci90WTFRQW95Y0hKMWh6cVRrQUxLa0xIZGNDbkZNQ3pYSGk5ZXhBRVNQNFU1cFBBV2VJVE9kZ1RXTDRmeGFOSUNFaFhHVDQ5Wk5nSUVmY3lDdnpZQkRYTWxKQ2ViNko1cTdwQUlYLzRxS2U0cklnRzZ3WDEwVUYrMkpHZmJISjRWeCtYN3NCSTZTT0Y5dEdxZ0ZBZlJmM0ozYWhJTmp5d2ZFRi9uMlRlM09tSXdRL0grMFJZTUF3ZjFKUndOMlB6UmdLT0JtSmdreExzTjhpcHhDY2Qrbm4zcDVkQzNlSkE0ek4vV2lLcXIxY3hZNklTZ2dnVXhNSUlGTFRDQ0JTa3dnZ01Sb0FNQ0FRSUNFRnBLc2ovUUtNYitTN00vYmozako3b3dEUVlKS29aSWh2Y05BUUVMQlFBd1NqRWhNQjhHQTFVRUF3d1lVMU5NTG1OdmJTQkRNbEJCSUVsRFFTQlNNU0F5TURJMU1SZ3dGZ1lEVlFRS0RBOVRVMHdnUTI5eWNHOXlZWFJwYjI0eEN6QUpCZ05WQkFZVEFsVlRNQjRYRFRJMk1ERXdNakl3TVRReE5Wb1hEVEkzTURFd01qSXdNVFF4TkZvd1RURUxNQWtHQTFVRUJoTUNWVk14RVRBUEJnTlZCQW9NQ0ZOVFRDQkRiM0p3TVNzd0tRWURWUVFERENKVFUwd3VZMjl0SUVNeVVFRWdTVU5CSUZJeElFOURVMUFnVW1WemNHOXVaR1Z5TUlJQm9qQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FZOEFNSUlCaWdLQ0FZRUFvbENUUWVaS1M5NExtNmFWZENaWVBPeFMvTHVVSFRMTkZNUEdVTi9Rdlp6R2JuQ0xJNWZYak83TUNIeFc3bWUrK1pyQWtyRHJ1cVV6LzIxcEZKQ0RMd2lJTFJYdHNFdGRIeXlidWJobEZ5Umo3aE93SkdDTkN1Z0YrSGtmeHROaE5WdU1CSmRZbjdPTVhOamt4cWJRUS9DenA5TlUyV3lJOXhpbnVNVFlidjB4S040T0NTNlFKL1Z6MlhlbTFWQ2FJTm04eXpMRlJybjhvbFVGVGU2Z202eG9hc0ViUHpncWVnYlkwMTI2dExNZTY1MVZLZTdzMGpjVW42N0ZOcW1jc0xmZVJDcUw2RkNuRVNBSWdBdDVleVhQMlRueW5rV2JkN29IZUFtZ3BrNTdRSTR4L2VvaWFJY1ZnTVNDSWVSUFd2SVI4NGdQcEV1SktuNU1KQUVtcWFDYUJNbWRmQVh1YTJLRklqSUI3dGJjSzlMZjFrWTBkcUNDS0hpT3ZpcmREaFRrMW1vcWQ5dDBlalVucG9jV0Y4RzRIdkE2VTRHcW10WXJrNi9qSDV1M1pkSW1NRXFsSEE2K3l2R0xmMW8wQWFhaDBnRUloWEk0V0RuRTdENHlIUitFM3pjVWVkWXcwemNiZU9ib3paTHBiaXNOYnV3dzZ6STRMcWs4MGkzbEFnTUJBQUdqZ1ljd2dZUXdEQVlEVlIwVEFRSC9CQUl3QURBZkJnTlZIU01FR0RBV2dCUTVQUkJIM0plUHI0aDdUWE1ZSGMzbDdxU2xLakFQQmdrckJnRUZCUWN3QVFVRUFnVUFNQk1HQTFVZEpRUU1NQW9HQ0NzR0FRVUZCd01KTUIwR0ExVWREZ1FXQkJROXFxcDRqdnIyVFBwZWF0RkFUUTdsVlBJZnJqQU9CZ05WSFE4QkFmOEVCQU1DQjRBd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dJQkFMdHpwbFdFbzJoUTZ4RHhvR3pYeVNtRW5UNm9MKzBLdXc2ZzY2dkx3UjY0QVlZRnR6QWxTRzN6RGVHOW9VMG8waXRsWUVUY3RvMnJWVC9YM1lVZS92Q1hXeVFzN0sxTEgwdjB1d242bnJEZ3NMRDlqa1J5dEk4TWF0MWo2T3V5MWd2VXgvSG5pdzdmMzJ6RUNhTDlQUjl6R3hGWXdTZ3BvbXRnYVRBcE8xVzBqS21rQ0pDcEVuQStibkxFZGh3d2FZSlBKYlJQVmM3cFNNOWZpd2QvemZCV2E5L2Nub1lmTnZBMWpzRTNsWE80N2JZWXFFUys5cGZlU1ErOGo2RStjaWZRUFNGOFVseFFxY2NWM0tuNzkyMndLZ2NtRUJTZ2xOOFZaSVdNcHoyS09qRUdkSkVoNFJqc1N0K0ZFV2pPWWFta2F6SXowMmpteWIrei9QK1Y4UnpYd2dWbFNteE9SLzZvWUpSM2FFSE9UaWhFcGNhWWg2ZzE4bzRHWnFva3ZXckJFcTRZSUd2ZWRLTjNKbVducGNJb0hTWDlQcW5sRkVtNUIvOTBhQlJ5UjFEN2RKb2lhSVVhakwrREFKelo0MjBOb2p4Y3gwNmxkdEwvd3FyRnJyVDhLa0pzSjZpMDFqbkxGNWxZeXdjTHc3SDhOdWcxMU10ZXlSR1ltTTdvZ29zUzdRdFlZYnBoa2RHcGVzaytXT0Q4bEVoTWRPYlAxSHl6QWZMb0kwdm9NR2dadXlmc3VmWUp0dTE1aytVS2dyWEg1eTRheG9Wcms2VkJXU21VdWxqVGI1Wk5uMUV6a1QvQXVGQWJ6N1c2WUlqcE53cE1scDhqZU5yQnlvN0ZsajVzK2w4QU4xYmZDUVlobUpKNTk4Qy80ODZTcHhTckxGYzlRZFFTaWVBL3kKME1JSUhuZ29CQUtDQ0I1Y3dnZ2VUQmdrckJnRUZCUWN3QVFFRWdnZUVNSUlIZ0RDQng2SVdCQlRhNWVlVXdkS1VTU3phRDBLd2o3NmNYM0JZcFJnUE1qQXlOakEzTVRnd09UQXlOVGxhTUhjd2RUQk5NQWtHQlNzT0F3SWFCUUFFRkthaUt0REhIckRSY0dvUGQ4Vnp5YU1yMTNGb0JCVDhLa3AxT29ENm1XT1Q4SE5YN0w2VHNIM0Rld0lVSnl0anlNd2RUUzJiaEZGeWJQU2NYakpScnQ2QUFCZ1BNakF5TmpBM01UZ3dPVEF5TlRsYW9CRVlEekl3TWpZd056STFNRGt3TWpVNFdxRWpNQ0V3SHdZSkt3WUJCUVVITUFFQ0JCSUVFRjd0MkFTQ0dpb0xDZ09ldzV5dWRXSXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnR0JBTFExR3k0NDFBMWczQ1hodGJ0cVM0V0Mybmpndm5GdEQ0YlI0V1FQTTNBMHRuRG8zMnZ4Ykp1OHRyeFhWNGk3enpqTy91QkZXRVZaRzJ3ckp6aitBMVM5aVNkNU9oSUhZaFhZQjFab0xFandZUDU4RnFSUldDRkNTK2lGd05FcnZHQmxDNUR4Vlh0c3Q4VTliTWF5RExsemo2amRQbTFFVDVIR3JkR3Y1WFlXS3U4MHBZY2RNaWE3ZCt4ZlZzcWtQZzFVTDVjVHZoazhqOVY3eDFmb2hPUzQ3RzV0cG4yako1TzdZcXg1Z1BrRW9Dd202ZGdiN1ZLUEhWWjZQem93dlI1cnIrTlhKT1lRd09KOXZyQzJRYS9TK1JjaUlvcWRGZHE5YSsrZGp3L1dZOFI2bWY3N0UvbDcyM1lYQ2xNeEZzbVBVNHgvNmZZNEJWSEhoSVZqMXJsNDd4d0pHM0orTVJSVE5rcGE5VTJEWlpyd3JoV1hxc2JMemg4Nzl1Z3FxNHYzMlR2a0tpa01VV05PaHlWeGphYTFqVG5FbjNrODVLOU9OcFhqaU5ncjFCOXpRT1FkRGNYemFzd2NMQlpYWDd0cElSM281YXVLL08vRklzazcwaE80c3NraHBLak80dXcrcnp0SE1NTCsyeExqY0hDRlVMR3k2d0dQTDZ2QTZxQ0NCUjR3Z2dVYU1JSUZGakNDQXY2Z0F3SUJBZ0lRVkdZd0l0eThXUDRVdTF5Tm5YRU4zVEFOQmdrcWhraUc5dzBCQVFzRkFEQlBNU1l3SkFZRFZRUUREQjFUVTB3dVkyOXRJRU15VUVFZ1VsTkJJRkp2YjNRZ1EwRWdNakF5TlRFWU1CWUdBMVVFQ2d3UFUxTk1JRU52Y25CdmNtRjBhVzl1TVFzd0NRWURWUVFHRXdKVlV6QWVGdzB5TmpBME1UVXlNVFEwTWpKYUZ3MHlOekEwTVRVeU1UUTBNakZhTUVVeEN6QUpCZ05WQkFZVEFsVlRNUkV3RHdZRFZRUUtEQWhUVTB3Z1EyOXljREVqTUNFR0ExVUVBd3dhVTFOTUxtTnZiUzFETWxCQkxWSnZiM1F0TWpBeU5TMVNVMEV3Z2dHaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQmp3QXdnZ0dLQW9JQmdRQzdSeTZseHpDUWYvSWlZSmNHQm56eGY1SndWbFN0MVB6QnZEaE5lV0xpcVA0QkI5THorbk1SK2hLTVdFRk1ZNkg4bjYrOU5HbWJnaUFjZDVpbkJ1dEVDTWhNVDJMWDNaeUovREU4TWJMbkRkZk9YYmpZTVVmTVd2ZWdCMWJTSS9hUE8wNm5kYi8vbWpnQ0dXeHpmRzZtQ0lpSWZRdUorbm82b2lSUXVhSW1OWVM4aDA5eWpnVTU3OWROZVVjUW9QRzNhdmU3OE8zbjZQZFV2S2pNOE1NREF2MTF3WXV4QXhicDJJL0Rkd0RaSng1NUQzaEYza0t4MU54T0lxaG42NmU0R3liMVY1WndrUTBrdVRBT0g2MklsU1BwcWYxMldPQXoyVkZIWVNaSEE4Sk5kaWNZMHEwZ1RtbWV0YVBNM1laMjJHQmdwbGt6Y3hSbU1rRDJzdmxmQWRrb01aQTVhRDBPbjAzSlErSGUyV255STVCRWh5TWN3SWJEeHhGU3QwZG9rM0REb3R0VVdtZnl0dEVzV205d0hrNlhLUmluZlJ2M0d1OEtJN1dSMXJKVk9idGtrUm92bXBUb2d6bTR4dk0rbG8zNXVYSUxzVWIrYUhhWjNyVWhqRCtJSGllaW5iY3BIaFVkN21tamZQczB2Tkdaaklna1VOdXNTaGpWODhFQ0F3RUFBYU40TUhZd0h3WURWUjBqQkJnd0ZvQVUvQ3BLZFRxQStwbGprL0J6Vit5K2s3Qjl3M3N3RHdZSkt3WUJCUVVITUFFRkJBSUZBREFUQmdOVkhTVUVEREFLQmdnckJnRUZCUWNEQ1RBZEJnTlZIUTRFRmdRVTJ1WG5sTUhTbEVrczJnOUNzSSsrbkY5d1dLVXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQ0FRQ3l0TkQwOHQvZDBUSFU5N1U3L2E4ejVHMmp0R2owSmgzY3NNSC9QcGVZd0hUZnNzSjNvbkxiTy9EMERjZHp4U0hNeXVaR3JwY1RZUlFmQXJ6RnRVejV3UlV5QlVJcVZRMFBnMVppT0tQa0xXUjBUYWhYcmpoRlZCeHRWNWk1MXpUdk9PeXBZbUJHUkpSZVhPeXpVclFwWndNSldCSEYyaHhLVjhrTUFlSkdzVUQxWGhUeXpFdktOU1ZYZnNid2QvSWNwRUZPL01nWFQvVmZjN3BrQ1hZMStsQ2RDZnhOUnBUMExLdE1TbWkyWCtmVzJYVnlUbXE0c2pma1V5akI2VC95L005THVrZmFJb2MvNUp6alVrVmpmT2wxaHRoZkNYYWF6S1NYU3AzdytrZlBJYVRDVHJwZmgzc2xzbHdoWHFNbzVKcnUzVk9WMVROK0FGcUpsWXMzZGFoaEVvMTVLOTkvdC84cWdxeGQrVmdWK1B0Q0g2dWttSCs0bFMzL0ZxZ1F4eGs3VGUvQ1pxcnVFMGpXcjVidVd5SXF4U2pHcWFGZWlJT0luREVTVXFxTWhoemNyNjNIaFNnTEdHaUhpbllFbEo0SGxqY3k5S1FBR2xidkIvcEN0WVpRUllUV3R6bUhSRmYwQnYxUE1YZVZ5Sk9nSldzZU1FYm1Ic21HQmkrWitUYkRVWlQ1OGJDTU1iYUFlQ2l2cDV1eW1YdW5GV1FPaUNJclZBbjlJZ0M1bFFyNWFHeklwamZTL3BYOXB2WjJHT0pVTkpndkdLbGFWK1EvTlpYMHUvV0FTcllRVVNTeDJnVC9WUE41TjIzendsSlNjays1eGpmbnFnNElRRG9XekFsa0U1S0RTeWlxQWNuOVZ5VGRrWTRNM1VIU3NjQWRmcDZNQU9aVmx3PT0AAADDanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaKzEVW7RIfl02KGNZDdCvvQAAAB7Y2JvcqVqZXhjbHVzaW9uc4GiZXN0YXJ0FGZsZW5ndGgZcahkbmFtZW5qdW1iZiBtYW5pZmVzdGNhbGdmc2hhMjU2ZGhhc2hYIGUd3Q8WVSfx91zZvNzz0nvklixhs7T3KRc8/DNzGXGcY3BhZEkAAAAAAAAAAAAAAAMbanVtYgAAACdqdW1kYzJjbAARABCAAACqADibcQNjMnBhLmNsYWltLnYyAAAAAuxjYm9ypmppbnN0YW5jZUlEeCx4bXA6aWlkOmIyOTc1MmY2LTU3MTctNDEwYy1iYjk0LTkyZDkzNzE0M2Y1NnRjbGFpbV9nZW5lcmF0b3JfaW5mb6RkbmFtZXgYT3BlbkFJIE1lZGlhIFNlcnZpY2UgQVBJZGljb26iY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIFe4aYSgE0XUyKdIdMJaRg17CTH84WdOvlzBRFBgLm4Ed29yZy5jb250ZW50YXV0aC5jMnBhX3JzZjAuNzkuMmtzcGVjVmVyc2lvbmUyLjIuMGlzaWduYXR1cmV4TXNlbGYjanVtYmY9L2MycGEvdXJuOmMycGE6MTg5MjRmMmUtYTczOC00ZjkwLWJiMTAtODcwNmRiODRiNTk5L2MycGEuc2lnbmF0dXJlcmNyZWF0ZWRfYXNzZXJ0aW9uc4SiY3VybHgkc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5pY29uZGhhc2hYIFe4aYSgE0XUyKdIdMJaRg17CTH84WdOvlzBRFBgLm4EomN1cmx4KnNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuYWN0aW9ucy52MmRoYXNoWCDLDnOEk2pzfXyuofPU//NRh+W4Er1+1TLbzuc0FuSh2KJjdXJseDJzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmNlcnRpZmljYXRlLXN0YXR1c2RoYXNoWCBlYpDNlXq93A4kVTJu5hdhs5Cwh5FkwT6JrL5VmiVibaJjdXJseClzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmhhc2guZGF0YWRoYXNoWCB+FyxfnCDzyPmy5RE9aruUU7SIfnwQl/Gou2PRvLcMhGhkYzp0aXRsZWppbWFnZS5qcGVnY2FsZ2ZzaGEyNTYAAEy7anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAAEyLY2JvctKEWQvoogE4JBghglkFiDCCBYQwggNsoAMCAQICEAul/OkOcIzyBYAx7kQcZHMwDQYJKoZIhvcNAQELBQAwSjEhMB8GA1UEAwwYU1NMLmNvbSBDMlBBIElDQSBSMSAyMDI1MRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xCzAJBgNVBAYTAlVTMB4XDTI2MDQyMjE1NTEwNVoXDTI3MDQyMzE1NTEwNFowRzELMAkGA1UEBhMCVVMxGTAXBgNVBAoMEE9wZW5BSSBPcENvLCBMTEMxHTAbBgNVBAMMFE9wZW5BSSBNZWRpYSBTZXJ2aWNlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnbpqFExNApfqgYm2FtG+XlhOEwNyoZnfaRRxfOUhI9OBH6I1nEyjEko8724rv+ZkrteES2kkWmPP6nYKkLJl23wBPI3h/sEFM3evJ947IDq0D2OHmBvNTZwav7R/MxFEqlQwN0a4B/2aeUQLc1dVowNjEXwdEt2sWC/meq7epZjDE5NOSPBa+OB8pJJL1Wy6ysIFKsiSvnXUlGe1Vw2qapptMDAs11VhjGrSU7YAeB1eRUOeTpKjA4Dxr1vRsuv+ixnvFrrXNwmVq2QtmcmHmvgcvy7Q52OAlhqaeaA3kzajNclIySyYYwXpRJs1Hqy5CKdTbB2caHPICh45zAZJ8wIDAQABo4IBZzCCAWMwDAYDVR0TAQH/BAIwADAfBgNVHSMEGDAWgBQ5PRBH3JePr4h7TXMYHc3l7qSlKjBvBggrBgEFBQcBAQRjMGEwOQYIKwYBBQUHMAKGLWh0dHA6Ly9jcnQtYzJwYS5zc2wuY29tL1NTTC5jb20tQzJQQS1JLVIxLmNlcjAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AtYzJwYS5zc2wuY29tMBcGA1UdIAQQMA4wDAYKKwYBBAGD6F4BATApBgNVHSUEIjAgBggrBgEFBQcDBAYIKwYBBQUHAyQGCisGAQQBg+heAgEwHQYDVR0OBBYEFPOdEE3UDcudcvhGCnYYR6UbaE90MA4GA1UdDwEB/wQEAwIGwDAZBgkrBgEEAYPoXgMEDAYKKwYBBAGD6F4DCjAzBgkrBgEEAYPoXgQEJgwkMDE5YmM0MDMtNWNkNy03NjY5LWFmZTYtZmRiMTcxNzdkNDI4MA0GCSqGSIb3DQEBCwUAA4ICAQCCOJdsZR+hNwAb8fntGnS61aZbHjX1Z2wazytmaUDN9fzSclbfypUo6vhmGN5CQz34BXigaB4oGYmtte5//PUy0oy4X+dsgG7rW3yXWzDnEw8uQrgDxnCa/v4gCaw1RtWgCIxJRYDDupIfVccEWhWdb9Lr2Hmbljq8RBKQNAUVNH30QaUzly8ubFFSCm09SbAVy8eGWBEHzNzuni7pxgc5uDNcINoS7gBXM1QucChKJSlPknwu0voc3WcueuhQeDlRuoM62oh+kCOQkvViWJrlwqhzhp7F2HHp7xhcZHuR7g83L3aYeFZk529C0RB9kgG8hRZqb20ZZIXY/yKW7bnvstBcGgWEfWhdNVtLscVpSBZ5BuZojqDEYZg6TPjAJHnlpmjg7xn91pDWLi1BDGR1EFZfk5S2oZyKAho8tsDobfPFQ+d2LGgXpPLmy4uIlRboEXsVKnIkgRA9IcZjbS8lgKOZW6oppf1H6uH3a+UE+1tQJm0roYJdMfXdYqh8MgPcTMelLHIwUIBXkwaC4uius6cIf69ZNK4Qcu8qna54rOIz7FO1yZnSKKgqN6FOq/zMflibJ21F4bQqB5wEvQUwV6ExLiAuyeLIEFTboZIWT74kNZj+LwVp3Bu4TePeBy8a6Gz1wYri0/5yd9MTqCvUV5euDAsGh9gABAG+k7YSiVkGUzCCBk8wggQ3oAMCAQICFCcrY8jMHU0tm4RRcmz0nF4yUa7eMA0GCSqGSIb3DQEBCwUAME8xJjAkBgNVBAMMHVNTTC5jb20gQzJQQSBSU0EgUm9vdCBDQSAyMDI1MRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xCzAJBgNVBAYTAlVTMB4XDTI1MTIyMjE4MTczMFoXDTMwMTIyMTE4MTczMFowSjEhMB8GA1UEAwwYU1NMLmNvbSBDMlBBIElDQSBSMSAyMDI1MRgwFgYDVQQKDA9TU0wgQ29ycG9yYXRpb24xCzAJBgNVBAYTAlVTMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyzq0zbicyxYpVrh5px74a/b52I9yw6aYExqtAypB2mEeLkcIUr0edFG+XQTseoK2wPv6D+gnpYvo/mLzDGDxA19IGspzAX9zleQZTm7MTno13lgR4deCF9zSFkdDd5vfSBmIeZ+jOaRZTl7gTgtHl/J1Qtd2PbZ/pCLc7QfGbx/UckaM1lHHtbd68pP5IyfVgAISUHWKcKBo6ee8hCh8nCrqKanAL/7JdhEZRlWwL2PqfZ70FbBEpEDeQDZcRIpUa1dI/7sRb6TV6o7CHtd82LzOab+gHwBNk0U7mS550s8Bnp8pu0bZFHhjMJYzUZxek2365TRKWHizKWxdfLh1G5U8mXche9i0SuvazccICtYEyaLerpeztlGW2pKbw7K7UMT+tqRMA5VdLZJqT2Ll4Cr3aaAbnATVuZMA2tG7Xg4IDk8Ixguv+SlM0MkE7OvzsnFQe3YnaJH5UIi4dzXYzaHh19Mp50rGh1RZJMJnsm0HCTXbus4YuEal4AuL2uGnn2rOYBbSEBLE98HeGXN5VeBwtO/qzMf+dhyJTmYKaYgtEO3DRqIq5H+M1BKcV0YtWBhi1cqo+n74wtlhahbLNV2gk6OyZagv7e+Y5/x+ukj0qqFx/JOvf+qnThhziGnVQsD5hJKFTxDLVLM9OvjdKWURecpDnpa4h1iWIe/RkXsCAwEAAaOCASYwggEiMBIGA1UdEwEB/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdJQQiMCAGCCsGAQUFBwMEBggrBgEFBQcDJAYKKwYBBAGD6F4CATAdBgNVHQ4EFgQUOT0QR9yXj6+Ie01zGB3N5e6kpSowFwYDVR0gBBAwDjAMBgorBgEEAYPoXgEBMB8GA1UdIwQYMBaAFPwqSnU6gPqZY5Pwc1fsvpOwfcN7MHgGCCsGAQUFBwEBBGwwajAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AtYzJwYS5zc2wuY29tMEIGCCsGAQUFBzAChjZodHRwOi8vY3J0LWMycGEuc3NsLmNvbS9TU0wuY29tLUMyUEEtUm9vdC0yMDI1LVJTQS5jZXIwDQYJKoZIhvcNAQELBQADggIBAM42+j7vD5Y2LY6vEVVm/3t/AysNAGtW9cutHr0qga2lptBNoz4Uk+STEQxp1eSMqG7mN1QIFuIlnOxlZig8Mz2iGpqiu81nZErnvnQhBKFuw6smxDss2lW5/UdOBOCNeJs3g8R0O8VHYe9tQXKk211DU8mWTuUd4AQ636jdLtGvWJfW5/RfBHIjPGvPC705AasGjJOoj6cPdlk+4QSS9ffZ+0ZiBatubtSIRqCzLypqX6VO2vjU/MzZozypd0UbCsH5mLk5y8yhccAqghJx0+T2JeJRIW3WFd/kU41vSn0Xjl7AugzVDnd5IYF6zu33HB2bjrayikJWnY9rQSoO/muci+4aoyjPX/Pp0GQe1u7CiUsY65LP9a/CJwVNuJGhNyWZ5v2A3PS8xzd7vrQBLWdY8C/nw7OLceVEA3owtqWydT5bI34701SmOrnHzA4cMxXVajV6gXZ/L/5X2mn4DD4/71SPAYt7RsNjnvof7cR/L3CEK/ZWgvSnyyTXbF4kezq9qVg7GBFps5yP0nB0/4tuJrvDq0XHUwWWnEe1xkarXvX8iIsZaKM1D+V8apVltavruf+6uOCbSkeyzuwVL4kCfRXur5wMTcTJzgH1Mj2P9yY0C/4ii3rt+V5eZ19RFFvbJFb70Vmht94WmmYJttGGLvoHfX6VeZtEZnw2hfb1o2dzaWdUc3QyoWl0c3RUb2tlbnOBoWN2YWxZFIswghSHBgkqhkiG9w0BBwKgghR4MIIUdAIBATEPMA0GCWCGSAFlAwQCAQUAMIGHBgsqhkiG9w0BCRABBKB4BHYwdAIBAQYKKwYBBAGDvzABATAxMA0GCWCGSAFlAwQCAQUABCCyidHcKpig+nxNJD8QgqF5Gv4NkxJ3KEnUCuJZHicq2gIJAO3tSN3yeHOlGBYyMDI2MDcxOTE0NTcxMi45NjQ5NDlaMAOAAQECCCiBuOHH0kA2oIIQZjCCBPYwggNeoAMCAQICFGHbRigyioyNSga3v/5g4wJsP3G3MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJDQTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzEZMBcGA1UECgwQT3BlbkFJIE9wQ28sIExMQzEMMAoGA1UECwwDVFNBMR4wHAYDVQQDDBVPcGVuQUkgVFNBIElzc3VpbmcgQ0EwHhcNMjYwNDA4MTc0NjI2WhcNMzcwNzA5MTc0NjI2WjB1MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xGTAXBgNVBAoMEE9wZW5BSSBPcENvLCBMTEMxDDAKBgNVBAsMA1RTQTEYMBYGA1UEAwwPT3BlbkFJIFRTQSBMZWFmMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA6srFrZT98P0nn8d4p2EEyv8OKWEq+6GIzV+oopedDokvi5HIH7ywlpA9CBxVgsGWjjZqFa2JaeiQ2yxEMoOoCs135TXo7qhkW/644I6d5wIgoSjDNd2nEDfpIvcJTZeatIRzwC58qVBHKKC08Gkf8LCHKXpZ/g8UFDVC+dlpUhdKIDfyaMwP8S23gpYgG0sRDkYSXD2kFIa4S0VmOKJOTSfKlbp1DMxOh2qfdMMgFQUBJF8NxH5crv4d8x8Lle0Akd889YabKhJeDtYPHNDdyfoNyE3DyYRaGEks5DhzGmBSuEzuxvO3ttjdaqnOILpd1sRcNRBk8gMjEVM/Yo5lBRFdcCvUyWsJgUVS6BpX7VpGXdpddpwleRBog1GkmIR1kXKYVf/Y40Nise1pZydBvMWP8moHK4NJ6OEtGDQOuzkHr2e9tJUeyAKyvUVnzXIBiJRfVUsGLK2v7aX0JK93Az6DimRRj5GMDDmWS7A9rvoEmaE+GIw98L4XNqEu9WO1AgMBAAGjeDB2MAwGA1UdEwEB/wQCMAAwDgYDVR0PAQH/BAQDAgbAMBYGA1UdJQEB/wQMMAoGCCsGAQUFBwMIMB0GA1UdDgQWBBSkJ1SCooqAez3Fhs0/cNnCg5lReDAfBgNVHSMEGDAWgBTyFPCwxxdUPSNDhdzKc9BygD24qDANBgkqhkiG9w0BAQsFAAOCAYEAIPskT0HAwLyYsjISIBCNIJlINRJPxEZWfqc+P7alI/kqSD7gUZ0fRUB4wbuDTpNQyZsnlmjfTc7y9hzSeavv6sEf2j/1mFkI5nDNifTuR4uqy+z/jH4U4UbYkeacuB7kNEb/YdJ4+H04OeNS7RtfZuhzwAByO+Soq46GGyqjNyH5O997XFTYTMdqKkt/z0N0YAWAc6PJ0Xevh6n9tbGEam6/iCrOmqGaq6KegkgHDDfFAmNRl9tSfG8eZ8lpCELVz/X7rRtei5Di4Ah5PC4bE4NqnqXoJUGPhRAB7eQYwaA6jf6dUlAa74fe4WTNVfkhIN+2Ke+fJ27RujRGq0oiT+diFXfdRSPdYS3CMSmPxLl+eQIGq7RX1MHszx0G4Vx7ZUmwGetNq6THJ0BOprS1j898w7RDp3bTXjBj7qgXrjUodGSrWjXjWy86Pk4KYdYwTUOb/04uxiG5PjosIBlXMHVqjmRLotAJ0RbXoGcmQW1n+ANwdrglJlb5kSYnw0tJMIIFfjCCA2agAwIBAgIUBI0EysbFC8XaGbC88U4RlaXqvBkwDQYJKoZIhvcNAQELBQAweDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKDBBPcGVuQUkgT3BDbywgTExDMQwwCgYDVQQLDANUU0ExGzAZBgNVBAMMEk9wZW5BSSBUU0EgUm9vdCBDQTAgFw0yNjA0MDgxNzQ2MjZaGA8yMTI2MDQwOTE3NDYyNlowezELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKDBBPcGVuQUkgT3BDbywgTExDMQwwCgYDVQQLDANUU0ExHjAcBgNVBAMMFU9wZW5BSSBUU0EgSXNzdWluZyBDQTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAIm81LniyKELvmG73jxkZn6nvpxtENOpMAcmPAT04GsgOd+VNO2pomUISNs3hjKDjswKSqDA8zRsoMCYzSufpfTLfNkPJt5+yU2i72Nbkeb2WajSAfpO+dk4K1oOzWBamIGYqNdTxuMZ1i5IrENXCemU8kf5bEWKFWC3964vXqI1ToU4hWmfNJ3QTdhDPc00bfxjk/zTcLtK6Hboak5mSaDt/PgYvu+aF7eod6zvtzjMudQqM8R2D9ZAEXfL/sddFy1A096LPMAY1kAUQZnLlD8sfQBrUvyeylC3CUdFFeEFI1X6sU9vVJiV9H26+GjhIhx63IqRQ4sVti4SQ7FiHKC+yiSOLu+/pNFN6Lg/Mc8mPcUAUOry2SQgZO3Vc54ucHiq3lY8BfnUgKLora/2+6ijXMtoq0TbMHfyxDR0a1Vtxof78jI8nnEORRP37FAP+/7WBDEmu9DETWHiQtuvwytuXysZG+bisO+NXETNH8BzfY+i6b1tgrwlZYQIMGntFQIDAQABo3sweTASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBBjATBgNVHSUEDDAKBggrBgEFBQcDCDAdBgNVHQ4EFgQU8hTwsMcXVD0jQ4XcynPQcoA9uKgwHwYDVR0jBBgwFoAUWMJAoDxHdiuo5m6okZaOlsi32eQwDQYJKoZIhvcNAQELBQADggIBAJLsN1zebOtk2q6hEQkwcq7ccgj1O7wPej3WxuEv9oMzfegfV0AYTkyZqmvUmdkUi9tr1kz4ytBZM9OhoDhcI4hEJPuH4faTBie8oe1MX2dd/zWrMdLsexHUQEM3T8KEG5y6ZMgPsKIdfpo2+OHQgrNQQ7LgVb2AlMhZUk5KdN5dx0VYm7f6MKo73Ee81S4suTgYYyx5WrfdVa09Qt+IA8/xaP5zANRat94kApeRwOdn/tymCvOlRhGzURx/Es+Nr1/jGMi4QMa94/nWS3HQZF3lZMJLwF530T3HW54Vz3v9lJTnAUsIUdr7ZPSrEfA1lPH2vn4rDt2ymj1Q3VDDlmSObasMc58oBjsEd9CX7W9FT7EzLl9G64O2qWEfvNeCrviAb8LjaRUw5m18OkSSKwaYLa/cNMG+pSpI54fI3jgMtQQMM8rjhFBw8bIeS96NT/aRGdxfhfrx5tHXyqfutJ/2IXgpgfDjcFh3ARCGpDpLl4NG6NrCanbJqRLLIRwPRb5lsaCGLoC8WUtNm0MfbbTXhOD88NXIYZANQ44Tap3D8SE8hF0G/jvW2CM5RQtfHXEN+jL9oICVRLVPAOXDdP3iTodyhvTwUQGHHgi91LUrNWwGEJKkO2tqnbr9wDsHnHbCDNUYOX9J2uOUHD5QCGrXTOKJYZ3v68/Fw0BucHo4MIIF5jCCA86gAwIBAgIUE1A7bImM8CQDMyyP90+O+32C7BswDQYJKoZIhvcNAQELBQAweDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKDBBPcGVuQUkgT3BDbywgTExDMQwwCgYDVQQLDANUU0ExGzAZBgNVBAMMEk9wZW5BSSBUU0EgUm9vdCBDQTAgFw0yNjA0MDgxNzQ2MjVaGA8yMTI2MDQwOTE3NDYyNVoweDELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMRYwFAYDVQQHDA1TYW4gRnJhbmNpc2NvMRkwFwYDVQQKDBBPcGVuQUkgT3BDbywgTExDMQwwCgYDVQQLDANUU0ExGzAZBgNVBAMMEk9wZW5BSSBUU0EgUm9vdCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPaS6dIUuq2e4RqsdahWG9iqsbNqkl+WefWStxQtJPi/wBqvYL7Bms15mtxsmv42msGYFqQ/5CyduqWlUHOzCsL5GvPESS94vdLsvOc/9JvRGg/yoGGiLIklylEGERf5JRCc0sYv9InEQRIO/iYe0201zey7NWBAqIVRvvbukJjxKtidehBratku2WPz5RRcKcWGIsGKHGjN6zieqVCWWyND+zj/Qnw7OqFRLyXJSNwx/1By7vB8oXfNGG+BYfM/v27o0huxpgg25Gsy+/53qF6bXN3dMZBMjmX/FoHLQc4oMVPKGEPOSARufdZkFrMpEOS0Ljq3VFpyVlfzqGp9Hu/mYR/dZcgOSAlJmTJ08AqizN2TAFOsI72ChSCx777tHaF3AO46RjOinuyv6QYxZrRmb7KJk6B+lQ4PIc5B+F7wjunNucDVM1140NAnMc9QMHJzHR7aasLAk8+t3A9kh/b7CE6IdvU+7/+SLJl3Lgv2BtyYtp0JAzr99BoJx49fWul+SA0JK7UeioMbBPJbFTwsEAOvkaKdQbdSaNENERoZv7DA2k9gve4pqu2HjXFcKIyNiKMlFGNF2AX8e2GPbEZUOxhcybCCr4PIsSM/HJ8aW+6i11S1KlOuu4XbpvqXnuyEiXLzekDJFraFWEdb8SRhOaJM3tjGqCLynr9bTCzLAgMBAAGjZjBkMBIGA1UdEwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRYwkCgPEd2K6jmbqiRlo6WyLfZ5DAfBgNVHSMEGDAWgBRYwkCgPEd2K6jmbqiRlo6WyLfZ5DANBgkqhkiG9w0BAQsFAAOCAgEAWPiBkQyY8mxh/siGHdZbhB2m1r64pl0MXUnLuKEpzS2duFj58ISJPTz4b9VqH7QqolWS8GeBmV61VAz7mkaA4wJRAFPADgPBiFfe74JVfuP0fRjrDyb8g/8hqMGs3tsbk6sZzdAwdhg6k53OqmcDDTkaLoB0323wfhN2L+nqUEGLOD1s5eA+7i/bZFQ2XhG+YkW20SG0gDyMGOvanNZKqdVUZVtr0Vh+wEmH6+tLX5IMO5TXmob2oVnOR/A4rMOwfwN0ZNHAUjuhsXsoa+EOaZf4AhgMKBc7J/+upBCe92XLoPTqub2UzkTimLEKSGjuVakhpWCP/srWfdF7hiCcDvOoeNDG2kAuyIEFC1xiqCrB+1bnGHkHjhGv7OXb03D+RsxjqGTxPOmvpWS8Xr+FCC0esM7judOkEddSu3CLhp37Lr8K9tJVKyNCK0Nc7KGCYT/Pce2w95fp5MvCPPysd7e23CDBTOmJsg+yL3/DfpJknAi1hN7Mlv2JsEu1Q33S6a2G/RnZLZ+9AO7AtEdWI3xIFZEOTg9niSB7YgjByV5V8fYGxlEjV2/vh74UIEZ5vpQCscggKJ2ViogmVQVmUu8Yf9lLuqhaFOnCLK2fC8NcQvOh9SdkeXGMClqe/bn5RXkHcB7hagO1N5aOWP1Fv1QljIMDPQ/ZJjMj0Fh3prgxggNoMIIDZAIBATCBkzB7MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xGTAXBgNVBAoMEE9wZW5BSSBPcENvLCBMTEMxDDAKBgNVBAsMA1RTQTEeMBwGA1UEAwwVT3BlbkFJIFRTQSBJc3N1aW5nIENBAhRh20YoMoqMjUoGt7/+YOMCbD9xtzANBglghkgBZQMEAgEFAKCCASUwGgYJKoZIhvcNAQkDMQ0GCyqGSIb3DQEJEAEEMC8GCSqGSIb3DQEJBDEiBCAhNrMcdQ5NT2sDj5FSHHdnew1urXS/gUb4MupU5As3RDCB1QYLKoZIhvcNAQkQAi8xgcUwgcIwgb8wgbwEIL1PubKQTIE2Z4hu70Hhbf4E2SIHnb9bkkrQosRgRiJ6MIGXMH+kfTB7MQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xGTAXBgNVBAoMEE9wZW5BSSBPcENvLCBMTEMxDDAKBgNVBAsMA1RTQTEeMBwGA1UEAwwVT3BlbkFJIFRTQSBJc3N1aW5nIENBAhRh20YoMoqMjUoGt7/+YOMCbD9xtzANBgkqhkiG9w0BAQsFAASCAYBl6FMHHN+3/IP+NUeHOGI2GcdO5Z+N5+uybSorJKhqzaDQbu0UqmkcV+n+H72mxZjbYPsPp61xpLSptEyYnb9ujgwHdxEcsl4q3TVjQ8FWPinIGQOpQ5HbY+f0cv6p5T+k/JGkVojK4c4aS0g/ZJ2YkB3ysci24X9/SplcJYmsmhbaIToHfMTkOm24ASibhtYYr6C7q2ANz63UcLvKOmFPAIgyrliOxZFA+8skPPMQnw4nCx0Tx1NVg/YQSn81MkrAqU52viHd1CCdUzsWYoMceCw9UkmGvQFiiP8Aw1E+6/gMXDHnra+MzK/DKgbrjeBausFh7A8tAm0bOxfuKhqqnb7uLielBX5pgX8wQm4hnHbSsI4MJzQIXCGsZTrCfwRsIJ93oK7w0xQUD3MTAc5Y5Mgpr1PRn/ea+NuIDxVeQboDljOQ76XYMgjlYruXz1eqgq9E2BvkZ4i73a9Sog5XiJBTyWtUuvGTe/eMgR+gsKbCwoHT1JE3S+tCHKjNnA9lclZhbHOhaG9jc3BWYWxzgVkH1zCCB9MKAQCgggfMMIIHyAYJKwYBBQUHMAEBBIIHuTCCB7UwgemiFgQUPaqqeI769kz6XmrRQE0O5VTyH64YDzIwMjYwNzE4MDkwMjU5WjCBmDCBlTBJMAkGBSsOAwIaBQAEFN+CN1NeU9gzseAEPSQ18XXm4QoZBBQ5PRBH3JePr4h7TXMYHc3l7qSlKgIQC6X86Q5wjPIFgDHuRBxkc4AAGA8yMDI2MDcxODA5MDI1OVqgERgPMjAyNjA3MjUwOTAyNThaoSIwIDAeBgkrBgEFBQcwAQYEERgPMjAxNjA3MjAwOTAyNTlaoSMwITAfBgkrBgEFBQcwAQIEEgQQcWrY/acMBCNDPa0y7OR/ETANBgkqhkiG9w0BAQsFAAOCAYEAWeQhKokj+BbbGZKXGqMZo84/CHzvinIJI9EA9uXtqkH+p4LExAhwdwGAXCRcuBY7FZkNtl9cbMCx7F8HuvyOEYJndUZTx3fAKQT6KlwXzXGBaIZR11oDka4ygbCR+bElLn2H44fkruhTLua9GazbZzrMlCi5bbTCs8vqQrF5nvceCqcpBa+RP5heKBgHiqHftNDYx8JNzzMIIRBqNndGkvzptSWmq598m30lM8dVt+5L+4UookceixIkuX3ok1A9wpOs2rcGBvnsca0Ca/7WNUAKMnBydYc6k5ACypCx3XApxTAs1x4vXsQBEj+FOaTwFniEznYE1i+H8WjSAhIVxk+PWTYCBH3Mgr82AQ1zJSQnm+ieau6QCF/+KinuKyIBusF9dFBftiRn2xyeFcfl+7ASOkjhfbRqoBQH0X9yd2oSDY8sHxBf59k3tzpiMEPx/tEWDAMH9SUcDdj80YCjgZiYJMS7DfIqcQnHfp596eXQt3iQOMzf1oiqq9XMWOiEoIIFMTCCBS0wggUpMIIDEaADAgECAhBaSrI/0CjG/kuzP2494ye6MA0GCSqGSIb3DQEBCwUAMEoxITAfBgNVBAMMGFNTTC5jb20gQzJQQSBJQ0EgUjEgMjAyNTEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMQswCQYDVQQGEwJVUzAeFw0yNjAxMDIyMDE0MTVaFw0yNzAxMDIyMDE0MTRaME0xCzAJBgNVBAYTAlVTMREwDwYDVQQKDAhTU0wgQ29ycDErMCkGA1UEAwwiU1NMLmNvbSBDMlBBIElDQSBSMSBPQ1NQIFJlc3BvbmRlcjCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBAKJQk0HmSkveC5umlXQmWDzsUvy7lB0yzRTDxlDf0L2cxm5wiyOX14zuzAh8Vu5nvvmawJKw67qlM/9taRSQgy8IiC0V7bBLXR8sm7m4ZRckY+4TsCRgjQroBfh5H8bTYTVbjASXWJ+zjFzY5Mam0EPws6fTVNlsiPcYp7jE2G79MSjeDgkukCf1c9l3ptVQmiDZvMsyxUa5/KJVBU3uoJusaGrBGz84KnoG2NNdurSzHuudVSnu7NI3FJ+uxTapnLC33kQqi+hQpxEgCIALeXslz9k58p5Fm3e6B3gJoKZOe0COMf3qImiHFYDEgiHkT1ryEfOID6RLiSp+TCQBJqmgmgTJnXwF7mtihSIyAe7W3CvS39ZGNHaggih4jr4q3Q4U5NZqKnfbdHo1J6aHFhfBuB7wOlOBqprWK5Ov4x+bt2XSJjBKpRwOvsrxi39aNAGmodIBCIVyOFg5xOw+Mh0fhN83FHnWMNM3G3jm6M2S6W4rDW7sMOsyOC6pPNIt5QIDAQABo4GHMIGEMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUOT0QR9yXj6+Ie01zGB3N5e6kpSowDwYJKwYBBQUHMAEFBAIFADATBgNVHSUEDDAKBggrBgEFBQcDCTAdBgNVHQ4EFgQUPaqqeI769kz6XmrRQE0O5VTyH64wDgYDVR0PAQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4ICAQC7c6ZVhKNoUOsQ8aBs18kphJ0+qC/tCrsOoOury8EeuAGGBbcwJUht8w3hvaFNKNIrZWBE3LaNq1U/192FHv7wl1skLOytSx9L9LsJ+p6w4LCw/Y5EcrSPDGrdY+jrstYL1Mfx54sO399sxAmi/T0fcxsRWMEoKaJrYGkwKTtVtIyppAiQqRJwPm5yxHYcMGmCTyW0T1XO6UjPX4sHf83wVmvf3J6GHzbwNY7BN5VzuO22GKhEvvaX3kkPvI+hPnIn0D0hfFJcUKnHFdyp+/dtsCoHJhAUoJTfFWSFjKc9ijoxBnSRIeEY7ErfhRFozmGppGsyM9No5sm/s/z/lfEc18IFZUpsTkf+qGCUd2hBzk4oRKXGmIeoNfKOBmaqJL1qwRKuGCBr3nSjdyZlp6XCKB0l/T6p5RRJuQf/dGgUckdQ+3SaImiFGoy/gwCc2eNtDaI8XMdOpXbS/8Kqxa60/CpCbCeotNY5yxeZWMsHC8Ox/DboNdTLXskRmJjO6IKLEu0LWGG6YZHRqXrJPljg/JRITHTmz9R8swHy6CNL6DBoGbsn7Ln2CbbteZPlCoK1x+cuGsaFa5OlQVkplLpY02+WTZ9RM5E/wLhQG8+1umCI6TcKTJafI3jawcqOxZY+bPpfADdW3wkGIZiSeffAv+POkqcUqyxXPUHUEongP2NwYWRZIvgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2WQEAD5CfVJp4uiaZuKpR4iCNQzqcdih5Ys2AT08VMqEgdwjhfEtAVhK9s6Vom+zFOT/ryd4t368R2EEmAym4DaH3jX6/0PoZYRRkUqDtgKU68nOCgAbWD9nhPE7XTR1Uf7IXfPI93ucZZpblztCFvSeQtqg+GhzrjmlJljPcmrLfHUwbm1Fh78NdZCJfvtnXWMr4K3Ond6QEFiFPtMoZN0iVJfHJIJrGqwZfxRucWWRt9/91t1XYngTEHXKo2IQMUE3mxi1ijtcf/ySgs/fCk8wxSUdz8ISm+wKfM4J6Qdi5jPKYPdJPZO1OhrmQcSMcEA+qI+EAqee/89MWFdAEfwqUov/bAEMAUDc8RjwyUEZBRlpVUF94yIJ4bm549a+5kcj////////////////////////////////////////////////////bAEMBVVpaeGl464KC6//////////////////////////////////////////////////////////////////////////AABEIBAAEAAMBIgACEQEDEQH/xAAZAAEAAwEBAAAAAAAAAAAAAAAAAQMEBQL/xAApEAEAAgEBCQACAwEBAQAAAAAAAQMCMQQREhMUIUFSoTJxQ4GxImGR/8QAGAEBAAMBAAAAAAAAAAAAAAAAAAECAwT/xAAcEQEBAAIDAQEAAAAAAAAAAAAAAQIRAxJRQSH/2gAMAwEAAhEDEQA/ANoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/9k=\",\"revised_prompt\":\"Edit the provided image: change the solid black equilateral triangle to a flat solid blue triangle (use color #0000FF). Keep the triangle centered and the exact shape, size, and crisp edges as in the original. Preserve the plain white background (pure white). No shading, gradients, outlines, or texture—flat uniform blue fill. Maintain original image resolution and aspect ratio. Ensure anti-aliased clean edges.\",\"size\":\"1024x1024\"},{\"id\":\"msg_0a372a7fcba6b284016a5ce5cc22f481a18bbb28bae4f0ce38\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":\"current_turn\",\"effort\":\"medium\",\"mode\":\"standard\",\"summary\":\"detailed\"},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":false,\"temperature\":1.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":{\"type\":\"image_generation\"},\"tool_usage\":{\"image_gen\":{\"input_tokens\":1116,\"input_tokens_details\":{\"image_tokens\":1024,\"text_tokens\":92},\"output_tokens\":196,\"output_tokens_details\":{\"image_tokens\":196,\"text_tokens\":0},\"total_tokens\":1312},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"image_generation\",\"background\":\"auto\",\"model\":\"gpt-image-2\",\"moderation\":\"auto\",\"n\":1,\"output_compression\":10,\"output_format\":\"jpeg\",\"quality\":\"low\",\"size\":\"1024x1024\"}],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":3510,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":669,\"output_tokens_details\":{\"reasoning_tokens\":512},\"total_tokens\":4179},\"user\":null,\"metadata\":{}},\"sequence_number\":14}\n\n" + } + } + ] +} diff --git a/packages/llm/test/fixtures/recordings/openai-responses/gpt-5-5-drives-a-tool-loop.json b/packages/ai/test/fixtures/recordings/openai-responses/gpt-5-5-drives-a-tool-loop.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-responses/gpt-5-5-drives-a-tool-loop.json rename to packages/ai/test/fixtures/recordings/openai-responses/gpt-5-5-drives-a-tool-loop.json diff --git a/packages/llm/test/fixtures/recordings/openai-responses/gpt-5-5-streams-text.json b/packages/ai/test/fixtures/recordings/openai-responses/gpt-5-5-streams-text.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-responses/gpt-5-5-streams-text.json rename to packages/ai/test/fixtures/recordings/openai-responses/gpt-5-5-streams-text.json diff --git a/packages/llm/test/fixtures/recordings/openai-responses/gpt-5-5-streams-tool-call.json b/packages/ai/test/fixtures/recordings/openai-responses/gpt-5-5-streams-tool-call.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-responses/gpt-5-5-streams-tool-call.json rename to packages/ai/test/fixtures/recordings/openai-responses/gpt-5-5-streams-tool-call.json diff --git a/packages/llm/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-image-tool-result.json b/packages/ai/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-image-tool-result.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-image-tool-result.json rename to packages/ai/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-image-tool-result.json diff --git a/packages/llm/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-reasoning-continuation.json b/packages/ai/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-reasoning-continuation.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-reasoning-continuation.json rename to packages/ai/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-reasoning-continuation.json diff --git a/packages/llm/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-reasoning.json b/packages/ai/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-reasoning.json similarity index 100% rename from packages/llm/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-reasoning.json rename to packages/ai/test/fixtures/recordings/openai-responses/openai-responses-gpt-5-5-reasoning.json diff --git a/packages/ai/test/fixtures/recordings/openrouter-reasoning-tool-loop.json b/packages/ai/test/fixtures/recordings/openrouter-reasoning-tool-loop.json new file mode 100644 index 000000000000..343f4d816083 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/openrouter-reasoning-tool-loop.json @@ -0,0 +1,55 @@ +{ + "version": 1, + "metadata": { + "model": "anthropic/claude-sonnet-4.6", + "tags": [ + "prefix:openai-compatible-chat", + "provider:openrouter", + "protocol:openai-chat", + "reasoning", + "continuation", + "tool", + "tool-loop" + ], + "name": "openrouter-reasoning-tool-loop", + "recordedAt": "2026-07-18T18:02:15.859Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://openrouter.ai/api/v1/chat/completions", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"anthropic/claude-sonnet-4.6\",\"messages\":[{\"role\":\"system\",\"content\":\"Use the get_weather tool exactly once. After the tool result, reply exactly: Paris is sunny.\"},{\"role\":\"user\",\"content\":\"What is the weather in Paris?\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"description\":\"Get current weather for a city.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false}}}],\"stream\":true,\"stream_options\":{\"include_usage\":true},\"max_tokens\":1536,\"reasoning\":{\"max_tokens\":1024}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": ": OPENROUTER PROCESSING\n\n: OPENROUTER PROCESSING\n\ndata: {\"id\":\"gen-1784397732-OaggEWvVIDtBtcPF4n0O\",\"object\":\"chat.completion.chunk\",\"created\":1784397732,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\",\"reasoning\":\"The user wants\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"The user wants\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\n: OPENROUTER PROCESSING\n\ndata: {\"id\":\"gen-1784397732-OaggEWvVIDtBtcPF4n0O\",\"object\":\"chat.completion.chunk\",\"created\":1784397732,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\",\"reasoning\":\" to know the weather in Paris. I'll use the get_weather tool.\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\" to know the weather in Paris. I'll use the get_weather tool.\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784397732-OaggEWvVIDtBtcPF4n0O\",\"object\":\"chat.completion.chunk\",\"created\":1784397732,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"signature\":\"ErkCCosBCA8YAipAjKnRKpxkZ4eHrMPJ63IWEOYPSzb+XSHyG+vLK+2ks2O9T4N9M37Xn2kausQSH1rfsrdmKxgUlBg6yUFRgMVR7DIRY2xhdWRlLXNvbm5ldC00LTY4AEIIdGhpbmtpbmdaJDRjMGYwNDZmLTI1ZmQtNDVmYi1iZmIzLWEwOGE4ZTI0OWNhNxIMNFb5O6pb4nX0HojdGgyL5h+CAIpsxpdM1QgiMGm/i3ST6F5mAhxB+Uez0Cm95ra9yvQkrzHaA/AmWoXpdmPlczSn1S1RDk2IqeA57Spbf7JT44jygtLQt6yZmGzoTBHn3VkwaNZsuuAtbdo4B5QJXooa/AoKKs54QZ2kfS640vsv5flQVCg7CoQCFuLKjIeLMO7MnxVyuskXJr1DgesTa7I0ScF53U9JGhgB\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784397732-OaggEWvVIDtBtcPF4n0O\",\"object\":\"chat.completion.chunk\",\"created\":1784397732,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Sure! Let me check the weather in Paris for you right now!\",\"role\":\"assistant\"},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784397732-OaggEWvVIDtBtcPF4n0O\",\"object\":\"chat.completion.chunk\",\"created\":1784397732,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":null,\"role\":\"assistant\",\"tool_calls\":[{\"index\":0,\"id\":\"toolu_01PaChhcyw3yu2P2bDS2bgAA\",\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"arguments\":\"\"}}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784397732-OaggEWvVIDtBtcPF4n0O\",\"object\":\"chat.completion.chunk\",\"created\":1784397732,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":null,\"role\":\"assistant\",\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"\"}}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784397732-OaggEWvVIDtBtcPF4n0O\",\"object\":\"chat.completion.chunk\",\"created\":1784397732,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":null,\"role\":\"assistant\",\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"{\\\"city\\\": \\\"Paris\"}}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784397732-OaggEWvVIDtBtcPF4n0O\",\"object\":\"chat.completion.chunk\",\"created\":1784397732,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":null,\"role\":\"assistant\",\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"\\\"}\"}}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784397732-OaggEWvVIDtBtcPF4n0O\",\"object\":\"chat.completion.chunk\",\"created\":1784397732,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\",\"reasoning\":null},\"finish_reason\":\"tool_calls\",\"native_finish_reason\":\"tool_use\"}]}\n\ndata: {\"id\":\"gen-1784397732-OaggEWvVIDtBtcPF4n0O\",\"object\":\"chat.completion.chunk\",\"created\":1784397732,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"service_tier\":\"default\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\"},\"finish_reason\":\"tool_calls\",\"native_finish_reason\":\"tool_use\"}],\"usage\":{\"prompt_tokens\":623,\"completion_tokens\":95,\"total_tokens\":718,\"cost\":0.003294,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":0,\"cache_write_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":0.003294,\"upstream_inference_prompt_cost\":0.001869,\"upstream_inference_completions_cost\":0.001425},\"completion_tokens_details\":{\"reasoning_tokens\":19,\"image_tokens\":0,\"audio_tokens\":0}}}\n\ndata: [DONE]\n\n" + } + }, + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://openrouter.ai/api/v1/chat/completions", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"anthropic/claude-sonnet-4.6\",\"messages\":[{\"role\":\"system\",\"content\":\"Use the get_weather tool exactly once. After the tool result, reply exactly: Paris is sunny.\"},{\"role\":\"user\",\"content\":\"What is the weather in Paris?\"},{\"role\":\"assistant\",\"content\":\"Sure! Let me check the weather in Paris for you right now!\",\"tool_calls\":[{\"id\":\"toolu_01PaChhcyw3yu2P2bDS2bgAA\",\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"arguments\":\"{\\\"city\\\":\\\"Paris\\\"}\"}}],\"reasoning\":\"The user wants to know the weather in Paris. I'll use the get_weather tool.\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"The user wants to know the weather in Paris. I'll use the get_weather tool.\",\"format\":\"anthropic-claude-v1\",\"index\":0,\"signature\":\"ErkCCosBCA8YAipAjKnRKpxkZ4eHrMPJ63IWEOYPSzb+XSHyG+vLK+2ks2O9T4N9M37Xn2kausQSH1rfsrdmKxgUlBg6yUFRgMVR7DIRY2xhdWRlLXNvbm5ldC00LTY4AEIIdGhpbmtpbmdaJDRjMGYwNDZmLTI1ZmQtNDVmYi1iZmIzLWEwOGE4ZTI0OWNhNxIMNFb5O6pb4nX0HojdGgyL5h+CAIpsxpdM1QgiMGm/i3ST6F5mAhxB+Uez0Cm95ra9yvQkrzHaA/AmWoXpdmPlczSn1S1RDk2IqeA57Spbf7JT44jygtLQt6yZmGzoTBHn3VkwaNZsuuAtbdo4B5QJXooa/AoKKs54QZ2kfS640vsv5flQVCg7CoQCFuLKjIeLMO7MnxVyuskXJr1DgesTa7I0ScF53U9JGhgB\"}]},{\"role\":\"tool\",\"tool_call_id\":\"toolu_01PaChhcyw3yu2P2bDS2bgAA\",\"content\":\"{\\\"temperature\\\":22,\\\"condition\\\":\\\"sunny\\\"}\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"description\":\"Get current weather for a city.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false}}}],\"stream\":true,\"stream_options\":{\"include_usage\":true},\"max_tokens\":1536,\"reasoning\":{\"max_tokens\":1024}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": ": OPENROUTER PROCESSING\n\n: OPENROUTER PROCESSING\n\ndata: {\"id\":\"gen-1784397734-HY78YkUzZ8xIXuimN9bb\",\"object\":\"chat.completion.chunk\",\"created\":1784397734,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Paris\",\"role\":\"assistant\"},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784397734-HY78YkUzZ8xIXuimN9bb\",\"object\":\"chat.completion.chunk\",\"created\":1784397734,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\" is sunny.\",\"role\":\"assistant\"},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784397734-HY78YkUzZ8xIXuimN9bb\",\"object\":\"chat.completion.chunk\",\"created\":1784397734,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\"},\"finish_reason\":\"stop\",\"native_finish_reason\":\"end_turn\"}]}\n\ndata: {\"id\":\"gen-1784397734-HY78YkUzZ8xIXuimN9bb\",\"object\":\"chat.completion.chunk\",\"created\":1784397734,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"service_tier\":\"default\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\"},\"finish_reason\":\"stop\",\"native_finish_reason\":\"end_turn\"}],\"usage\":{\"prompt_tokens\":739,\"completion_tokens\":7,\"total_tokens\":746,\"cost\":0.002322,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":0,\"cache_write_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":0.002322,\"upstream_inference_prompt_cost\":0.002217,\"upstream_inference_completions_cost\":0.000105},\"completion_tokens_details\":{\"reasoning_tokens\":0,\"image_tokens\":0,\"audio_tokens\":0}}}\n\ndata: [DONE]\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/openrouter-reasoning.json b/packages/ai/test/fixtures/recordings/openrouter-reasoning.json new file mode 100644 index 000000000000..46f8a28296d6 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/openrouter-reasoning.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "metadata": { + "model": "anthropic/claude-sonnet-4.6", + "tags": [ + "prefix:openai-compatible-chat", + "provider:openrouter", + "protocol:openai-chat", + "reasoning" + ], + "name": "openrouter-reasoning", + "recordedAt": "2026-07-18T11:28:39.267Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://openrouter.ai/api/v1/chat/completions", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"anthropic/claude-sonnet-4.6\",\"messages\":[{\"role\":\"system\",\"content\":\"Think through the arithmetic, then reply with only the final integer.\"},{\"role\":\"user\",\"content\":\"What is 173 multiplied by 219?\"}],\"stream\":true,\"stream_options\":{\"include_usage\":true},\"max_tokens\":1536,\"temperature\":0,\"reasoning\":{\"max_tokens\":1024}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": ": OPENROUTER PROCESSING\n\n: OPENROUTER PROCESSING\n\ndata: {\"id\":\"gen-1784374117-AXXPsQRoclZeQGx2uHeK\",\"object\":\"chat.completion.chunk\",\"created\":1784374117,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\",\"reasoning\":\"173\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"173\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\n: OPENROUTER PROCESSING\n\ndata: {\"id\":\"gen-1784374117-AXXPsQRoclZeQGx2uHeK\",\"object\":\"chat.completion.chunk\",\"created\":1784374117,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\",\"reasoning\":\" × 219\\n\\n173 × 200 = 34,600\\n173 × 19 = 173 × 20 - 173 = 3,460 - 173 = 3,287\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\" × 219\\n\\n173 × 200 = 34,600\\n173 × 19 = 173 × 20 - 173 = 3,460 - 173 = 3,287\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784374117-AXXPsQRoclZeQGx2uHeK\",\"object\":\"chat.completion.chunk\",\"created\":1784374117,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\",\"reasoning\":\"\\n\\n34,600 + 3,287 = 37,887\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"\\n\\n34,600 + 3,287 = 37,887\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784374117-AXXPsQRoclZeQGx2uHeK\",\"object\":\"chat.completion.chunk\",\"created\":1784374117,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"signature\":\"EtgCCosBCA8YAipA0W4viH3kgBs43Cl5ewwVBPXTQElvzfbA2TLF4iSbKy9ZZDCSDjjAlF3Bs4ELEnP3vrrTuTioC6OB380lXQdyIDIRY2xhdWRlLXNvbm5ldC00LTY4AEIIdGhpbmtpbmdaJDRjMGYwNDZmLTI1ZmQtNDVmYi1iZmIzLWEwOGE4ZTI0OWNhNxIMMiUlJC3x/5p5PuTwGgwlc8eipZyoM94BHwMiMO45uQx/ymeOjbugi7RDVPZ4jZXSIiEbVi2CD7zPjAK5fFQoVGP1HD55v9CER823JCp6Dg5Xb7Lrk6NUd1XN2KTKrttK7mATE+IBrDTFmor/1cNeg+9gjIbxM/jn/6L5HPmh3/esEVu24Q0IGLZVoE7cTgGgxsrceKMD71Jp2XQgIWD8ltsPfWw3gSc4p+z18UuPN6LuR0mHHENTnClHrAPnOrxbDIl4ZwZgMX8YAQ==\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784374117-AXXPsQRoclZeQGx2uHeK\",\"object\":\"chat.completion.chunk\",\"created\":1784374117,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"37887\",\"role\":\"assistant\"},\"finish_reason\":null,\"native_finish_reason\":null}]}\n\ndata: {\"id\":\"gen-1784374117-AXXPsQRoclZeQGx2uHeK\",\"object\":\"chat.completion.chunk\",\"created\":1784374117,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\",\"reasoning\":null},\"finish_reason\":\"stop\",\"native_finish_reason\":\"end_turn\"}]}\n\ndata: {\"id\":\"gen-1784374117-AXXPsQRoclZeQGx2uHeK\",\"object\":\"chat.completion.chunk\",\"created\":1784374117,\"model\":\"anthropic/claude-sonnet-4.6\",\"provider\":\"Anthropic\",\"service_tier\":\"default\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"\",\"role\":\"assistant\"},\"finish_reason\":\"stop\",\"native_finish_reason\":\"end_turn\"}],\"usage\":{\"prompt_tokens\":61,\"completion_tokens\":80,\"total_tokens\":141,\"cost\":0.001383,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":0,\"cache_write_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":0.001383,\"upstream_inference_prompt_cost\":0.000183,\"upstream_inference_completions_cost\":0.0012},\"completion_tokens_details\":{\"reasoning_tokens\":29,\"image_tokens\":0,\"audio_tokens\":0}}}\n\ndata: [DONE]\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/pdf/anthropic-tool-result.json b/packages/ai/test/fixtures/recordings/pdf/anthropic-tool-result.json new file mode 100644 index 000000000000..69281239e5b5 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/pdf/anthropic-tool-result.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:pdf", + "pdf", + "provider:anthropic", + "protocol:anthropic-messages", + "tool", + "tool-result" + ], + "name": "pdf/anthropic-tool-result", + "recordedAt": "2026-07-22T18:15:39.002Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.anthropic.com/v1/messages", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"claude-haiku-4-5-20251001\",\"system\":[{\"type\":\"text\",\"text\":\"Read the PDF returned by the tool and follow the user's response format exactly.\"}],\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Return only the verification code from the PDF.\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"tool_use\",\"id\":\"call_pdf_1\",\"name\":\"read_pdf\",\"input\":{}}]},{\"role\":\"user\",\"content\":[{\"type\":\"tool_result\",\"tool_use_id\":\"call_pdf_1\",\"content\":[{\"type\":\"text\",\"text\":\"PDF read successfully\"},{\"type\":\"document\",\"source\":{\"type\":\"base64\",\"media_type\":\"application/pdf\",\"data\":\"JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK\"}}]}]}],\"tools\":[{\"name\":\"read_pdf\",\"description\":\"Read the attached PDF.\",\"input_schema\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false}}],\"stream\":true,\"max_tokens\":40,\"temperature\":0}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"model\":\"claude-haiku-4-5-20251001\",\"id\":\"msg_011CdHYzxyRpSVFgwTm6ccUr\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[],\"stop_reason\":null,\"stop_sequence\":null,\"stop_details\":null,\"usage\":{\"input_tokens\":2229,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":0,\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":0},\"output_tokens\":2,\"service_tier\":\"standard\",\"inference_geo\":\"not_available\"}} }\n\nevent: content_block_start\ndata: {\"type\":\"content_block_start\",\"index\":0,\"content_block\":{\"type\":\"text\",\"text\":\"\"} }\n\nevent: ping\ndata: {\"type\": \"ping\"}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"ORCH\"} }\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"ID-7391\"} }\n\nevent: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0 }\n\nevent: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\",\"stop_sequence\":null,\"stop_details\":null},\"usage\":{\"input_tokens\":2229,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":0,\"output_tokens\":9} }\n\nevent: message_stop\ndata: {\"type\":\"message_stop\" }\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/pdf/anthropic-user-input.json b/packages/ai/test/fixtures/recordings/pdf/anthropic-user-input.json new file mode 100644 index 000000000000..372474e11f0b --- /dev/null +++ b/packages/ai/test/fixtures/recordings/pdf/anthropic-user-input.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:pdf", + "pdf", + "provider:anthropic", + "protocol:anthropic-messages", + "user-input" + ], + "name": "pdf/anthropic-user-input", + "recordedAt": "2026-07-22T18:15:37.979Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.anthropic.com/v1/messages", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"claude-haiku-4-5-20251001\",\"messages\":[{\"role\":\"user\",\"content\":[{\"type\":\"document\",\"source\":{\"type\":\"base64\",\"media_type\":\"application/pdf\",\"data\":\"JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK\"}},{\"type\":\"text\",\"text\":\"Return only the verification code from the PDF.\"}]}],\"stream\":true,\"max_tokens\":40,\"temperature\":0}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: message_start\ndata: {\"type\":\"message_start\",\"message\":{\"model\":\"claude-haiku-4-5-20251001\",\"id\":\"msg_011CdHYzsayb45rgfamcjFt3\",\"type\":\"message\",\"role\":\"assistant\",\"content\":[],\"stop_reason\":null,\"stop_sequence\":null,\"stop_details\":null,\"usage\":{\"input_tokens\":1602,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":0,\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":0},\"output_tokens\":2,\"service_tier\":\"standard\",\"inference_geo\":\"not_available\"}} }\n\nevent: content_block_start\ndata: {\"type\":\"content_block_start\",\"index\":0,\"content_block\":{\"type\":\"text\",\"text\":\"\"} }\n\nevent: ping\ndata: {\"type\": \"ping\"}\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"ORCH\"} }\n\nevent: content_block_delta\ndata: {\"type\":\"content_block_delta\",\"index\":0,\"delta\":{\"type\":\"text_delta\",\"text\":\"ID-7391\"}}\n\nevent: content_block_stop\ndata: {\"type\":\"content_block_stop\",\"index\":0 }\n\nevent: message_delta\ndata: {\"type\":\"message_delta\",\"delta\":{\"stop_reason\":\"end_turn\",\"stop_sequence\":null,\"stop_details\":null},\"usage\":{\"input_tokens\":1602,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":0,\"output_tokens\":9} }\n\nevent: message_stop\ndata: {\"type\":\"message_stop\" }\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/pdf/bedrock-tool-result.json b/packages/ai/test/fixtures/recordings/pdf/bedrock-tool-result.json new file mode 100644 index 000000000000..3225e019d667 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/pdf/bedrock-tool-result.json @@ -0,0 +1,36 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:pdf", + "pdf", + "provider:amazon-bedrock", + "protocol:bedrock-converse", + "tool", + "tool-result" + ], + "name": "pdf/bedrock-tool-result", + "recordedAt": "2026-07-22T18:15:52.400Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-haiku-4-5-20251001-v1%3A0/converse-stream", + "headers": { + "content-type": "application/json" + }, + "body": "{\"modelId\":\"us.anthropic.claude-haiku-4-5-20251001-v1:0\",\"messages\":[{\"role\":\"user\",\"content\":[{\"text\":\"Return only the verification code from the PDF.\"}]},{\"role\":\"assistant\",\"content\":[{\"toolUse\":{\"toolUseId\":\"call_pdf_1\",\"name\":\"read_pdf\",\"input\":{}}}]},{\"role\":\"user\",\"content\":[{\"toolResult\":{\"toolUseId\":\"call_pdf_1\",\"content\":[{\"text\":\"PDF read successfully\"},{\"document\":{\"format\":\"pdf\",\"name\":\"verification\",\"source\":{\"bytes\":\"JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK\"}}}],\"status\":\"success\"}}]}],\"system\":[{\"text\":\"Read the PDF returned by the tool and follow the user's response format exactly.\"}],\"inferenceConfig\":{\"maxTokens\":40,\"temperature\":0},\"toolConfig\":{\"tools\":[{\"toolSpec\":{\"name\":\"read_pdf\",\"description\":\"Read the attached PDF.\",\"inputSchema\":{\"json\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false}}}}]}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/vnd.amazon.eventstream" + }, + "body": "AAAAqgAAAFLa0GiGCzpldmVudC10eXBlBwAMbWVzc2FnZVN0YXJ0DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSUyIsInJvbGUiOiJhc3Npc3RhbnQifXIDPnsAAADIAAAAV0lIuCQLOmV2ZW50LXR5cGUHABFjb250ZW50QmxvY2tEZWx0YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImNvbnRlbnRCbG9ja0luZGV4IjowLCJkZWx0YSI6eyJ0ZXh0IjoiT1JDSCJ9LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUSJ9z2HHHgAAAMUAAABXsdh8lQs6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJsb2NrSW5kZXgiOjAsImRlbHRhIjp7InRleHQiOiJJRC0ifSwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PIn2+8d8RAAAAywAAAFcO6ML0CzpldmVudC10eXBlBwARY29udGVudEJsb2NrRGVsdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwiZGVsdGEiOnsidGV4dCI6IjcifSwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVlcifSIeZ+kAAACzAAAAV8dKafoLOmV2ZW50LXR5cGUHABFjb250ZW50QmxvY2tEZWx0YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImNvbnRlbnRCbG9ja0luZGV4IjowLCJkZWx0YSI6eyJ0ZXh0IjoiMzkxIn0sInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2dyJ9HAStJQAAAMAAAABWDj/Dcws6ZXZlbnQtdHlwZQcAEGNvbnRlbnRCbG9ja1N0b3ANOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2NyJ9EPTSwQAAALAAAABRaYm2Hws6ZXZlbnQtdHlwZQcAC21lc3NhZ2VTdG9wDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVIiwic3RvcFJlYXNvbiI6ImVuZF90dXJuIn0SuCAcAAAA+AAAAE6MAqhiCzpldmVudC10eXBlBwAIbWV0YWRhdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJtZXRyaWNzIjp7ImxhdGVuY3lNcyI6MzkyMn0sInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFIiwidXNhZ2UiOnsiaW5wdXRUb2tlbnMiOjIyNDEsIm91dHB1dFRva2VucyI6Niwic2VydmVyVG9vbFVzYWdlIjp7fSwidG90YWxUb2tlbnMiOjIyNDd9fcd35Hw=", + "bodyEncoding": "base64" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/pdf/bedrock-user-input.json b/packages/ai/test/fixtures/recordings/pdf/bedrock-user-input.json new file mode 100644 index 000000000000..53f04e5777d2 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/pdf/bedrock-user-input.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:pdf", + "pdf", + "provider:amazon-bedrock", + "protocol:bedrock-converse", + "user-input" + ], + "name": "pdf/bedrock-user-input", + "recordedAt": "2026-07-22T18:15:48.408Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://bedrock-runtime.us-east-1.amazonaws.com/model/us.anthropic.claude-haiku-4-5-20251001-v1%3A0/converse-stream", + "headers": { + "content-type": "application/json" + }, + "body": "{\"modelId\":\"us.anthropic.claude-haiku-4-5-20251001-v1:0\",\"messages\":[{\"role\":\"user\",\"content\":[{\"document\":{\"format\":\"pdf\",\"name\":\"verification\",\"source\":{\"bytes\":\"JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK\"}}},{\"text\":\"Return only the verification code from the PDF.\"}]}],\"inferenceConfig\":{\"maxTokens\":40,\"temperature\":0}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/vnd.amazon.eventstream" + }, + "body": "AAAAtgAAAFJ/wBIFCzpldmVudC10eXBlBwAMbWVzc2FnZVN0YXJ0DTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNCIsInJvbGUiOiJhc3Npc3RhbnQifURlAvAAAADGAAAAV/Z4BkULOmV2ZW50LXR5cGUHABFjb250ZW50QmxvY2tEZWx0YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImNvbnRlbnRCbG9ja0luZGV4IjowLCJkZWx0YSI6eyJ0ZXh0IjoiT1JDSCJ9LCJwIjoiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk8ifU1V/fQAAADWAAAAV5aYkccLOmV2ZW50LXR5cGUHABFjb250ZW50QmxvY2tEZWx0YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7ImNvbnRlbnRCbG9ja0luZGV4IjowLCJkZWx0YSI6eyJ0ZXh0IjoiSUQtIn0sInAiOiJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1In1Rr1g8AAAAoAAAAFfgCoSoCzpldmVudC10eXBlBwARY29udGVudEJsb2NrRGVsdGENOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwiZGVsdGEiOnsidGV4dCI6IjcifSwicCI6ImFiY2RlZiJ9UwQMPQAAAM8AAABX+2hkNAs6ZXZlbnQtdHlwZQcAEWNvbnRlbnRCbG9ja0RlbHRhDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsiY29udGVudEJsb2NrSW5kZXgiOjAsImRlbHRhIjp7InRleHQiOiIzOTEifSwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWSJ9ZmoyCwAAAJAAAABWNiwMuAs6ZXZlbnQtdHlwZQcAEGNvbnRlbnRCbG9ja1N0b3ANOmNvbnRlbnQtdHlwZQcAEGFwcGxpY2F0aW9uL2pzb24NOm1lc3NhZ2UtdHlwZQcABWV2ZW50eyJjb250ZW50QmxvY2tJbmRleCI6MCwicCI6ImFiY2RlZmdoaWprbCJ9wtmmXgAAAIgAAABR+NhFWAs6ZXZlbnQtdHlwZQcAC21lc3NhZ2VTdG9wDTpjb250ZW50LXR5cGUHABBhcHBsaWNhdGlvbi9qc29uDTptZXNzYWdlLXR5cGUHAAVldmVudHsicCI6ImFiY2RlZmciLCJzdG9wUmVhc29uIjoiZW5kX3R1cm4ifa8D/doAAADvAAAATl7C4/ALOmV2ZW50LXR5cGUHAAhtZXRhZGF0YQ06Y29udGVudC10eXBlBwAQYXBwbGljYXRpb24vanNvbg06bWVzc2FnZS10eXBlBwAFZXZlbnR7Im1ldHJpY3MiOnsibGF0ZW5jeU1zIjo0NTQ1fSwicCI6ImFiY2RlZmdoaWprbG1ub3BxcnN0dXYiLCJ1c2FnZSI6eyJpbnB1dFRva2VucyI6MTYxNCwib3V0cHV0VG9rZW5zIjo2LCJzZXJ2ZXJUb29sVXNhZ2UiOnt9LCJ0b3RhbFRva2VucyI6MTYyMH19db4j2Q==", + "bodyEncoding": "base64" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/pdf/gemini-tool-result.json b/packages/ai/test/fixtures/recordings/pdf/gemini-tool-result.json new file mode 100644 index 000000000000..1ac7bc5f6ef7 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/pdf/gemini-tool-result.json @@ -0,0 +1,53 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:pdf", + "pdf", + "provider:google", + "protocol:gemini", + "tool", + "tool-result" + ], + "name": "pdf/gemini-tool-result", + "recordedAt": "2026-07-22T18:21:59.606Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:streamGenerateContent?alt=sse", + "headers": { + "content-type": "application/json" + }, + "body": "{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"Use read_pdf with path verification.pdf and return the verification code.\"}]}],\"systemInstruction\":{\"parts\":[{\"text\":\"Call read_pdf exactly once with path verification.pdf, then reply only with the verification code from its PDF.\"}]},\"tools\":[{\"functionDeclarations\":[{\"name\":\"read_pdf\",\"description\":\"Read the attached PDF.\",\"parameters\":{\"required\":[\"path\"],\"type\":\"object\",\"properties\":{\"path\":{\"type\":\"string\"}}}}]}],\"generationConfig\":{\"maxOutputTokens\":256,\"temperature\":0}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": "data: {\"candidates\": [{\"content\": {\"parts\": [{\"functionCall\": {\"name\": \"read_pdf\",\"args\": {\"path\": \"verification.pdf\"},\"id\": \"58shgmez\"},\"thoughtSignature\": \"EqkCCqYCARFNMg/JrCTv5i3zYENFBVpZNFL3pbzJmi5Eu387ncF703xFMB4pwyaP7a1gi49EqBhCI2hWOpesU5nZQOLAhGgExKGa2GM+HzpEB5g62r0NFblm/BGkVZaImTuHR7bytfRC5jHQlHKo4OS27OLUVjvkMkBIYsvjhDErY7niERbXJVpyxTVqUf1GgZMSu8kC9/5WDlMs9xVKNT/6KMW4PhhSR9nXg4KZUa+bC03/ydhsWWgBa5aLCgvTq7WPj217xIsmUkSiRedIffPsUSNjYdMHUvWi8bOlvM1veEEP6GIfv5h9gXXzjnHbEHfQxV8PZuBAyY7iM6nqyfkJNdkZ1HdB7DXMBsMsRN6SgrIrFoXX2WaGrkoEI5tdZx1t/gdwF1jEVT6k\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 81,\"candidatesTokenCount\": 18,\"totalTokenCount\": 151,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 81}],\"thoughtsTokenCount\": 52,\"serviceTier\": \"standard\"},\"modelVersion\": \"gemini-3.5-flash\",\"responseId\": \"RAphaui3OaSHz7IPy8Kb4Ak\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 81,\"candidatesTokenCount\": 18,\"totalTokenCount\": 151,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 81}],\"thoughtsTokenCount\": 52,\"serviceTier\": \"standard\"},\"modelVersion\": \"gemini-3.5-flash\",\"responseId\": \"RAphaui3OaSHz7IPy8Kb4Ak\"}\r\n\r\n" + } + }, + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:streamGenerateContent?alt=sse", + "headers": { + "content-type": "application/json" + }, + "body": "{\"contents\":[{\"role\":\"user\",\"parts\":[{\"text\":\"Use read_pdf with path verification.pdf and return the verification code.\"}]},{\"role\":\"model\",\"parts\":[{\"functionCall\":{\"id\":\"58shgmez\",\"name\":\"read_pdf\",\"args\":{\"path\":\"verification.pdf\"}},\"thoughtSignature\":\"EqkCCqYCARFNMg/JrCTv5i3zYENFBVpZNFL3pbzJmi5Eu387ncF703xFMB4pwyaP7a1gi49EqBhCI2hWOpesU5nZQOLAhGgExKGa2GM+HzpEB5g62r0NFblm/BGkVZaImTuHR7bytfRC5jHQlHKo4OS27OLUVjvkMkBIYsvjhDErY7niERbXJVpyxTVqUf1GgZMSu8kC9/5WDlMs9xVKNT/6KMW4PhhSR9nXg4KZUa+bC03/ydhsWWgBa5aLCgvTq7WPj217xIsmUkSiRedIffPsUSNjYdMHUvWi8bOlvM1veEEP6GIfv5h9gXXzjnHbEHfQxV8PZuBAyY7iM6nqyfkJNdkZ1HdB7DXMBsMsRN6SgrIrFoXX2WaGrkoEI5tdZx1t/gdwF1jEVT6k\"}]},{\"role\":\"user\",\"parts\":[{\"functionResponse\":{\"id\":\"58shgmez\",\"name\":\"read_pdf\",\"response\":{\"name\":\"read_pdf\",\"content\":\"PDF read successfully\"},\"parts\":[{\"inlineData\":{\"mimeType\":\"application/pdf\",\"data\":\"JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK\"}}]}}]}],\"systemInstruction\":{\"parts\":[{\"text\":\"Call read_pdf exactly once with path verification.pdf, then reply only with the verification code from its PDF.\"}]},\"tools\":[{\"functionDeclarations\":[{\"name\":\"read_pdf\",\"description\":\"Read the attached PDF.\",\"parameters\":{\"required\":[\"path\"],\"type\":\"object\",\"properties\":{\"path\":{\"type\":\"string\"}}}}]}],\"generationConfig\":{\"maxOutputTokens\":256,\"temperature\":0}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"ORCHID-7391\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 123,\"candidatesTokenCount\": 8,\"totalTokenCount\": 184,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 123}],\"thoughtsTokenCount\": 53,\"serviceTier\": \"standard\"},\"modelVersion\": \"gemini-3.5-flash\",\"responseId\": \"RgphaoL6CMjQz7IPjOnEmQI\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"\",\"thoughtSignature\": \"EqECCp4CARFNMg9obBl8O6iU9lawUIWiE+1vztZm9NtaT9FuyJz343hd9ruz+xPco4Q1DY1GF81ZiSI2ElBkt8Wfwsqtix9LNGSMvbZhhk/ZnB54t05M/Dft1kujcMvEdZUWUI/jWaJ349tO1bKVH9MacG5+gl0n4y8DwyQZSV3xIcet547drSkcA/TM03RB+yj1/dcLHsvUjmv9EnO897vZgO2Dk4tbZ2NyCtOeQ3JKVhUTLg2pjkGk+POCNiOdESWiUzxdQKw9LiV6nnzi071tXNiMeVimq6d7xAzRVNapI2uXynvn9Uk3eyn85purOFa8cKriK9oD6vcyGMqgd9+gu2m3to0IHqd7o+2YSr1m5qV1xT1R2/WRQEtb1b1AuOAU6w==\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 1277,\"candidatesTokenCount\": 8,\"totalTokenCount\": 1338,\"promptTokensDetails\": [{\"modality\": \"IMAGE\",\"tokenCount\": 1102},{\"modality\": \"TEXT\",\"tokenCount\": 175}],\"thoughtsTokenCount\": 53,\"serviceTier\": \"standard\"},\"modelVersion\": \"gemini-3.5-flash\",\"responseId\": \"RgphaoL6CMjQz7IPjOnEmQI\"}\r\n\r\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/pdf/gemini-user-input.json b/packages/ai/test/fixtures/recordings/pdf/gemini-user-input.json new file mode 100644 index 000000000000..dbe73618a04d --- /dev/null +++ b/packages/ai/test/fixtures/recordings/pdf/gemini-user-input.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:pdf", + "pdf", + "provider:google", + "protocol:gemini", + "user-input" + ], + "name": "pdf/gemini-user-input", + "recordedAt": "2026-07-22T18:20:55.140Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:streamGenerateContent?alt=sse", + "headers": { + "content-type": "application/json" + }, + "body": "{\"contents\":[{\"role\":\"user\",\"parts\":[{\"inlineData\":{\"mimeType\":\"application/pdf\",\"data\":\"JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK\"}},{\"text\":\"Return only the verification code from the PDF.\"}]}],\"generationConfig\":{\"maxOutputTokens\":256,\"temperature\":0}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": "data: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"ORCH\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 10,\"candidatesTokenCount\": 2,\"totalTokenCount\": 127,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 10}],\"thoughtsTokenCount\": 115,\"serviceTier\": \"standard\"},\"modelVersion\": \"gemini-3.5-flash\",\"responseId\": \"BQpharW2KaPgz7IP6uSLiAw\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"ID-7391\"}],\"role\": \"model\"},\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 10,\"candidatesTokenCount\": 8,\"totalTokenCount\": 133,\"promptTokensDetails\": [{\"modality\": \"TEXT\",\"tokenCount\": 10}],\"thoughtsTokenCount\": 115,\"serviceTier\": \"standard\"},\"modelVersion\": \"gemini-3.5-flash\",\"responseId\": \"BQpharW2KaPgz7IP6uSLiAw\"}\r\n\r\ndata: {\"candidates\": [{\"content\": {\"parts\": [{\"text\": \"\",\"thoughtSignature\": \"EokECoYEARFNMg8L4fpLqaX8tIQZcvw2vLt3WsFjGqpuJGgna0/AGczwuzndRcf3LGIEaliCf4ijVOb1AG4/VPBh1kMzfjeAyHhvWIe4yQVoBwI7BjpFyLie+SnGTXQXKKy5ygRqRLFsV6DcAixNXXBHJw2x/2Nhtriryqs4fhWrL/P7ppHC10sMnTwN6Mw5x20NKwgT+rrw6lvYmQe9rdQsBJ6Zmp0GpPlwZZiAgzvwPfVoNwHSGb54xe/T9wjISjwWNgpedhbsIBDRZFDwruS4x57KBKeMPO69GLfeMP8PJ7rpR0HgT7nRbrl/OdykG/jqSMTvoRSqxawsD+Yr/DukgGatyfB5Ic+X4RhD07URpkGTAu/cakBtzhSmM/hpzKU9m/cId1UCjopLTtonUqSAKkroPdp8kIYw0MI2OZCNVwbDrdClUPmjRKfcTkcC2jNj1rS+WDFbm+mo+SP3rDSvvCdyJuiXHGKiM2EhbYnu42aHVC6w7eAe4Gv3Fq/0faW47r0ihbiAohFB9XUA+fD07g83EjIuc9Q6BRVTTcBfoRkrR/yFZKt3qwPq02W6rPD13/1wAnMtabNcxePMMGk7Dlxwng9yPS0NEge2KD+miOj9SC4aTvOTq2451tfK1x3UZqqb205zGOPbjizhH/CA/PGkG84hdkAG4mrUK0rEHqeWwRXDsxpyfto=\"}],\"role\": \"model\"},\"finishReason\": \"STOP\",\"index\": 0}],\"usageMetadata\": {\"promptTokenCount\": 530,\"candidatesTokenCount\": 8,\"totalTokenCount\": 653,\"promptTokensDetails\": [{\"modality\": \"IMAGE\",\"tokenCount\": 520},{\"modality\": \"TEXT\",\"tokenCount\": 10}],\"thoughtsTokenCount\": 115,\"serviceTier\": \"standard\"},\"modelVersion\": \"gemini-3.5-flash\",\"responseId\": \"BQpharW2KaPgz7IP6uSLiAw\"}\r\n\r\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/pdf/openai-tool-result.json b/packages/ai/test/fixtures/recordings/pdf/openai-tool-result.json new file mode 100644 index 000000000000..42363b5ec8b4 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/pdf/openai-tool-result.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:pdf", + "pdf", + "provider:openai", + "protocol:openai-responses", + "tool", + "tool-result" + ], + "name": "pdf/openai-tool-result", + "recordedAt": "2026-07-22T18:15:36.438Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.openai.com/v1/responses", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"gpt-4o-mini\",\"input\":[{\"role\":\"system\",\"content\":\"Read the PDF returned by the tool and follow the user's response format exactly.\"},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Return only the verification code from the PDF.\"}]},{\"type\":\"function_call\",\"call_id\":\"call_pdf_1\",\"name\":\"read_pdf\",\"arguments\":\"{}\"},{\"type\":\"function_call_output\",\"call_id\":\"call_pdf_1\",\"output\":[{\"type\":\"input_text\",\"text\":\"PDF read successfully\"},{\"type\":\"input_file\",\"filename\":\"verification.pdf\",\"file_data\":\"data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"read_pdf\",\"description\":\"Read the attached PDF.\",\"parameters\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false},\"strict\":false}],\"store\":false,\"max_output_tokens\":40,\"temperature\":0,\"stream\":true}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_0cd823aeeb11ef0e016a6108c703b88193872d736c48d60e2c\",\"object\":\"response\",\"created_at\":1784744135,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":40,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":false,\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Read the attached PDF.\",\"name\":\"read_pdf\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false},\"strict\":false}],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}\n\nevent: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_0cd823aeeb11ef0e016a6108c703b88193872d736c48d60e2c\",\"object\":\"response\",\"created_at\":1784744135,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":40,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":false,\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Read the attached PDF.\",\"name\":\"read_pdf\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false},\"strict\":false}],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}\n\nevent: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"The\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"ztkMbqje3EBwS\",\"output_index\":0,\"sequence_number\":4}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" verification\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"mEL\",\"output_index\":0,\"sequence_number\":5}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" code\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"l7H1kZM2CjW\",\"output_index\":0,\"sequence_number\":6}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" from\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"zoQfdh40bG4\",\"output_index\":0,\"sequence_number\":7}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" the\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"5fXB3VBJUbAr\",\"output_index\":0,\"sequence_number\":8}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" PDF\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"BpJQrXS6gY3c\",\"output_index\":0,\"sequence_number\":9}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" is\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"xmGyHaXtMBy6i\",\"output_index\":0,\"sequence_number\":10}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\":\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"oJeWezxDkzq3MRx\",\"output_index\":0,\"sequence_number\":11}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\" OR\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"LpS12bymKrO3H\",\"output_index\":0,\"sequence_number\":12}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"CH\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"EvCpePUNmEXVil\",\"output_index\":0,\"sequence_number\":13}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"ID\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"IS5u0zHGO1f3DZ\",\"output_index\":0,\"sequence_number\":14}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"-\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"sQxTFLJOfQQxxil\",\"output_index\":0,\"sequence_number\":15}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"739\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"iIJRJFEo0kyEU\",\"output_index\":0,\"sequence_number\":16}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"1\",\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"obfuscation\":\"lwMVw41zdSRsVxm\",\"output_index\":0,\"sequence_number\":17}\n\nevent: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":18,\"text\":\"The verification code from the PDF is: ORCHID-7391\"}\n\nevent: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"The verification code from the PDF is: ORCHID-7391\"},\"sequence_number\":19}\n\nevent: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"The verification code from the PDF is: ORCHID-7391\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":20}\n\nevent: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_0cd823aeeb11ef0e016a6108c703b88193872d736c48d60e2c\",\"object\":\"response\",\"created_at\":1784744135,\"status\":\"completed\",\"background\":false,\"completed_at\":1784744136,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":40,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_0cd823aeeb11ef0e016a6108c83f8081938114e89ac5d99c7e\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"The verification code from the PDF is: ORCHID-7391\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":false,\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[{\"type\":\"function\",\"description\":\"Read the attached PDF.\",\"name\":\"read_pdf\",\"output_schema\":null,\"parameters\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false},\"strict\":false}],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":107,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":16,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":123},\"user\":null,\"metadata\":{}},\"sequence_number\":21}\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/pdf/openai-user-input.json b/packages/ai/test/fixtures/recordings/pdf/openai-user-input.json new file mode 100644 index 000000000000..ab2b4a9dd774 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/pdf/openai-user-input.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:pdf", + "pdf", + "provider:openai", + "protocol:openai-responses", + "user-input" + ], + "name": "pdf/openai-user-input", + "recordedAt": "2026-07-22T18:15:34.867Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.openai.com/v1/responses", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"gpt-4o-mini\",\"input\":[{\"role\":\"user\",\"content\":[{\"type\":\"input_file\",\"filename\":\"verification.pdf\",\"file_data\":\"data:application/pdf;base64,JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK\"},{\"type\":\"input_text\",\"text\":\"Return only the verification code from the PDF.\"}]}],\"store\":false,\"max_output_tokens\":40,\"temperature\":0,\"stream\":true}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream; charset=utf-8" + }, + "body": "event: response.created\ndata: {\"type\":\"response.created\",\"response\":{\"id\":\"resp_098ccdfefefe7eee016a6108c55ad48194a250d21618f41130\",\"object\":\"response\",\"created_at\":1784744134,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":40,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":false,\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":0}\n\nevent: response.in_progress\ndata: {\"type\":\"response.in_progress\",\"response\":{\"id\":\"resp_098ccdfefefe7eee016a6108c55ad48194a250d21618f41130\",\"object\":\"response\",\"created_at\":1784744134,\"status\":\"in_progress\",\"background\":false,\"completed_at\":null,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":40,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"auto\",\"store\":false,\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":null,\"user\":null,\"metadata\":{}},\"sequence_number\":1}\n\nevent: response.output_item.added\ndata: {\"type\":\"response.output_item.added\",\"item\":{\"id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"type\":\"message\",\"status\":\"in_progress\",\"content\":[],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":2}\n\nevent: response.content_part.added\ndata: {\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"\"},\"sequence_number\":3}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"OR\",\"item_id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"logprobs\":[],\"obfuscation\":\"OT7X1BjsfOw0Y7\",\"output_index\":0,\"sequence_number\":4}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"CH\",\"item_id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"logprobs\":[],\"obfuscation\":\"XpcQS0WDba72lQ\",\"output_index\":0,\"sequence_number\":5}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"ID\",\"item_id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"logprobs\":[],\"obfuscation\":\"IfrmlWWbGSpVPM\",\"output_index\":0,\"sequence_number\":6}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"-\",\"item_id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"logprobs\":[],\"obfuscation\":\"Jpf9w1TEeBMJR6X\",\"output_index\":0,\"sequence_number\":7}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"739\",\"item_id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"logprobs\":[],\"obfuscation\":\"J1beY5zFoug8n\",\"output_index\":0,\"sequence_number\":8}\n\nevent: response.output_text.delta\ndata: {\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"1\",\"item_id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"logprobs\":[],\"obfuscation\":\"kG1Isnrwy5QR4QB\",\"output_index\":0,\"sequence_number\":9}\n\nevent: response.output_text.done\ndata: {\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"logprobs\":[],\"output_index\":0,\"sequence_number\":10,\"text\":\"ORCHID-7391\"}\n\nevent: response.content_part.done\ndata: {\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"ORCHID-7391\"},\"sequence_number\":11}\n\nevent: response.output_item.done\ndata: {\"type\":\"response.output_item.done\",\"item\":{\"id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"ORCHID-7391\"}],\"role\":\"assistant\"},\"output_index\":0,\"sequence_number\":12}\n\nevent: response.completed\ndata: {\"type\":\"response.completed\",\"response\":{\"id\":\"resp_098ccdfefefe7eee016a6108c55ad48194a250d21618f41130\",\"object\":\"response\",\"created_at\":1784744134,\"status\":\"completed\",\"background\":false,\"completed_at\":1784744134,\"error\":null,\"frequency_penalty\":0.0,\"incomplete_details\":null,\"instructions\":null,\"max_output_tokens\":40,\"max_tool_calls\":null,\"model\":\"gpt-4o-mini-2024-07-18\",\"moderation\":null,\"output\":[{\"id\":\"msg_098ccdfefefe7eee016a6108c6b6e48194bdd91a4de2cb7bbe\",\"type\":\"message\",\"status\":\"completed\",\"content\":[{\"type\":\"output_text\",\"annotations\":[],\"logprobs\":[],\"text\":\"ORCHID-7391\"}],\"role\":\"assistant\"}],\"parallel_tool_calls\":true,\"presence_penalty\":0.0,\"previous_response_id\":null,\"prompt_cache_key\":null,\"prompt_cache_retention\":\"in_memory\",\"reasoning\":{\"context\":null,\"effort\":null,\"summary\":null},\"safety_identifier\":null,\"service_tier\":\"default\",\"store\":false,\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"},\"verbosity\":\"medium\"},\"tool_choice\":\"auto\",\"tool_usage\":{\"image_gen\":{\"input_tokens\":0,\"input_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"output_tokens\":0,\"output_tokens_details\":{\"image_tokens\":0,\"text_tokens\":0},\"total_tokens\":0},\"web_search\":{\"num_requests\":0}},\"tools\":[],\"top_logprobs\":0,\"top_p\":1.0,\"truncation\":\"disabled\",\"usage\":{\"input_tokens\":44,\"input_tokens_details\":{\"cache_write_tokens\":0,\"cached_tokens\":0},\"output_tokens\":7,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":51},\"user\":null,\"metadata\":{}},\"sequence_number\":13}\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/pdf/xai-tool-result.json b/packages/ai/test/fixtures/recordings/pdf/xai-tool-result.json new file mode 100644 index 000000000000..71833b93a572 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/pdf/xai-tool-result.json @@ -0,0 +1,35 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:pdf", + "pdf", + "provider:xai", + "protocol:openai-responses", + "tool", + "tool-result" + ], + "name": "pdf/xai-tool-result", + "recordedAt": "2026-07-22T18:15:43.608Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.x.ai/v1/responses", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"grok-4.5\",\"input\":[{\"role\":\"system\",\"content\":\"Read the PDF returned by the tool and follow the user's response format exactly.\"},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Return only the verification code from the PDF.\"}]},{\"type\":\"function_call\",\"call_id\":\"call_pdf_1\",\"name\":\"read_pdf\",\"arguments\":\"{}\"},{\"type\":\"function_call_output\",\"call_id\":\"call_pdf_1\",\"output\":[{\"type\":\"input_text\",\"text\":\"PDF read successfully\"},{\"type\":\"input_file\",\"filename\":\"verification.pdf\",\"file_data\":\"JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK\",\"mime_type\":\"application/pdf\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"read_pdf\",\"description\":\"Read the attached PDF.\",\"parameters\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false},\"strict\":false}],\"store\":false,\"max_output_tokens\":40,\"temperature\":0,\"stream\":true}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": "event: response.created\ndata: {\"sequence_number\":0,\"type\":\"response.created\",\"response\":{\"created_at\":0,\"completed_at\":null,\"id\":\"dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"max_output_tokens\":40,\"model\":\"grok-4.5\",\"object\":\"response\",\"output\":[],\"parallel_tool_calls\":true,\"previous_response_id\":null,\"reasoning\":{\"effort\":null,\"summary\":null},\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"}},\"tool_choice\":\"auto\",\"tools\":[{\"type\":\"function\",\"description\":\"Read the attached PDF.\",\"name\":\"read_pdf\",\"parameters\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false},\"strict\":false}],\"top_p\":0.949999988079071,\"usage\":null,\"user\":null,\"incomplete_details\":null,\"status\":\"in_progress\",\"store\":false,\"metadata\":{\"system_fingerprint\":\"fp_a39489019fa99b6e\"},\"background\":false,\"service_tier\":\"default\",\"truncation\":\"disabled\",\"top_logprobs\":0,\"presence_penalty\":0.0,\"frequency_penalty\":0.0,\"prompt_cache_key\":null,\"max_tool_calls\":null,\"safety_identifier\":null,\"error\":null,\"instructions\":null}}\n\nevent: response.in_progress\ndata: {\"sequence_number\":1,\"type\":\"response.in_progress\",\"response\":{\"created_at\":0,\"completed_at\":null,\"id\":\"dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"max_output_tokens\":40,\"model\":\"grok-4.5\",\"object\":\"response\",\"output\":[],\"parallel_tool_calls\":true,\"previous_response_id\":null,\"reasoning\":{\"effort\":null,\"summary\":null},\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"}},\"tool_choice\":\"auto\",\"tools\":[{\"type\":\"function\",\"description\":\"Read the attached PDF.\",\"name\":\"read_pdf\",\"parameters\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false},\"strict\":false}],\"top_p\":0.949999988079071,\"usage\":null,\"user\":null,\"incomplete_details\":null,\"status\":\"in_progress\",\"store\":false,\"metadata\":{\"system_fingerprint\":\"fp_a39489019fa99b6e\"},\"background\":false,\"service_tier\":\"default\",\"truncation\":\"disabled\",\"top_logprobs\":0,\"presence_penalty\":0.0,\"frequency_penalty\":0.0,\"prompt_cache_key\":null,\"max_tool_calls\":null,\"safety_identifier\":null,\"error\":null,\"instructions\":null}}\n\nevent: response.output_item.added\ndata: {\"sequence_number\":2,\"type\":\"response.output_item.added\",\"item\":{\"content\":[],\"id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"role\":\"assistant\",\"type\":\"message\",\"status\":\"in_progress\"},\"output_index\":0}\n\nevent: response.content_part.added\ndata: {\"sequence_number\":3,\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"text\":\"\",\"logprobs\":[],\"annotations\":[]}}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":4,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"OR\",\"item_id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"output_index\":0,\"logprobs\":[]}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":5,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"CH\",\"item_id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"output_index\":0,\"logprobs\":[]}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":6,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"ID\",\"item_id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"output_index\":0,\"logprobs\":[]}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":7,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"-\",\"item_id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"output_index\":0,\"logprobs\":[]}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":8,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"739\",\"item_id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"output_index\":0,\"logprobs\":[]}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":9,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"1\",\"item_id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"output_index\":0,\"logprobs\":[]}\n\nevent: response.output_text.done\ndata: {\"sequence_number\":10,\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"output_index\":0,\"text\":\"ORCHID-7391\",\"logprobs\":[]}\n\nevent: response.content_part.done\ndata: {\"sequence_number\":11,\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"output_index\":0,\"part\":{\"type\":\"output_text\",\"text\":\"ORCHID-7391\",\"logprobs\":[],\"annotations\":[]}}\n\nevent: response.output_item.done\ndata: {\"sequence_number\":12,\"type\":\"response.output_item.done\",\"item\":{\"content\":[{\"type\":\"output_text\",\"text\":\"ORCHID-7391\",\"logprobs\":[],\"annotations\":[]}],\"id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"role\":\"assistant\",\"type\":\"message\",\"status\":\"completed\"},\"output_index\":0}\n\nevent: response.completed\ndata: {\"sequence_number\":13,\"type\":\"response.completed\",\"response\":{\"created_at\":0,\"completed_at\":1784744143,\"id\":\"dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"max_output_tokens\":40,\"model\":\"grok-4.5\",\"object\":\"response\",\"output\":[{\"content\":[{\"type\":\"output_text\",\"text\":\"ORCHID-7391\",\"logprobs\":[],\"annotations\":[]}],\"id\":\"msg_dab13d84-6060-9eb7-b898-cbe7a3475ad7\",\"role\":\"assistant\",\"type\":\"message\",\"status\":\"completed\"}],\"parallel_tool_calls\":true,\"previous_response_id\":null,\"reasoning\":{\"effort\":null,\"summary\":null},\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"}},\"tool_choice\":\"auto\",\"tools\":[{\"type\":\"function\",\"description\":\"Read the attached PDF.\",\"name\":\"read_pdf\",\"parameters\":{\"type\":\"object\",\"properties\":{},\"additionalProperties\":false},\"strict\":false}],\"top_p\":0.949999988079071,\"usage\":{\"input_tokens\":1592,\"input_tokens_details\":{\"cached_tokens\":128},\"output_tokens\":10,\"output_tokens_details\":{\"reasoning_tokens\":0},\"total_tokens\":1602,\"num_sources_used\":0,\"num_server_side_tools_used\":0,\"cost_in_usd_ticks\":30264000,\"context_details\":{\"input_tokens\":1592,\"output_tokens\":11}},\"user\":null,\"incomplete_details\":null,\"status\":\"completed\",\"store\":false,\"metadata\":{\"system_fingerprint\":\"fp_a39489019fa99b6e\"},\"background\":false,\"service_tier\":\"default\",\"truncation\":\"disabled\",\"top_logprobs\":0,\"presence_penalty\":0.0,\"frequency_penalty\":0.0,\"prompt_cache_key\":null,\"max_tool_calls\":null,\"safety_identifier\":null,\"error\":null,\"instructions\":null}}\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/pdf/xai-user-input.json b/packages/ai/test/fixtures/recordings/pdf/xai-user-input.json new file mode 100644 index 000000000000..c3831f6e063e --- /dev/null +++ b/packages/ai/test/fixtures/recordings/pdf/xai-user-input.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:pdf", + "pdf", + "provider:xai", + "protocol:openai-responses", + "user-input" + ], + "name": "pdf/xai-user-input", + "recordedAt": "2026-07-22T18:15:42.429Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.x.ai/v1/responses", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"grok-4.5\",\"input\":[{\"role\":\"user\",\"content\":[{\"type\":\"input_file\",\"filename\":\"verification.pdf\",\"file_data\":\"JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK\",\"mime_type\":\"application/pdf\"},{\"type\":\"input_text\",\"text\":\"Return only the verification code from the PDF.\"}]}],\"store\":false,\"max_output_tokens\":40,\"temperature\":0,\"stream\":true}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": "event: response.created\ndata: {\"sequence_number\":0,\"type\":\"response.created\",\"response\":{\"created_at\":0,\"completed_at\":null,\"id\":\"c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"max_output_tokens\":40,\"model\":\"grok-4.5\",\"object\":\"response\",\"output\":[],\"parallel_tool_calls\":true,\"previous_response_id\":null,\"reasoning\":{\"effort\":null,\"summary\":null},\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"}},\"tool_choice\":\"auto\",\"tools\":[],\"top_p\":0.949999988079071,\"usage\":null,\"user\":null,\"incomplete_details\":null,\"status\":\"in_progress\",\"store\":false,\"metadata\":{\"system_fingerprint\":\"fp_a39489019fa99b6e\"},\"background\":false,\"service_tier\":\"default\",\"truncation\":\"disabled\",\"top_logprobs\":0,\"presence_penalty\":0.0,\"frequency_penalty\":0.0,\"prompt_cache_key\":null,\"max_tool_calls\":null,\"safety_identifier\":null,\"error\":null,\"instructions\":null}}\n\nevent: response.in_progress\ndata: {\"sequence_number\":1,\"type\":\"response.in_progress\",\"response\":{\"created_at\":0,\"completed_at\":null,\"id\":\"c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"max_output_tokens\":40,\"model\":\"grok-4.5\",\"object\":\"response\",\"output\":[],\"parallel_tool_calls\":true,\"previous_response_id\":null,\"reasoning\":{\"effort\":null,\"summary\":null},\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"}},\"tool_choice\":\"auto\",\"tools\":[],\"top_p\":0.949999988079071,\"usage\":null,\"user\":null,\"incomplete_details\":null,\"status\":\"in_progress\",\"store\":false,\"metadata\":{\"system_fingerprint\":\"fp_a39489019fa99b6e\"},\"background\":false,\"service_tier\":\"default\",\"truncation\":\"disabled\",\"top_logprobs\":0,\"presence_penalty\":0.0,\"frequency_penalty\":0.0,\"prompt_cache_key\":null,\"max_tool_calls\":null,\"safety_identifier\":null,\"error\":null,\"instructions\":null}}\n\nevent: response.output_item.added\ndata: {\"sequence_number\":2,\"type\":\"response.output_item.added\",\"item\":{\"id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"summary\":[],\"type\":\"reasoning\",\"status\":\"in_progress\"},\"output_index\":0}\n\nevent: response.reasoning_summary_part.added\ndata: {\"sequence_number\":3,\"type\":\"response.reasoning_summary_part.added\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"part\":{\"text\":\"\",\"type\":\"summary_text\"},\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":4,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\"The\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":5,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" user\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":6,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" wants\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":7,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" me\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":8,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" to\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":9,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" return\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":10,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" only\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":11,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" the\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":12,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" verification\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":13,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" code\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":14,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" from\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":15,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" the\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":16,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\" PDF\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.delta\ndata: {\"sequence_number\":17,\"type\":\"response.reasoning_summary_text.delta\",\"delta\":\".\\n\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0}\n\nevent: response.reasoning_summary_text.done\ndata: {\"sequence_number\":18,\"type\":\"response.reasoning_summary_text.done\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"summary_index\":0,\"text\":\"The user wants me to return only the verification code from the PDF.\\n\"}\n\nevent: response.reasoning_summary_part.done\ndata: {\"sequence_number\":19,\"type\":\"response.reasoning_summary_part.done\",\"item_id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":0,\"part\":{\"text\":\"The user wants me to return only the verification code from the PDF.\\n\",\"type\":\"summary_text\"},\"summary_index\":0}\n\nevent: response.output_item.done\ndata: {\"sequence_number\":20,\"type\":\"response.output_item.done\",\"item\":{\"id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"summary\":[{\"text\":\"The user wants me to return only the verification code from the PDF.\\n\",\"type\":\"summary_text\"}],\"type\":\"reasoning\",\"status\":\"completed\"},\"output_index\":0}\n\nevent: response.output_item.added\ndata: {\"sequence_number\":21,\"type\":\"response.output_item.added\",\"item\":{\"content\":[],\"id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"role\":\"assistant\",\"type\":\"message\",\"status\":\"in_progress\"},\"output_index\":1}\n\nevent: response.content_part.added\ndata: {\"sequence_number\":22,\"type\":\"response.content_part.added\",\"content_index\":0,\"item_id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":1,\"part\":{\"type\":\"output_text\",\"text\":\"\",\"logprobs\":[],\"annotations\":[]}}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":23,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"OR\",\"item_id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":1,\"logprobs\":[]}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":24,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"CH\",\"item_id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":1,\"logprobs\":[]}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":25,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"ID\",\"item_id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":1,\"logprobs\":[]}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":26,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"-\",\"item_id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":1,\"logprobs\":[]}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":27,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"739\",\"item_id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":1,\"logprobs\":[]}\n\nevent: response.output_text.delta\ndata: {\"sequence_number\":28,\"type\":\"response.output_text.delta\",\"content_index\":0,\"delta\":\"1\",\"item_id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":1,\"logprobs\":[]}\n\nevent: response.output_text.done\ndata: {\"sequence_number\":29,\"type\":\"response.output_text.done\",\"content_index\":0,\"item_id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":1,\"text\":\"ORCHID-7391\",\"logprobs\":[]}\n\nevent: response.content_part.done\ndata: {\"sequence_number\":30,\"type\":\"response.content_part.done\",\"content_index\":0,\"item_id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"output_index\":1,\"part\":{\"type\":\"output_text\",\"text\":\"ORCHID-7391\",\"logprobs\":[],\"annotations\":[]}}\n\nevent: response.output_item.done\ndata: {\"sequence_number\":31,\"type\":\"response.output_item.done\",\"item\":{\"content\":[{\"type\":\"output_text\",\"text\":\"ORCHID-7391\",\"logprobs\":[],\"annotations\":[]}],\"id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"role\":\"assistant\",\"type\":\"message\",\"status\":\"completed\"},\"output_index\":1}\n\nevent: response.completed\ndata: {\"sequence_number\":32,\"type\":\"response.completed\",\"response\":{\"created_at\":0,\"completed_at\":1784744142,\"id\":\"c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"max_output_tokens\":40,\"model\":\"grok-4.5\",\"object\":\"response\",\"output\":[{\"id\":\"rs_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"summary\":[{\"text\":\"The user wants me to return only the verification code from the PDF.\\n\",\"type\":\"summary_text\"}],\"type\":\"reasoning\",\"status\":\"completed\"},{\"content\":[{\"type\":\"output_text\",\"text\":\"ORCHID-7391\",\"logprobs\":[],\"annotations\":[]}],\"id\":\"msg_c69d4e2b-243a-909a-84b6-ee953321ef6c\",\"role\":\"assistant\",\"type\":\"message\",\"status\":\"completed\"}],\"parallel_tool_calls\":true,\"previous_response_id\":null,\"reasoning\":{\"effort\":null,\"summary\":null},\"temperature\":0.0,\"text\":{\"format\":{\"type\":\"text\"}},\"tool_choice\":\"auto\",\"tools\":[],\"top_p\":0.949999988079071,\"usage\":{\"input_tokens\":1522,\"input_tokens_details\":{\"cached_tokens\":128},\"output_tokens\":119,\"output_tokens_details\":{\"reasoning_tokens\":109},\"total_tokens\":1641,\"num_sources_used\":0,\"num_server_side_tools_used\":0,\"cost_in_usd_ticks\":35404000,\"context_details\":{\"input_tokens\":1522,\"output_tokens\":119}},\"user\":null,\"incomplete_details\":null,\"status\":\"completed\",\"store\":false,\"metadata\":{\"system_fingerprint\":\"fp_a39489019fa99b6e\"},\"background\":false,\"service_tier\":\"default\",\"truncation\":\"disabled\",\"top_logprobs\":0,\"presence_penalty\":0.0,\"frequency_penalty\":0.0,\"prompt_cache_key\":null,\"max_tool_calls\":null,\"safety_identifier\":null,\"error\":null,\"instructions\":null}}\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/vercel-ai-gateway-reasoning-tool-loop.json b/packages/ai/test/fixtures/recordings/vercel-ai-gateway-reasoning-tool-loop.json new file mode 100644 index 000000000000..518d75ea4bba --- /dev/null +++ b/packages/ai/test/fixtures/recordings/vercel-ai-gateway-reasoning-tool-loop.json @@ -0,0 +1,55 @@ +{ + "version": 1, + "metadata": { + "model": "anthropic/claude-sonnet-4.6", + "tags": [ + "prefix:openai-compatible-chat", + "provider:vercel-ai-gateway", + "protocol:openai-chat", + "reasoning", + "continuation", + "tool", + "tool-loop" + ], + "name": "vercel-ai-gateway-reasoning-tool-loop", + "recordedAt": "2026-07-20T02:41:08.712Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://ai-gateway.vercel.sh/v1/chat/completions", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"anthropic/claude-sonnet-4.6\",\"messages\":[{\"role\":\"system\",\"content\":\"Use the get_weather tool exactly once. After the tool result, reply exactly: Paris is sunny.\"},{\"role\":\"user\",\"content\":\"What is the weather in Paris?\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"description\":\"Get current weather for a city.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false}}}],\"stream\":true,\"stream_options\":{\"include_usage\":true},\"max_tokens\":1536,\"reasoning\":{\"enabled\":true,\"max_tokens\":1024}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": "data: {\"id\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\",\"object\":\"chat.completion.chunk\",\"created\":1784515266,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\"},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_mcg1unonve\"}\n\ndata: {\"id\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\",\"object\":\"chat.completion.chunk\",\"created\":1784515266,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"reasoning\":\"The user wants\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"The user wants\",\"signature\":\"\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_mcg1unonve\"}\n\ndata: {\"id\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\",\"object\":\"chat.completion.chunk\",\"created\":1784515266,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"reasoning\":\" to know the weather in Paris. I'll use the get_weather tool.\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\" to know the weather in Paris. I'll use the get_weather tool.\",\"signature\":\"\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_mcg1unonve\"}\n\ndata: {\"id\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\",\"object\":\"chat.completion.chunk\",\"created\":1784515266,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"reasoning\":\"\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"\",\"signature\":\"ErkCCosBCA8YAipAjKnRKpxkZ4eHrMPJ63IWEOYPSzb+XSHyG+vLK+2ks2O9T4N9M37Xn2kausQSH1rfsrdmKxgUlBg6yUFRgMVR7DIRY2xhdWRlLXNvbm5ldC00LTY4AEIIdGhpbmtpbmdaJDNiOTNhNWRkLTczMDItNDgzZi1hZWFlLTM2MjA3NTU0OGFlMRIMM48xcuzdqvMYIVj0GgzNLyWlqYpowmh/ekwiMNJ+av0MqXkfQP9JJBuSQzhxreyzG6b3V4o6WMG4AkUForVcNy8B6FU3LLmarZghWCpbMd005YC11uuZgsB10K00Rc2RYIfbL13mm3KLNj/iImbEkB6E/7OqxcbQjG3rM6JJrcmRhQk+wWk26tlenw/upR99KkrILrAv22RFK5sxzqOkdWz8t4qzVPKfVxgB\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_mcg1unonve\"}\n\ndata: {\"id\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\",\"object\":\"chat.completion.chunk\",\"created\":1784515266,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Sure! Let me check the weather in Paris for you!\"},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_mcg1unonve\"}\n\ndata: {\"id\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\",\"object\":\"chat.completion.chunk\",\"created\":1784515266,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"id\":\"toolu_01KBCTV7MS4TY6U2zSTF2K2n\",\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"arguments\":\"\"}}]},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_mcg1unonve\"}\n\ndata: {\"id\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\",\"object\":\"chat.completion.chunk\",\"created\":1784515266,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"{\\\"city\\\": \\\"Paris\"}}]},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_mcg1unonve\"}\n\ndata: {\"id\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\",\"object\":\"chat.completion.chunk\",\"created\":1784515266,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"tool_calls\":[{\"index\":0,\"function\":{\"arguments\":\"\\\"}\"}}]},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_mcg1unonve\"}\n\ndata: {\"id\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\",\"object\":\"chat.completion.chunk\",\"created\":1784515266,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"provider_metadata\":{\"anthropic\":{\"usage\":{\"input_tokens\":623,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":0,\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":0},\"output_tokens\":93,\"service_tier\":\"standard\",\"inference_geo\":\"global\",\"output_tokens_details\":{\"thinking_tokens\":24}},\"cacheCreationInputTokens\":0,\"stopSequence\":null,\"iterations\":null,\"container\":null,\"contextManagement\":null},\"gateway\":{\"routing\":{\"originalModelId\":\"anthropic/claude-sonnet-4.6\",\"resolvedProvider\":\"anthropic\",\"fallbacksAvailable\":[\"vertexAnthropic\",\"bedrock\"],\"planningReasoning\":\"System credentials planned for: anthropic, vertexAnthropic, bedrock. Total execution order: anthropic(system) → vertexAnthropic(system) → bedrock(system)\",\"canonicalSlug\":\"anthropic/claude-sonnet-4.6\",\"finalProvider\":\"anthropic\",\"modelAttemptCount\":1,\"modelAttempts\":[{\"canonicalSlug\":\"anthropic/claude-sonnet-4.6\",\"success\":true,\"providerAttemptCount\":1,\"providerAttempts\":[{\"provider\":\"anthropic\",\"credentialType\":\"system\",\"success\":true,\"startTime\":1784515265180,\"endTime\":1784515267361,\"providerRequestId\":\"req_011CdCY7kJywwSSDhvHjPDNQ\",\"statusCode\":200,\"providerResponseId\":\"msg_011CdCY7n1gYrbgoik1oNbaP\"}]}],\"totalProviderAttemptCount\":1},\"cost\":\"0.003264\",\"marketCost\":\"0.003264\",\"surchargeCost\":\"0\",\"gatewayCost\":\"0.003264\",\"inferenceCost\":\"0.003264\",\"inputInferenceCost\":\"0.001869\",\"outputInferenceCost\":\"0.001395\",\"generationId\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\"}}},\"logprobs\":null,\"finish_reason\":\"tool_calls\"}],\"usage\":{\"prompt_tokens\":623,\"completion_tokens\":93,\"total_tokens\":716,\"cost\":0.003264,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":null,\"upstream_inference_prompt_cost\":0,\"upstream_inference_completions_cost\":0},\"completion_tokens_details\":{\"reasoning_tokens\":19,\"reasoning_tokens_estimated\":true,\"image_tokens\":0},\"cache_creation_input_tokens\":0,\"market_cost\":0.003264,\"gateway_cost\":0.003264},\"system_fingerprint\":\"fp_mcg1unonve\",\"generationId\":\"gen_01KXYPC0A2GBNS2101HEG2F5KR\"}\n\ndata: [DONE]\n\n" + } + }, + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://ai-gateway.vercel.sh/v1/chat/completions", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"anthropic/claude-sonnet-4.6\",\"messages\":[{\"role\":\"system\",\"content\":\"Use the get_weather tool exactly once. After the tool result, reply exactly: Paris is sunny.\"},{\"role\":\"user\",\"content\":\"What is the weather in Paris?\"},{\"role\":\"assistant\",\"content\":\"Sure! Let me check the weather in Paris for you!\",\"tool_calls\":[{\"id\":\"toolu_01KBCTV7MS4TY6U2zSTF2K2n\",\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"arguments\":\"{\\\"city\\\":\\\"Paris\\\"}\"}}],\"reasoning\":\"The user wants to know the weather in Paris. I'll use the get_weather tool.\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"The user wants to know the weather in Paris. I'll use the get_weather tool.\",\"signature\":\"ErkCCosBCA8YAipAjKnRKpxkZ4eHrMPJ63IWEOYPSzb+XSHyG+vLK+2ks2O9T4N9M37Xn2kausQSH1rfsrdmKxgUlBg6yUFRgMVR7DIRY2xhdWRlLXNvbm5ldC00LTY4AEIIdGhpbmtpbmdaJDNiOTNhNWRkLTczMDItNDgzZi1hZWFlLTM2MjA3NTU0OGFlMRIMM48xcuzdqvMYIVj0GgzNLyWlqYpowmh/ekwiMNJ+av0MqXkfQP9JJBuSQzhxreyzG6b3V4o6WMG4AkUForVcNy8B6FU3LLmarZghWCpbMd005YC11uuZgsB10K00Rc2RYIfbL13mm3KLNj/iImbEkB6E/7OqxcbQjG3rM6JJrcmRhQk+wWk26tlenw/upR99KkrILrAv22RFK5sxzqOkdWz8t4qzVPKfVxgB\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},{\"role\":\"tool\",\"tool_call_id\":\"toolu_01KBCTV7MS4TY6U2zSTF2K2n\",\"content\":\"{\\\"temperature\\\":22,\\\"condition\\\":\\\"sunny\\\"}\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"get_weather\",\"description\":\"Get current weather for a city.\",\"parameters\":{\"type\":\"object\",\"properties\":{\"city\":{\"type\":\"string\"}},\"required\":[\"city\"],\"additionalProperties\":false}}}],\"stream\":true,\"stream_options\":{\"include_usage\":true},\"max_tokens\":1536,\"reasoning\":{\"enabled\":true,\"max_tokens\":1024}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": "data: {\"id\":\"gen_01KXYPC2WN8PT0Y6ZDH00AF3K4\",\"object\":\"chat.completion.chunk\",\"created\":1784515268,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\"},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_ljjqzh6v2k\"}\n\ndata: {\"id\":\"gen_01KXYPC2WN8PT0Y6ZDH00AF3K4\",\"object\":\"chat.completion.chunk\",\"created\":1784515268,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"Paris\"},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_ljjqzh6v2k\"}\n\ndata: {\"id\":\"gen_01KXYPC2WN8PT0Y6ZDH00AF3K4\",\"object\":\"chat.completion.chunk\",\"created\":1784515268,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\" is sunny.\"},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_ljjqzh6v2k\"}\n\ndata: {\"id\":\"gen_01KXYPC2WN8PT0Y6ZDH00AF3K4\",\"object\":\"chat.completion.chunk\",\"created\":1784515268,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"provider_metadata\":{\"anthropic\":{\"usage\":{\"input_tokens\":737,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":0,\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":0},\"output_tokens\":7,\"service_tier\":\"standard\",\"inference_geo\":\"global\",\"output_tokens_details\":{\"thinking_tokens\":0}},\"cacheCreationInputTokens\":0,\"stopSequence\":null,\"iterations\":null,\"container\":null,\"contextManagement\":null},\"gateway\":{\"routing\":{\"originalModelId\":\"anthropic/claude-sonnet-4.6\",\"resolvedProvider\":\"anthropic\",\"fallbacksAvailable\":[\"vertexAnthropic\",\"bedrock\"],\"planningReasoning\":\"System credentials planned for: anthropic, vertexAnthropic, bedrock. Total execution order: anthropic(system) → vertexAnthropic(system) → bedrock(system)\",\"canonicalSlug\":\"anthropic/claude-sonnet-4.6\",\"finalProvider\":\"anthropic\",\"modelAttemptCount\":1,\"modelAttempts\":[{\"canonicalSlug\":\"anthropic/claude-sonnet-4.6\",\"success\":true,\"providerAttemptCount\":1,\"providerAttempts\":[{\"provider\":\"anthropic\",\"credentialType\":\"system\",\"success\":true,\"startTime\":1784515267510,\"endTime\":1784515268708,\"providerRequestId\":\"req_011CdCY7vEY4aNuG8jvsZXQR\",\"statusCode\":200,\"providerResponseId\":\"msg_011CdCY7w49RtKGdr45xU8Bx\"}]}],\"totalProviderAttemptCount\":1},\"cost\":\"0.002316\",\"marketCost\":\"0.002316\",\"surchargeCost\":\"0\",\"gatewayCost\":\"0.002316\",\"inferenceCost\":\"0.002316\",\"inputInferenceCost\":\"0.002211\",\"outputInferenceCost\":\"0.000105\",\"generationId\":\"gen_01KXYPC2WN8PT0Y6ZDH00AF3K4\"}}},\"logprobs\":null,\"finish_reason\":\"stop\"}],\"usage\":{\"prompt_tokens\":737,\"completion_tokens\":7,\"total_tokens\":744,\"cost\":0.002316,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":null,\"upstream_inference_prompt_cost\":0,\"upstream_inference_completions_cost\":0},\"completion_tokens_details\":{\"reasoning_tokens\":0,\"image_tokens\":0},\"cache_creation_input_tokens\":0,\"market_cost\":0.002316,\"gateway_cost\":0.002316},\"system_fingerprint\":\"fp_ljjqzh6v2k\",\"generationId\":\"gen_01KXYPC2WN8PT0Y6ZDH00AF3K4\"}\n\ndata: [DONE]\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/vercel-ai-gateway-reasoning.json b/packages/ai/test/fixtures/recordings/vercel-ai-gateway-reasoning.json new file mode 100644 index 000000000000..9cf18c3909ed --- /dev/null +++ b/packages/ai/test/fixtures/recordings/vercel-ai-gateway-reasoning.json @@ -0,0 +1,34 @@ +{ + "version": 1, + "metadata": { + "model": "anthropic/claude-sonnet-4.6", + "tags": [ + "prefix:openai-compatible-chat", + "provider:vercel-ai-gateway", + "protocol:openai-chat", + "reasoning" + ], + "name": "vercel-ai-gateway-reasoning", + "recordedAt": "2026-07-18T11:28:42.077Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://ai-gateway.vercel.sh/v1/chat/completions", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"anthropic/claude-sonnet-4.6\",\"messages\":[{\"role\":\"system\",\"content\":\"Think through the arithmetic, then reply with only the final integer.\"},{\"role\":\"user\",\"content\":\"What is 173 multiplied by 219?\"}],\"stream\":true,\"stream_options\":{\"include_usage\":true},\"max_tokens\":1536,\"temperature\":0,\"reasoning\":{\"enabled\":true,\"max_tokens\":1024}}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "text/event-stream" + }, + "body": "data: {\"id\":\"gen_01KXTFRJXJ8CKP0W3DKC3WC004\",\"object\":\"chat.completion.chunk\",\"created\":1784374121,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"role\":\"assistant\"},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_zfth1fcyet\"}\n\ndata: {\"id\":\"gen_01KXTFRJXJ8CKP0W3DKC3WC004\",\"object\":\"chat.completion.chunk\",\"created\":1784374121,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"reasoning\":\"173\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"173\",\"signature\":\"\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_zfth1fcyet\"}\n\ndata: {\"id\":\"gen_01KXTFRJXJ8CKP0W3DKC3WC004\",\"object\":\"chat.completion.chunk\",\"created\":1784374121,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"reasoning\":\" × 219\\n\\n173 × 200 = 34,600\\n173 × 19 = 173 × 20 - 173 = 3,460\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\" × 219\\n\\n173 × 200 = 34,600\\n173 × 19 = 173 × 20 - 173 = 3,460\",\"signature\":\"\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_zfth1fcyet\"}\n\ndata: {\"id\":\"gen_01KXTFRJXJ8CKP0W3DKC3WC004\",\"object\":\"chat.completion.chunk\",\"created\":1784374121,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"reasoning\":\" - 173 = 3,287\\n\\n34,600 + 3,287 = 37,887\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\" - 173 = 3,287\\n\\n34,600 + 3,287 = 37,887\",\"signature\":\"\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_zfth1fcyet\"}\n\ndata: {\"id\":\"gen_01KXTFRJXJ8CKP0W3DKC3WC004\",\"object\":\"chat.completion.chunk\",\"created\":1784374121,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"reasoning\":\"\",\"reasoning_details\":[{\"type\":\"reasoning.text\",\"text\":\"\",\"signature\":\"EtgCCosBCA8YAipA0W4viH3kgBs43Cl5ewwVBPXTQElvzfbA2TLF4iSbKy9ZZDCSDjjAlF3Bs4ELEnP3vrrTuTioC6OB380lXQdyIDIRY2xhdWRlLXNvbm5ldC00LTY4AEIIdGhpbmtpbmdaJDNiOTNhNWRkLTczMDItNDgzZi1hZWFlLTM2MjA3NTU0OGFlMRIMKkQaBkOSYB8cgQNiGgwDinVmv/KYSAKQEsUiMPSSFWvVpNuyEyYC8HlxrEZsb5KEEETuMjAI2hcC3m/NwGR+PC7chh2JWwD7wyK+eyp6OoF973UNMHAsWsKykCSJv60aXeOiDomxdfR9CRWVtaroVTkhtL2FPgplBPZYr75XvS0l6If3fqCPKevNE5WaOsSaXNfnMCCKGX7A0Pkhs4NazmCnntWGOsW7J03bAQKzIZ+c+Yr0rSwmwvuiocDqzsSE8bOeVv4352EYAQ==\",\"format\":\"anthropic-claude-v1\",\"index\":0}]},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_zfth1fcyet\"}\n\ndata: {\"id\":\"gen_01KXTFRJXJ8CKP0W3DKC3WC004\",\"object\":\"chat.completion.chunk\",\"created\":1784374121,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"content\":\"37,887\"},\"logprobs\":null,\"finish_reason\":null}],\"system_fingerprint\":\"fp_zfth1fcyet\"}\n\ndata: {\"id\":\"gen_01KXTFRJXJ8CKP0W3DKC3WC004\",\"object\":\"chat.completion.chunk\",\"created\":1784374121,\"model\":\"anthropic/claude-sonnet-4.6\",\"choices\":[{\"index\":0,\"delta\":{\"provider_metadata\":{\"anthropic\":{\"usage\":{\"input_tokens\":61,\"cache_creation_input_tokens\":0,\"cache_read_input_tokens\":0,\"cache_creation\":{\"ephemeral_5m_input_tokens\":0,\"ephemeral_1h_input_tokens\":0},\"output_tokens\":81,\"service_tier\":\"standard\",\"inference_geo\":\"global\",\"output_tokens_details\":{\"thinking_tokens\":73}},\"cacheCreationInputTokens\":0,\"stopSequence\":null,\"iterations\":null,\"container\":null,\"contextManagement\":null},\"gateway\":{\"routing\":{\"originalModelId\":\"anthropic/claude-sonnet-4.6\",\"resolvedProvider\":\"anthropic\",\"fallbacksAvailable\":[\"vertexAnthropic\",\"bedrock\"],\"planningReasoning\":\"System credentials planned for: anthropic, vertexAnthropic, bedrock. Total execution order: anthropic(system) → vertexAnthropic(system) → bedrock(system)\",\"canonicalSlug\":\"anthropic/claude-sonnet-4.6\",\"finalProvider\":\"anthropic\",\"modelAttemptCount\":1,\"modelAttempts\":[{\"canonicalSlug\":\"anthropic/claude-sonnet-4.6\",\"success\":true,\"providerAttemptCount\":1,\"providerAttempts\":[{\"provider\":\"anthropic\",\"credentialType\":\"system\",\"success\":true,\"startTime\":1784374119500,\"endTime\":1784374122066,\"providerRequestId\":\"req_011Cd9SjHykKUqTQ1S8cAG17\",\"statusCode\":200,\"providerResponseId\":\"msg_011Cd9SjLvMmTFY8Pyj8n336\"}]}],\"totalProviderAttemptCount\":1},\"cost\":\"0.001398\",\"marketCost\":\"0.001398\",\"surchargeCost\":\"0\",\"gatewayCost\":\"0.001398\",\"inferenceCost\":\"0.001398\",\"inputInferenceCost\":\"0.000183\",\"outputInferenceCost\":\"0.001215\",\"generationId\":\"gen_01KXTFRJXJ8CKP0W3DKC3WC004\"}}},\"logprobs\":null,\"finish_reason\":\"stop\"}],\"usage\":{\"prompt_tokens\":61,\"completion_tokens\":81,\"total_tokens\":142,\"cost\":0.001398,\"is_byok\":false,\"prompt_tokens_details\":{\"cached_tokens\":0,\"audio_tokens\":0,\"video_tokens\":0},\"cost_details\":{\"upstream_inference_cost\":null,\"upstream_inference_prompt_cost\":0,\"upstream_inference_completions_cost\":0},\"completion_tokens_details\":{\"reasoning_tokens\":26,\"reasoning_tokens_estimated\":true,\"image_tokens\":0},\"cache_creation_input_tokens\":0,\"market_cost\":0.001398,\"gateway_cost\":0.001398},\"system_fingerprint\":\"fp_zfth1fcyet\",\"generationId\":\"gen_01KXTFRJXJ8CKP0W3DKC3WC004\"}\n\ndata: [DONE]\n\n" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/xai-images/edits-an-image.json b/packages/ai/test/fixtures/recordings/xai-images/edits-an-image.json new file mode 100644 index 000000000000..495a26ee0587 --- /dev/null +++ b/packages/ai/test/fixtures/recordings/xai-images/edits-an-image.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "metadata": { + "tags": ["prefix:xai-images", "provider:xai", "protocol:xai-images"], + "name": "xai-images/edits-an-image", + "recordedAt": "2026-07-20T21:03:29.413Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.x.ai/v1/images/edits", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"grok-imagine-image\",\"prompt\":\"Keep the simple shape and change it from black to bright purple.\",\"image\":{\"url\":\"data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAAQABAAD//gAQTGF2YzYwLjMxLjEwMgD/2wBDAAgQEBMQExYWFhYWFhoYGhsbGxoaGhobGxsdHR0iIiIdHR0bGx0dICAiIiUmJSMjIiMmJigoKDAwLi44ODpFRVP/xABrAAEBAQEBAQAAAAAAAAAAAAAABwgGBAUBAQAAAAAAAAAAAAAAAAAAAAAQAAICAQEFBwMEAwEAAAAAAAABAwIEEQYFEiFhwXGBUUExE6GRU0LwciLh8bEjEQEAAAAAAAAAAAAAAAAAAAAA/8AAEQgAgACAAwEiAAIRAAMRAP/aAAwDAQACEQMRAD8Av4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB458iLFjtLNesdK+9rPRf76e4yMiPFivNLbhpHV2s+i7X6LzMhb33xPvabitrWKrfxxa8qrzfnZ+r8EBTc/bPm64USa/LLrz61omvq/AnMu0W9ZXq8q9elFSi+ldTigB2se0W9Ynqsq9ul1S6+tSiYG2b1Vc2Jafli15dXRt/R+BBgBuvHyIcqOssN6yUt7Wq9V/h9HzPYY03RvefdM3HTW0dn/AOkWvKy815WXo/ua+x8iPKhpNFbipJVWq/36r2a8wPaAAAAAAAAAAIDtnnvWLCq+WnyydfSlX9X9iDHZ7QyuXeuW3+m6ou6lUjjAAAAAAAXbYzeDVpcKz5NfLH0ftdLv5P7kJOw2flcW9cRr1k4H3XTr2gbHAAAAAAAAAAGO9oYnFvXLT/VdXXdeqZxhdts8Bq0WZVcmvik6NaujffzX2ISAAAAAADr9wRuXeuGl6ScfhRO3YcgXHYzAdpZcyy/rRfFH1s+dmu5aLxA0MAAAAAAAAAAPDk40WXDJDLXipJXha7V1Xuupj7eu6p91TuORO1Hr8cmnK67LL1Rs8+fk4sOZFaKeOslLe6f/AFP3T8muYGGAXHP2Nkq3bDlV6/jl5WXRXXJ+KROpdxb0ielsOZ/wXGvvRsDkwdXHuLekr0WHMv5V4F97tFDwNjZrtWzJVHX8cb4rvo7acK8NQJtuvdc+9Z1FGtKrT5JNP60r2vyXqbBxMWLCgjgiXDSNaLzfm31b5sYuJBhRKKCOsdF6L1fm37t9WfRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9k=\",\"type\":\"image_url\"},\"aspect_ratio\":\"1:1\",\"response_format\":\"b64_json\",\"resolution\":\"1k\"}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json" + }, + "body": "{\"data\":[{\"b64_json\":\"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jnNFFABigUYpO9ACmjpxSYpaADHtRRRQMKKKKACjFFFABiigdKKBBRRRjmgYUUcelFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAGgUn1pcUAHeiiigBKWj8aDQAUUZooATmgUtHvQAUUUUAFFFFABRRRQAewoxRiigAoxRRQAUUZooAKKKKACiiigAzSUtFABRRRQAd6KKKAE+tKaKKAAY7UUUUAFFFHegAooooAKKKKACiiigA60UZooASlAxRmjPtQAUUUUAFFFFABRRRQAUUUUAFGKKKACiiigAooooAMUmKWjFAgAxRSUoGKBhRR0ooAKKKKADFFFFABRRRQAUUUUAFGKKMc0AGKMUUUAJ3pe9JilxigAooo4oAKMUUUCCiiigYUUUUAwooooAKKKKBBRRRQMKKKKBBikxS0UDDvR3oooAKKCPaigAooooAKKKKACiiigAooooAMUAYoooEFFFFAwooooAKKKKACiiigAooooAOlFIetKBQAUfjRRQAn4UvekAFLigAooooAKTj0oFLQAUUUUAFFFFACYpaKKAD8aKKKACiiigAooooAMe9FFHNACdKPrS0daACj8aOlFACYpcUUZoAQUUtFACc0uKKKACijNFABRSUvSgAooooATFLgUUUAHNHNFFAAM96OlFGKACiiigAxRiiigA60mKAKMUCuAxRQKOfSgBaKKKBiUAUtGT6UCCjFAooGJjmlHSjFHNABRiiigAooooAKKMCigAooooAKKKKACiiigAooooAKKKKACjvRRQAUUUUAFFFFABRRRQAUYoooAKKKKBBRRRQMDSe4paTvQJi0UUUDDj0o70lL3oEFJjmlxRigAwKO9FFAWCjpRRQMKCOaOaTmgA6Uvekx6CgDmgBcUUYFFABRRRQAUYoooAKKKKACiiigAooooAAMUd+lFFAAaAMUUYoAKKKKACiig0AJQBg0YxQKAFooooAKKMUUAFIOKXFJigBaO9ApKAFooooAO9GKKKACiiigAooooAKSlooATmjr1paKAD6UCiigBKOaXFAoAKKKKAExjpRS8UUAH40UYHpRQAUhFLRQAgBpfxopMCgBeB2oozSdaACjFFAoAWjpQKQigBfxooooAKKKKAA0nNLRigBBmilooABSYpcD0ooCwmMUYpcUnWgQtFGPeigAooooGGPekxS0YoAKKKKACiijmgBMYpRmiigAowKKKAADFFFHegAopKWgAxijvRRjnNAABiiiigAooo70AFFFFABRRRQAUUUUAFFFFABQKKKBMKO9GKKAQUUD6UUDCjvRR3oEwooFFAwpMc0tHegAoxiiigAoAxRRQAUYoooAKKKMUAGOaAMUUUAFFFFABRRRQAYHpRiiigAooooAKKKKAADFFFFABRRRQAUUUUAFFFFABRRRQAcUUYowPSgAooooAOfWiiigBBS+9GB6UUAFJilooAPxoNAooAQZoApaKADn0oBoxRQAUUUUAFFFFABQBRRQAUmOaWigBKAKWigAAxSe2KWjA9KAExRilwKMD0oAQUtFFABzQM0UUAAGKMUUUAJyaMUtFACAe1Lj0FFFACAUuKKKAExRS0ntQAo6UUCigAoooNACUfSgfSj8KACjrQBQPegAFKBiijNABSY5pRjtSY5oAXGKKKKACjFFFACYopaMD0oABRRRQAUUUUAFFFFABRiij8KADvRSCloAKKKKACiiigAooooAKKMYooAKOlFGKADA9KMD0oooAKKKKACiiigQUYoooAKKKKBhR3oo70CCiiigYY5oxzmgUUAFFFFABRRRQAUYoooAKPxoooAAMUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR3oooAKKKO9ABzRiiigBMc0uD3oooAOlFFFABRRRQAUUUUAFFGBRQAUUUUAFFFFABRRRQAc+tAoooAKOaKKAAcUZoooAKKKKACgUUUAFFGaKAEAoxSiigA6UUUUAFFFFABRRRQAUlLR9KADtRRRQAgFLRRQAYpMUuaKAExijNLRQAUUUUAJijFKPpRwaAEoxS49qMD0oAKDRQaAEpRSYpQMUAFBoooAQZpetGB6UUAFFGKKACiiigAooooAKKKKADFHeiigBMYpaKKBBRR7Ud6BhiiiigAooo6UAFA4oooAKMc0UUAFFFFABRSGl70AFAGKMUUCCjFFFABRRRQMKO9FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRiiigAooooAKO9BooAKKKKACjHNGO1JjmgBaKKKACjvRR3oAKKKKACiiigAoxRSH6UALSdKUUUAAGKKKKACg0UUAIBilx60UUAJiloooAKKKKACiiigAooooAKKMD0ooAKKKKADmiiigAooooAKMUUUAJjFLRRigAooooAMUUUmKAFopPpS80CuFFFFAwooooAKKKKACgUYFAGKACiiigBMUClooAKKKKACgiiigBMUAGlxR0oAMc0UUUAFFFFABR+FFHHpQAnXrRil/CjFAABiiijpQAUAUgpaADFFFFABRRRQAY9aKKKACiiigAooooAKKKKACiiigAooooAAMUCiigAooo70AFFFFACYo6HFLgelGB6UAFFFFABRRijv0oEFFFFAwIzSd6Wk6GgQtFFFAwooooEFFFFAwooooAKKKKACiiigAooooAKMD0oooAKKKKACjvRRigAooooAKMc0e1GKACjHNFFABRzRRigAooooAKKKKACiiigAo96KKACjHNFFABRRRQAUUUUAFFFFABijHOaKMc5oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAMCiiigAooooAKKKKACiiigAooooAKKKKACiiigTCiiigYgFLR+FFABRRRQAUUUUAFIBS0UAJjFLiiigAxjpRz60UUAFGKKKAACgcUUUAFFFFABRRRQAUUUUAFFFFABRRR3oAKKKKACiiigAooooAKTGKWigAoooxQAUAYoxRQAUUUUAFFFFABSY5peKTvQLqKBRiiigYUUUZoAKKBRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFJjmgQtFFFAwooooAKKTHaloEFFFFAwooooAKKKKACjFFFAAaTGKWigBMUoFFFABRzRRQAUUUUAJg0tFFABzR7UUnegQtFFFAwooooAKKKQAigBaKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAA0CiigAooooAKKKKACjA9KKKACiiigAooooAAMUfjRRQADpRiiigBMUtFFABijFFFABSdKO9LQAUY96M0ZoAKKOaKAEHtS0YHpRQAUUUUAFFFFABRRRQAUUGigAooooAKKKKACiiigAooooAKKKO9ABRiiigAooooAKKKKBBikAwaWigQUUUUDA0nelpO9AxaKO9FABzRRRQAUUUUCCiiigYUUUUAFFFFABRRRQAUUYooAKKKKACiiigAox6UUUAJjFFLijGKBB3oo5ooGFFFHegAoxRRQAUUUUAFFFFABRRRQAUUUUAFFAooAMUUlLQAUUUUAFFFFABQBiiigAooooAKKKKACiiigAooooAKKKKACiiigAoxRRQAUUUUAFGB6UUUABFJzS0CgAHSiiigAooooAKKKKACjFFFAB0ooooAKKKKACiiigAooooAKKKKACiigDFABRRRQAYoxRRQAmMUv4UUYHpQAUUUUAGB6UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFHeiigAAxRRRQAUUUUCCiiigYUUUUAFGOaKKACjvRRQIKKKKBhSDr1paO9ABRRRQAUYoooEFFGB6UUDCiiigAooooAKKKKACiiigAooooAKO9FFABRRRQAUUUUAFFFFABRRRQAGiiigAooooAKKKKACiiigAooooAKKKKACiiigAxSc0D2pcUAAooooAKPxoooAKKKKACiiigAooooAKKKKADFFFGPegAooooAOaOaKKAD8aKKKACiiigAooooAKAKKKADgdqKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooEFHfpRRQAfhRSYpaBBR3oooKDvRR3ooAKKOaKBBRRRQMKKKKACiiigAooooAKKKKACiiigAooooAKKKDQAUUdTRQAUUUUAFFFFABRRRQAUUUUAFFFBoAMc0UgpaACiiigAooooAKAMUUUAFFFAoAKKKKACiiigAooooAKKKKACiiigAooooAKKMUY5zQAUUUUAFFHTiigAoooxQAUUdKKACiiigAooooAOaKKKBBRRRQMKKKMGgAooFFArhRRRQMKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACijvRQIKKKKBhSd6Wk70ALRRRQAYoo6GigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAD2ooooAKKKKACiiigAooooAAMUUUUAFFFFABijFFH40AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRmk70fhQAtBoFFABRRRQAUUnOaXpQAUUUd6ACiig0CCijNFABRRRQMKKKSgQuAKKKTHNAC0mKWigA5ooowPSgAopOnSl59aACiiigAoooxQAUUfjRQMKKKMUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAfjSdDS0nfrQAtFID2paBBSDrS0d6Bh3oo70UAFFFFABRRRQAUUUUAFHeiigAooooAKKKKACiiigAooooAKMc0Ud6ACiiigAooooAKKKKACiiigAooo96BBRR3ooAKKKO9AwooooAKKKKACiiigAoopOaAFoooIzQK4Zo/GkxxQKAFozSDjilwPSgA460Yo4BxSZoAWiiigYUUUUAFFFFABR3oooEFFFFABSY5paOaACiikzQAtGD60ZooAKKOaKADmjHOaKBQAYo5oooDYKKKT6UALSe1KKPegLh0oopOKAFoxSDNLkZxQAUUYpMc0DFopBQM0ALRRRQAUUUUAFFFFAB3ooo5oAKKQUooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBDSDrTjSY5oAB7UtGMUUCCjvRSfjQMXvRQKKAEPHNAPNBBoAxQIWiiigYUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFHegQUd6KKBhR3oooAKKKKACijvR3oAKKKKACiiigAooooAKKKKACjNFGKADNFGKKBBRRRQAHpRgUUGgYUdaTv/ACpRQAgHOaWiigQUhz2paKAE5paKTcKAFopN3rxWX4p8beEPA+lvrfjXxTp2kWcYy91qd7HBGo/3nIFVCE6k1GCu30W5cITqSUYq7fY1aTNfL/xZ/wCCwn7CHwpMtqnxXbxJeRnBtPCti93zx/y1+WL/AMf7V85/EX/g4e0OJpbb4T/s33k/aK78Ra0kSn3MUKsfXjeK+6ynwx49zpKWGwE1F9ZpU1983G/yufWZdwHxdmaUqOEmk+svcX/k1vwP0sJx1H60bgO9fi748/4Lqftv+KxJD4al8LeGkf7rabovnSL/AMCuHcf+O14/4z/4KNftvePgV8RftL+KQpHMen3q2a/lAqV+g4D6O3GWJSeJrUaS7c0pP/yWNv8AyY+uwng1xJVs69WnT+cpP8Fb8T9/5J4oEMk0qoo6s5AA/Oue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FFFArBRRRQMKKKKACiiigAooooAKKM0UAFFFFABRRRQAUUUUAFFFFACYx0paOtGKBdQooooGGKMD0oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKBQAUUUUAFFFFABRRRQAUY5oooAAMUUUUAHejvRR3oEFHeiigYUnelpO9ACiiiigQUUUUAFFFFABRRRQMKKKKACiiigAoooFABRRRQAUUUUAFFGB6UAYoAKKKKACiiigAxQOKKKACiiigAooooAKKKKACiiigAwPSk70tFAB9aKBRQAYoxRRQAUUUUAGKQcUpFFABRRRmgAo/GgUUAFFFFABRRRQAUUUUAGMUUUYoAKKKKACiiigAxR04opAKAFpMUAe1GOaAFAxRRgUYoAKKKKACiiigAooooAKKKKAADFHeiigAooooAKKKKACiiigAooooAKKMUUAFFFFABRRRQAUUUUAFFFFAAKKKKBBRRRQMKKKMUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUCCiiigApB1paOKBhRRRQJidaWjNFABRRRQAUUUY5oGFFFFAB3oxzRgelGKACiiigAoAxRRQAUYHpRRQAUUUUAFFH40UAFFFGKACiiigAxR0opMUALRRRQAUUUUAFGKKKACjFFFABigDFFFABRRRQAc0nNLRQAUUneloAOtFH4UCgAooooAMUfjRSCgA69aADQKBQIWiiigYUUUY96ACiiigAooo5oAKKKKACiiigAoxRRQAUUUUAFAFFFABRQDRmgAoNFFACYNFLScdhQAtFFFABQaKKAD6UUUUAHNFFFABQaKKAEFKKKKACiiigAooooAKMe1FFACYpce9FFABRRRQAUUUUAFFFFABRRRQAYooooAKKKKACiiigAooooAMD0ooooAKKKKACiiigAooooAKKO/FJ36UAKRSd8UvHSjAoEFFFFAwo70Ud6ACiiigAooooEFFFFABRRRQMKKKKACiiigAooooAKKKKACiijFABSYoo70ALiiiigAooxRQAUUUUAFFFFAAKKKKACiiigAxRiiigApO9LRQAAYooooATFGMUtH1oABRzSc0tACYoFLikwKAFoxikFKaADmjHrQKKACiiigBMClpMZNLQIKKKKBhRRRQAUUUUAFFHNJzQAv40UDpRQAYooo70AFFFFABRRRQAUUUGgAxSYoFLigA7c0UlLQISgClxSdKBiiiiigAooooAKKKKACkApaBxQIKDRRQMKOaQCloAMetFFAzQAUUUnTigBaKKKADvR9aKKACijFFABQKKKACiiigAooooAKKKKACiiigAooooAOPSjFAGKKACiiigAoowPSigAooooAMc0mKXj0oxQAYFFGKKADA9KMUUUCCiiigYUd6KTv1oAWiiigAooooEFFFGKBhRRRQAUUUUAFFFFABRRiigAooooAKKKKADAzRiiigAo70UUAFA4oooAKKKKACiiigAooooAKKKKACiiigA59aKKKACkHFLzRQAnvSjOKKKACiiigAoxiiigAwPSj8aKOlABwe1FHWigAo5oooAMYpOaWigA98UYxRRQAUUUUABooHSigANIBSjPeigAooooAKBRRQAUUUUAFGKKKACjA9KKKADA9KMUUUAJiloooAM0AUUYHpQADij8aKKADFFFAGKADFAGKKKACjAoooAKMUUUAHNHSiigAo+lFFACYpcUUUAHtRRRQAc0YFFFABjFFFFABjmij2oxQAUUUUAFFFFABRRRQAUUUUAFGMUUUAJilxR+FFABR0ooxQAUYoooAKKKKBBRRRQMKKKKACiiigAooooAKTvxS0d6AAUUCigAooooEFGKKKBhRRRQAUUUY5zQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFGKACiiigAooooAB70Y70UDPegApPpS0UAAooooAKTFLQKAEFHelo5oATmloooAKBRRQAYpMGlooAAKKMc0UAJilooFABRRRQAYo+lFFABiiiigApMUtFACClo60UAFFFFAARSCloxQAYxRQPpRmgAooooAMCgCiigAooooAKTHrS0Y5oAMe9FFFABRRRQAc+tFFFABR+NFFACYpaKKADFFFFABRRRQAc0CiigAooooAKOaKKACijNFABzRRRQAUCiigAoxRjtRQAUUUUAGB6UUUUAFHeijFABQOKKKACiiigAwPSiiigAooooAMUnTiloHWgAwPSij6UUAFFFHegAooooAKKKKAA0mKWk70ALRRRQAfSjvRRigAooooAKKTvRigBaKOtFABRRgUUAFGKKKBBRRRQMKO9FGKACjFFGOc0AFFFFABRRRQAUUUUAFFFFACc0c0tAFABRRRQAUUUUAFHNFFAADRRRQAUUUUAIc5opaT8KAFx70YoooAQccUUp96QD2oELzR1oooGJ0oGaX60YAoATmilox7UAGPWjFFFABR+FFFABmjHvRRQAAYooooAKSloxigAooooATFAFLRQAnNFKfpSfhQADilHtSAUvWgAwKBxRRjFABRRRQAmDS0UUAFFFFACUtGBRQAUnvS0UAHQUlLR1oAB0ooAFFABRQBRQAUUUUAFFFFACd6UUUUAGKBRRQIKKKKBgaKKKACjvRRQAUe9FGKACiiigAwPSiiigAooooAKKKKACiiigAooooAPpR3oooAKKKMUAFFFHegAooooAKKKKACk70tFABRRRQAUUUUAFFFFABijAoooAKKKKACiiigAooooAKKKKACiiigAooAxRQAUUUUAFHToKOPSjA9KADvRRgelFAgooooGFFFFABRRRQAUfjRRQAEUlLSfWgAApaKKACk5pc0CgAHSgiiigBAKXFHAooAQigClxRgUAJQKWigAooooAMD0ooooAMetIKWigAFFFFABRRRQAUUUUABpOvalo5oABRRRQAUUDpRQAUmKWigBMUClooAQCjFLR+FABRQKDQAd6DQBiigAHSijGKKACk5zS0AYoAT2opTRigBAKXFAooATmgcUtFABRSDNL9aADHNH40UUABpMd6WjpQAnNHNLmj60AFFFFABzmijp2ooAKKKKADHNHeijvQAUUUUAFFFFABgelFFFABRRRQAd6THNLijFABRjFFFABRR0ooAKKKKACijvR3oAKO9ANHegAooooAKKKKACjvRRQAUUUUAGKKAKO9AgooooGFFFFABRRRQAUUUCgTCiijFAwoFGKMCgApMUtHegAooooAKMc0Ud6AADFHfpRRQAUUUUAFFFFABR3o70YoAKTpS0celABR3oooEGKQClooAKMUUUDEApcUnWgUALjFJS4oHpQAgFKOlFFABRRRQAUUUg+lAgpRRRQMKKKKACig0YoAPxpBS0nWgBaKKKACiiigAxR+NFFABRRRQAAGgUn4UoA9KADmkH0pRRgelABRRRQAUmKWigBMUtFFABzR+NFFABRRRQAdaMCiigAooooAMUmMUtFACHmgCl+lHvQAmKKOD2paACijpRQAmPalFFFABgelFFFAAM96KKKADiiiigAooooAKKKKACjpRRQAcUAYoo6UAFFFFABRRRQAUUUY5oAKKKKACiiigAoooxQAUUUmOaAFwPSiiigAooooEFFFFAwoH1opO9AC0fhRRQAYxRijj0ooABRx6UYxRQIMUAYooxQAUUYxRQMKAMUUUCCiiigYUUUUAGB6UUUUAFFFFABRRRQAcUCjFJ0NAC0lLSUALx/kUUn4UooAOKKKMc5oAKKKKACiiigApMUtFACUooooAMYooooAKKKKAEopT9KMD0oASilwKTFAC0gpelJ26UAKAKTpSjNHvQISlFJ+FLQMKMUUUAFJiloFACc0UuKMUAFGBRR+NABRR9aKAExRilooASiloNACDNHNLRQAUY9KKKACijtzRQAlGfalNJgUAFKBRRQAUc0mKWgBMUClowPSgAFFFFABRiiigBMUY9aWigBOP8AIoH0oxQKADk0c0tA4oAQCloooAKKPxooAT2opaKAEH0oHFFFAC96KO9FABRRRQAUUUUAFFFFABR3ooxzQAUYoooAKKKKACiikxzQAtFFGOaACiijFABRRRQAAYooo70AFHeiigQdOgo4zRRgUDCjvRjtR0NAmFFFFAwooooAKKKKACiiigAooooAMD0oooxQAUUYoxzQAYooooAKKKO9ABQMUUYFABRRRQAUYoooEGB6UUUUDDAoAxRRQAUUUUAFFFFABRRRQAUYoooATFA4pcUUAFJ3paKAD8aKTmloAQAUuKKKBBRRRgelAwoooGKADFJRgZpePSgBBmij8KMc9KAF60UAUUAFBoooAOlFBoFABRRRQAAYooooAKKOaKACkNLQaACjFGAKOlAgoooxQMPxoxRSc0ALgUYxQKKACiiigAoAxRRigApD16UtFAAOlFFFABRRRQAUUUUAGKQClHvR70AAAooFFAABig0AYoxzQAUZoooAKKKAaADFFHWigAxRRRQAUUUUAFFFGOaADFGB6UUUAFAGKKKACiiigAooo70AFFGKMc5oAKKKKACijFFABRRQKACiijpQAUUUUAFFFFABRRRmgQUUUUDCiiigAooooAKKKKACiiigAooo70AFFFFAgooooGFFFFABR3oooAMAUUUd6ACjvRRQAUAYoo6UAFHekooAWikHFLQAUgNKRSYoAWigdKDQAUZoHpR9aAAZooooAM0nWjIzR+FAhRmjn0ooNAXE5pecUYpMUBcKKOP8ilz7UAIAP8ilHSk/CgCgAoFAFGKAAdc0ZNGPWjFAAM0c0vWkxQAtFJS8+tAwoo+lFACfhRzS/hSUCFopKMUDFBopBml/GgAoxRRQAGgUUDigQmKXNFHWgYUnWl69aMUAAzRRRQAUcUmKXHtQAmO4peaPpRQIKBRikx6UDFooooAKKPxooABR+NFFABijFFGaADFFFFABRmikoABS4ooBoFcKM0UUDEFKPSkxRx0oAWjvSUc0ALRQKKADvSdKXpSd6AFooxikI5oAXvRSdKXvQAUUUYHpQAUAYo6cCigAooooAKKKKBXCiiigYYHpRRRQAUYoooAKKKKACiiigAooxRQAUUUUAFFHGaQdaBC0UUUAFFFFAwooooAKKKKACjvSA+9HU0ALR3pMc4o70ALRRRigAxQBiijvQAUUUUCCk6UveigYmOaXv0pMUHGaBBjmlxSYFKMD/wDVQMTGKBRijigAwKMYpRj0pPwoEAoH0ooxigBcD0owPSjHvRQCCg0DiigQmKKWjg0BcO1HWgDigYoGFGKKDQCEoFGKAKAFwKBxSUYoAWikApaAENFLikxQAUUUYoAKAKMCgdOlAABQKWkxQAvWjA9KQf54paAExQBRx/kUoxQADpSfhS0mOaBiiiiigQD3opBj/Io/CgBaTFGBS/SgAAxRRmigYUUZooEIRQKXFAGKAAUZo9hSfhQMKOp6UuKMCgBMUo560YpOlAB34oH0ooAoAXrRSYH+RRkUAB4oH0pAc9KXA/yKAF4o6dKT6UUCD8KAKAKUAelABijFFHHpQFgpOaPwoAFAC4oxRRmgBMUAUDg0oGKBiUY/zigcUd6AFwKTFKBig0CE7dKXFJ9BRQAfhS4pMCloGFFFJigQtFHSigAoxzRR3oGFFFFAgoooxzmgAooo4oGFFFFABRRRxQAUUAYo70AFHeikzzQAtFFFACcZoHWjFAoELijFFFABR360UUDDAoooxQAUUUUAAFJilooAKKKKACkpaKACjvRRQAe1IBS0UAJiloxRQIOKTApaTHtQAvakHFGKWgBMelLij6UUAJjFGKXj0pPwoGHH+RRQKMUCAUc0fhRQAoz3NISRS5pO+aAAUfWijn0oDQOe1FAB/wAiigNBc0nNHP8AkUCgAo5oFL+FACUUUfhQGgUc0UUDDmjmlAooEJRiloP0oASjFLRQFxMUUHrRQAYAoFGPT+VAoABgUcen6UAUYoGKPajFA4o+tABmkpc0fhQITmiiigA5oBPeijBoGHXtS8en6UgpeM9KAEopRxRQITmjmlxSYoGGKABR+FGKAFAxRSdBR1oELSf56UtJgUAg60UfQUUBoAFGB/kUD6UcelAXDA/yKMf5xRijFAwFH+elFLQAntRzS0UAJk0fWlNIBQAc0Diij8KBBzRS5pBj0oAMe1L0o6UUAthMCjA/yKU0g47UDFo+ppOTS/WgBMUo6cGg0YoEHtSd6XApAKBi4BooxRQAUUUUAFJ3paKAAUUUUAHfiij6UUCDA9KTvS0YoGIKO9LRigAxRiiigAooooAKQjmlooAKKByKKADFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUmKWigAopBS0AFFFFABRRRQAUUUUAH40UUUAFFFFABjFGBRmigQUUUUAGKPxoooDcPxooooGFGKKKBXDFGKKKAQfjRRRQAUUUUDCiiigQUUUUAgooooGFFFFABRRRQAUUUUAFFFFABRRRQAfjRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABiiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooFcKKKKBh+NFFFAB+NFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/2Q==\",\"mime_type\":\"image/jpeg\"}],\"usage\":{\"cost_in_usd_ticks\":220000000}}" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/xai-images/generates-an-image.json b/packages/ai/test/fixtures/recordings/xai-images/generates-an-image.json new file mode 100644 index 000000000000..f41a54bb16ff --- /dev/null +++ b/packages/ai/test/fixtures/recordings/xai-images/generates-an-image.json @@ -0,0 +1,32 @@ +{ + "version": 1, + "metadata": { + "tags": [ + "prefix:xai-images", + "provider:xai", + "protocol:xai-images" + ], + "name": "xai-images/generates-an-image", + "recordedAt": "2026-07-19T15:56:20.098Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.x.ai/v1/images/generations", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"grok-imagine-image\",\"prompt\":\"A simple flat black diamond centered on a plain white background.\",\"aspect_ratio\":\"1:1\",\"resolution\":\"1k\",\"response_format\":\"b64_json\"}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json" + }, + "body": "{\"data\":[{\"b64_json\":\"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\",\"mime_type\":\"image/jpeg\"}],\"usage\":{\"cost_in_usd_ticks\":200000000}}" + } + } + ] +} diff --git a/packages/ai/test/fixtures/recordings/zai-images/generates-an-image.json b/packages/ai/test/fixtures/recordings/zai-images/generates-an-image.json new file mode 100644 index 000000000000..578da32b7c6d --- /dev/null +++ b/packages/ai/test/fixtures/recordings/zai-images/generates-an-image.json @@ -0,0 +1,28 @@ +{ + "version": 1, + "metadata": { + "tags": ["prefix:zai-images", "provider:zai", "protocol:zai-images"], + "name": "zai-images/generates-an-image", + "recordedAt": "2026-07-19T16:03:55.761Z" + }, + "interactions": [ + { + "transport": "http", + "request": { + "method": "POST", + "url": "https://api.z.ai/api/paas/v4/images/generations", + "headers": { + "content-type": "application/json" + }, + "body": "{\"model\":\"cogview-4-250304\",\"prompt\":\"A simple flat red circle centered on a plain white background.\",\"size\":\"1024x1024\",\"quality\":\"standard\",\"user_id\":\"opencode-image-test\"}" + }, + "response": { + "status": 200, + "headers": { + "content-type": "application/json; charset=UTF-8" + }, + "body": "{\"created\":1784477028,\"data\":[{\"url\":\"https://mfile.z.ai/1784477035500-43574eab2b6e402da9063d6ac22dfefb.png?ufileattname=202607200003482062c3bba9b04f7d_watermark.png\"}],\"id\":\"202607200003482062c3bba9b04f7d\",\"request_id\":\"202607200003482062c3bba9b04f7d\"}" + } + } + ] +} diff --git a/packages/llm/test/generate-object.test.ts b/packages/ai/test/generate-object.test.ts similarity index 100% rename from packages/llm/test/generate-object.test.ts rename to packages/ai/test/generate-object.test.ts diff --git a/packages/ai/test/image.test.ts b/packages/ai/test/image.test.ts new file mode 100644 index 000000000000..37a315e2d244 --- /dev/null +++ b/packages/ai/test/image.test.ts @@ -0,0 +1,578 @@ +import { describe, expect } from "bun:test" +import { Effect, Layer } from "effect" +import { HttpClientRequest } from "effect/unstable/http" +import { Image, ImageClient, ImageInput } from "../src" +import { Google, OpenAI, XAI, ZAI } from "../src/providers" +import { it } from "./lib/effect" +import { dynamicResponse } from "./lib/http" + +describe("Image", () => { + it.effect("generates images through the OpenAI Images API", () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model: OpenAI.configure({ + apiKey: "test", + baseURL: "https://api.openai.test/v1", + queryParams: { "api-version": "v1" }, + http: { body: { deployment: "test" }, headers: { "x-default": "yes" } }, + }).image("gpt-image-2"), + prompt: "A robot tending a rooftop garden", + options: { + n: 2, + size: "2048x2048", + quality: "future-quality", + outputFormat: "jpeg", + output_format: "avif", + outputCompression: 30, + output_compression: 40, + background: "opaque", + native_default: true, + future_option: true, + }, + http: { + body: { output_format: "webp", output_compression: 50, future_option: "http", request_metadata: "value" }, + headers: { "x-request": "yes" }, + query: { trace: "1" }, + }, + }) + + expect(response.images).toHaveLength(2) + expect(response.image?.mediaType).toBe("image/webp") + expect(response.image?.data).toEqual(Uint8Array.from([1, 2, 3])) + expect(response.image?.providerMetadata).toEqual({ openai: { revisedPrompt: "A precise robot" } }) + expect(response.usage?.totalTokens).toBe(12) + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.url).toBe("https://api.openai.test/v1/images/generations?api-version=v1&trace=1") + expect(request.headers.get("authorization")).toBe("Bearer test") + expect(request.headers.get("x-default")).toBe("yes") + expect(request.headers.get("x-request")).toBe("yes") + expect(JSON.parse(input.text)).toEqual({ + model: "gpt-image-2", + prompt: "A robot tending a rooftop garden", + n: 2, + size: "2048x2048", + quality: "future-quality", + background: "opaque", + output_format: "webp", + output_compression: 50, + native_default: true, + future_option: "http", + deployment: "test", + request_metadata: "value", + }) + return input.respond( + JSON.stringify({ + data: [{ b64_json: "AQID", revised_prompt: "A precise robot" }, { b64_json: "BAUG" }], + output_format: "webp", + usage: { input_tokens: 4, output_tokens: 8, total_tokens: 12 }, + }), + { headers: { "content-type": "application/json" } }, + ) + }), + ), + ), + ), + ), + ), + ) + + it.effect("preserves native snake_case and unknown request options", () => + Image.generate({ + model: OpenAI.configure({ + apiKey: "test", + baseURL: "https://api.openai.test/v1", + }).image("future-image-model"), + prompt: "A lighthouse in fog", + options: { + outputFormat: "jpeg", + output_format: "avif", + outputCompression: 30, + output_compression: 40, + provider_future_option: { enabled: true }, + }, + }).pipe( + Effect.tap((response) => + Effect.sync(() => { + expect(response.image?.mediaType).toBe("image/avif") + }), + ), + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => { + expect(JSON.parse(input.text)).toEqual({ + model: "future-image-model", + prompt: "A lighthouse in fog", + output_format: "avif", + output_compression: 40, + provider_future_option: { enabled: true }, + }) + return Effect.succeed( + input.respond(JSON.stringify({ data: [{ b64_json: "AQID" }] }), { + headers: { "content-type": "application/json" }, + }), + ) + }), + ), + ), + ), + ), + ) + + it.effect("routes OpenAI byte inputs and masks through multipart edits", () => + Image.generate({ + model: OpenAI.configure({ apiKey: "test", baseURL: "https://api.openai.test/v1" }).image("future-model"), + prompt: "Combine these images", + images: [ + ImageInput.bytes(Uint8Array.from([1, 2, 3]), "image/png"), + ImageInput.url("data:image/jpeg;base64,BAUG"), + ], + options: { + mask: ImageInput.bytes(Uint8Array.from([7, 8, 9]), "image/png"), + quality: "high", + future_option: true, + }, + http: { + body: { quality: "low", model: "corrupt", prompt: "corrupt", image: "corrupt", "image[]": "corrupt" }, + headers: { "content-type": "application/json" }, + }, + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.url).toBe("https://api.openai.test/v1/images/edits") + expect(request.headers.get("content-type")).toStartWith("multipart/form-data; boundary=") + expect(input.text).toContain('name="model"\r\n\r\nfuture-model') + expect(input.text).toContain('name="prompt"\r\n\r\nCombine these images') + expect(input.text.match(/name="image\[\]"/g)).toHaveLength(2) + expect(input.text).toContain('name="mask"') + expect(input.text).toContain('name="quality"\r\n\r\nlow') + expect(input.text).not.toContain("corrupt") + return input.respond(JSON.stringify({ data: [{ b64_json: "AQID" }] }), { + headers: { "content-type": "application/json" }, + }) + }), + ), + ), + ), + ), + ), + ) + + it.effect("routes OpenAI URL and file inputs through JSON edits", () => + Image.generate({ + model: OpenAI.configure({ apiKey: "test", baseURL: "https://api.openai.test/v1" }).image("future-model"), + prompt: "Combine these images", + images: [ImageInput.url("https://example.test/source.png"), ImageInput.file("file_123")], + options: { mask: ImageInput.file("file_mask") }, + http: { body: { future_option: true } }, + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => { + expect(JSON.parse(input.text)).toEqual({ + model: "future-model", + prompt: "Combine these images", + images: [{ image_url: "https://example.test/source.png" }, { file_id: "file_123" }], + mask: { file_id: "file_mask" }, + future_option: true, + }) + return Effect.succeed( + input.respond(JSON.stringify({ data: [{ b64_json: "AQID" }] }), { + headers: { "content-type": "application/json" }, + }), + ) + }), + ), + ), + ), + ), + ) + + it.effect("routes ordered xAI image inputs through JSON edits", () => + Image.generate({ + model: XAI.configure({ apiKey: "test", baseURL: "https://api.xai.test/v1" }).image("future-model"), + prompt: "Combine these images", + images: [ + ImageInput.bytes(Uint8Array.from([1, 2, 3]), "image/png"), + ImageInput.url("https://example.test/source.jpg"), + ImageInput.file("file_123"), + ], + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => { + expect(JSON.parse(input.text)).toEqual({ + model: "future-model", + prompt: "Combine these images", + images: [ + { url: "data:image/png;base64,AQID", type: "image_url" }, + { url: "https://example.test/source.jpg", type: "image_url" }, + { file_id: "file_123" }, + ], + }) + return Effect.succeed( + input.respond(JSON.stringify({ data: [{ b64_json: "AQID", mime_type: "image/png" }] }), { + headers: { "content-type": "application/json" }, + }), + ) + }), + ), + ), + ), + ), + ) + + it.effect("uses xAI's singular image field for one input", () => + Image.generate({ + model: XAI.configure({ apiKey: "test", baseURL: "https://api.xai.test/v1" }).image("future-model"), + prompt: "Edit this image", + images: [ImageInput.file("file_123")], + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => { + expect(JSON.parse(input.text)).toEqual({ + model: "future-model", + prompt: "Edit this image", + image: { file_id: "file_123" }, + }) + return Effect.succeed( + input.respond(JSON.stringify({ data: [{ b64_json: "AQID", mime_type: "image/png" }] }), { + headers: { "content-type": "application/json" }, + }), + ) + }), + ), + ), + ), + ), + ) + + it.effect("lowers ordered Google image inputs into generateContent parts", () => + Image.generate({ + model: Google.configure({ apiKey: "test", baseURL: "https://google.test/v1beta" }).image("future-model"), + prompt: "Combine these images", + images: [ + ImageInput.bytes(Uint8Array.from([1, 2, 3]), "image/png"), + ImageInput.url("data:image/jpeg;base64,BAUG"), + ImageInput.fileUri("https://generativelanguage.googleapis.com/v1beta/files/123", "image/webp"), + ], + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => { + expect(JSON.parse(input.text).contents[0].parts).toEqual([ + { text: "Combine these images" }, + { inlineData: { mimeType: "image/png", data: "AQID" } }, + { inlineData: { mimeType: "image/jpeg", data: "BAUG" } }, + { + fileData: { + mimeType: "image/webp", + fileUri: "https://generativelanguage.googleapis.com/v1beta/files/123", + }, + }, + ]) + return Effect.succeed( + input.respond( + JSON.stringify({ + candidates: [{ content: { parts: [{ inlineData: { mimeType: "image/png", data: "AQID" } }] } }], + }), + { headers: { "content-type": "application/json" } }, + ), + ) + }), + ), + ), + ), + ), + ) + + it.effect("rejects unsupported provider inputs before sending", () => + Effect.gen(function* () { + const cases = [ + Image.generate({ + model: Google.configure({ apiKey: "test" }).image("model"), + prompt: "edit", + images: [ImageInput.url("https://example.test/image.png")], + }), + Image.generate({ + model: ZAI.configure({ apiKey: "test" }).image("model"), + prompt: "edit", + images: [ImageInput.bytes(Uint8Array.from([1]), "image/png")], + }), + ] + yield* Effect.forEach(cases, (program) => + program.pipe( + Effect.flip, + Effect.tap((error) => Effect.sync(() => expect(error.reason._tag).toBe("InvalidRequest"))), + ), + ) + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide(dynamicResponse(() => Effect.die("unsupported input reached the network"))), + ), + ), + ), + ) + + it.effect("generates images through the Google generateContent API", () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model: Google.configure({ + apiKey: "test", + baseURL: "https://generativelanguage.test/v1beta/", + headers: { "x-default": "yes" }, + http: { body: { labels: { deployment: "test" } }, query: { api: "v1" } }, + }).image("any-model-id"), + prompt: "A robot tending a rooftop garden", + options: { + aspectRatio: "16:9", + imageSize: "2K", + seed: 42, + thinkingLevel: "HIGH", + includeThoughts: true, + futureOption: true, + imageConfig: { aspectRatio: "4:3", nativeImageOption: true }, + thinkingConfig: { thinkingLevel: "LOW", nativeThinkingOption: true }, + }, + http: { + body: { + safetySettings: [], + generationConfig: { + imageConfig: { aspectRatio: "3:2", httpImageOption: true }, + thinkingConfig: { includeThoughts: false, httpThinkingOption: true }, + futureOption: "http", + httpOption: true, + }, + }, + headers: { "x-request": "yes" }, + query: { trace: "1" }, + }, + }) + + expect(response.images).toHaveLength(3) + expect(response.images.map((image) => image.data)).toEqual([ + Uint8Array.from([1, 2, 3]), + Uint8Array.from([4, 5, 6]), + Uint8Array.from([7, 8, 9]), + ]) + expect(response.images.map((image) => image.mediaType)).toEqual(["image/png", "image/jpeg", "image/webp"]) + expect(response.images[0].providerMetadata).toMatchObject({ google: { thoughtSignature: "signature-1" } }) + expect(response.images[1].providerMetadata).toMatchObject({ + google: { candidateIndex: 0, partIndex: 3, finishReason: "STOP" }, + }) + expect(response.images[2].providerMetadata).toMatchObject({ google: { candidateIndex: 7, partIndex: 0 } }) + expect(response.usage?.inputTokens).toBe(5) + expect(response.usage?.outputTokens).toBe(10) + expect(response.usage?.reasoningTokens).toBe(3) + expect(response.usage?.providerMetadata).toMatchObject({ google: { serviceTier: "STANDARD" } }) + expect(response.providerMetadata).toEqual({ + google: { + modelVersion: "gemini-3.1-flash-image", + responseId: "response-1", + promptFeedback: undefined, + candidates: [ + { + index: 0, + finishReason: "STOP", + finishMessage: undefined, + safetyRatings: [{ category: "safe" }], + citationMetadata: undefined, + groundingMetadata: undefined, + parts: [ + { + type: "inlineData", + mediaType: "image/png", + thought: undefined, + thoughtSignature: "signature-1", + }, + { type: "text", text: "planning", thought: true, thoughtSignature: "text-signature" }, + { + type: "inlineData", + mediaType: "image/png", + thought: true, + thoughtSignature: "draft-signature", + }, + { + type: "inlineData", + mediaType: "image/jpeg", + thought: undefined, + thoughtSignature: undefined, + }, + ], + }, + { + index: 7, + finishReason: undefined, + finishMessage: undefined, + safetyRatings: undefined, + citationMetadata: undefined, + groundingMetadata: undefined, + parts: [ + { + type: "inlineData", + mediaType: "image/webp", + thought: undefined, + thoughtSignature: undefined, + }, + ], + }, + ], + }, + }) + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.url).toBe( + "https://generativelanguage.test/v1beta/models/any-model-id:generateContent?api=v1&trace=1", + ) + expect(request.headers.get("x-goog-api-key")).toBe("test") + expect(request.headers.get("x-default")).toBe("yes") + expect(request.headers.get("x-request")).toBe("yes") + expect(JSON.parse(input.text)).toEqual({ + contents: [{ role: "user", parts: [{ text: "A robot tending a rooftop garden" }] }], + generationConfig: { + responseModalities: ["IMAGE"], + imageConfig: { + aspectRatio: "3:2", + imageSize: "2K", + nativeImageOption: true, + httpImageOption: true, + }, + seed: 42, + thinkingConfig: { + thinkingLevel: "LOW", + includeThoughts: false, + nativeThinkingOption: true, + httpThinkingOption: true, + }, + futureOption: "http", + httpOption: true, + }, + labels: { deployment: "test" }, + safetySettings: [], + }) + return input.respond( + JSON.stringify({ + candidates: [ + { + content: { + parts: [ + { + inlineData: { mimeType: "image/png", data: "AQID" }, + thoughtSignature: "signature-1", + }, + { text: "planning", thought: true, thoughtSignature: "text-signature" }, + { + inlineData: { mimeType: "image/png", data: "CgsM" }, + thought: true, + thoughtSignature: "draft-signature", + }, + { inlineData: { mimeType: "image/jpeg", data: "BAUG" } }, + ], + }, + finishReason: "STOP", + safetyRatings: [{ category: "safe" }], + }, + { + index: 7, + content: { parts: [{ inlineData: { mimeType: "image/webp", data: "BwgJ" } }] }, + }, + ], + usageMetadata: { + promptTokenCount: 5, + candidatesTokenCount: 7, + thoughtsTokenCount: 3, + totalTokenCount: 15, + serviceTier: "STANDARD", + }, + modelVersion: "gemini-3.1-flash-image", + responseId: "response-1", + }), + { headers: { "content-type": "application/json" } }, + ) + }), + ), + ), + ), + ), + ), + ) + + it.effect("includes Google diagnostics when no final image is returned", () => + Image.generate({ + model: Google.configure({ apiKey: "test", baseURL: "https://generativelanguage.test/v1beta" }).image( + "gemini-3.1-flash-image", + ), + prompt: "A robot tending a rooftop garden", + }).pipe( + Effect.flip, + Effect.tap((error) => + Effect.sync(() => { + expect(error.reason._tag).toBe("InvalidProviderOutput") + if (error.reason._tag !== "InvalidProviderOutput") return + expect(error.reason.message).toContain("finish reasons: IMAGE_SAFETY") + expect(error.reason.providerMetadata).toEqual({ + google: { + promptFeedback: { blockReason: "SAFETY" }, + candidates: [ + { + index: 0, + finishReason: "IMAGE_SAFETY", + finishMessage: "The generated image was blocked by safety filters.", + safetyRatings: [{ category: "HARM_CATEGORY_DANGEROUS_CONTENT", blocked: true }], + citationMetadata: undefined, + groundingMetadata: undefined, + parts: [{ type: "text", text: "blocked", thought: false, thoughtSignature: undefined }], + }, + ], + }, + }) + }), + ), + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => + Effect.succeed( + input.respond( + JSON.stringify({ + candidates: [ + { + content: { parts: [{ text: "blocked", thought: false }] }, + finishReason: "IMAGE_SAFETY", + finishMessage: "The generated image was blocked by safety filters.", + safetyRatings: [{ category: "HARM_CATEGORY_DANGEROUS_CONTENT", blocked: true }], + }, + ], + promptFeedback: { blockReason: "SAFETY" }, + }), + { headers: { "content-type": "application/json" } }, + ), + ), + ), + ), + ), + ), + ), + ) +}) diff --git a/packages/ai/test/image.types.ts b/packages/ai/test/image.types.ts new file mode 100644 index 000000000000..c6274963949f --- /dev/null +++ b/packages/ai/test/image.types.ts @@ -0,0 +1,161 @@ +import { + Image, + ImageInput, + ImageModel, + type ImageModelOptions, + type ImageOptions, + type ImageRequestFor, + type ImageRoute, +} from "../src" +import { Google, OpenAI, XAI, ZAI } from "../src/providers" + +type GoogleLikeOptions = { + readonly aspectRatio?: "1:1" | "16:9" + readonly imageSize?: "1K" | "2K" +} & Record + +declare const route: ImageRoute +const google = ImageModel.make({ id: "gemini-image", provider: "google", route }) +// @ts-expect-error Extracted model options retain known provider fields. +const invalidGoogleOptions: ImageModelOptions = { aspectRatio: "wide" } +void invalidGoogleOptions + +Image.generate({ + model: google, + prompt: "A lighthouse", + images: [ + ImageInput.bytes(Uint8Array.from([1, 2, 3]), "image/png"), + ImageInput.url("data:image/jpeg;base64,AQID"), + ImageInput.fileUri("https://generativelanguage.googleapis.com/v1beta/files/example", "image/webp"), + ], + options: { aspectRatio: "16:9", imageSize: "2K", futureOption: true }, +}) + +const googleProvider = Google.configure({ apiKey: "test" }).image("any-model-id") +Image.generate({ + model: googleProvider, + prompt: "A lighthouse", + options: { + aspectRatio: "16:9", + imageSize: "2K", + seed: 42, + thinkingLevel: "HIGH", + includeThoughts: true, + futureOption: true, + }, +}) +Image.generate({ + model: googleProvider, + prompt: "A lighthouse", + options: { aspectRatio: "future-ratio", imageSize: "8K", thinkingLevel: "FUTURE" }, +}) +// @ts-expect-error Image generation options are request-scoped, not provider configuration. +Google.configure({ image: { providerOptions: { imageSize: "2K" } } }) +// @ts-expect-error Known Google string options retain their value kind. +Image.generate({ model: googleProvider, prompt: "A lighthouse", options: { imageSize: 2 } }) +// @ts-expect-error Known Google numeric options retain their value kind. +Image.generate({ model: googleProvider, prompt: "A lighthouse", options: { seed: "42" } }) +// @ts-expect-error Known Google boolean options retain their value kind. +Image.generate({ model: googleProvider, prompt: "A lighthouse", options: { includeThoughts: "yes" } }) + +const openai = OpenAI.image("gpt-image-2") +// @ts-expect-error Image generation options are request-scoped, not provider configuration. +OpenAI.configure({ image: { options: { quality: "medium" } } }) +const futureOpenAIOptions: ImageModelOptions = { quality: "future-quality" } +void futureOpenAIOptions +Image.generate({ + model: openai, + prompt: "A lighthouse", + images: [ImageInput.url("https://example.com/source.png"), ImageInput.file("file_123")], + options: { + mask: ImageInput.bytes(Uint8Array.from([1]), "image/png"), + quality: "hd", + outputFormat: "webp", + size: "2048x2048", + future_option: true, + }, +}) +Image.generate({ model: openai, prompt: "A lighthouse", options: { quality: "future-quality", size: "256x256" } }) +Image.generate({ model: openai, prompt: "A lighthouse", options: { size: "1792x1024" } }) +Image.generate({ model: openai, prompt: "A lighthouse", options: { native_future_option: true } }) +// @ts-expect-error Known OpenAI string options retain their value kind. +Image.generate({ model: openai, prompt: "A lighthouse", options: { quality: 1 } }) +// @ts-expect-error Known OpenAI numeric options retain their value kind. +Image.generate({ model: openai, prompt: "A lighthouse", options: { outputCompression: "80" } }) +OpenAI.imageGeneration({ action: "future-action", quality: "future-quality", size: "2048x2048" }) +// @ts-expect-error Hosted image generation numeric options retain their value kind. +OpenAI.imageGeneration({ partialImages: "2" }) +// @ts-expect-error Known Google-like options are inferred from the selected model. +Image.generate({ model: google, prompt: "A lighthouse", options: { aspectRatio: "wide" } }) + +const xai = XAI.configure({ apiKey: "test" }).image("any-model-id") +// @ts-expect-error Image generation options are request-scoped, not provider configuration. +XAI.configure({ image: { options: { resolution: "1k" } } }) +Image.generate({ + model: xai, + prompt: "A lighthouse", + images: [ImageInput.url("data:image/png;base64,AQID"), ImageInput.file("file_123")], + options: { + n: 2, + aspectRatio: "future-ratio", + resolution: "future-resolution", + responseFormat: "future-format", + future_option: true, + }, +}) +Image.generate({ + model: xai, + prompt: "A lighthouse", + options: { aspect_ratio: "16:9", response_format: "b64_json", native_future_option: true }, +}) +// @ts-expect-error Known xAI numeric options retain their value kind. +Image.generate({ model: xai, prompt: "A lighthouse", options: { n: "2" } }) +// @ts-expect-error Known xAI string options retain their value kind. +Image.generate({ model: xai, prompt: "A lighthouse", options: { resolution: 2 } }) + +const zai = ZAI.configure({ apiKey: "test" }).image("any-model-id") +// @ts-expect-error Image generation options are request-scoped, not provider configuration. +ZAI.configure({ image: { options: { quality: "hd" } } }) +Image.generate({ + model: zai, + prompt: "A lighthouse", + options: { quality: "future-quality", userID: "user-123", future_option: true }, +}) +Image.generate({ model: zai, prompt: "A lighthouse", options: { user_id: "raw-user" } }) +// @ts-expect-error Known Z.ai string options retain their value kind. +Image.generate({ model: zai, prompt: "A lighthouse", options: { quality: 1 } }) +// @ts-expect-error Known Z.ai user IDs retain their value kind. +Image.generate({ model: zai, prompt: "A lighthouse", options: { userID: 1 } }) + +declare const generic: ImageModel +Image.generate({ model: generic, prompt: "A lighthouse", options: { arbitrary: true } }) +const explicitImageInput: ImageInput = ImageInput.url("https://example.com/image.png") +void explicitImageInput + +// @ts-expect-error Raw strings are ambiguous and are not image inputs. +Image.generate({ model: openai, prompt: "A lighthouse", images: ["AQID"] }) +// @ts-expect-error Byte image inputs require an explicit MIME type. +Image.generate({ model: openai, prompt: "A lighthouse", images: [{ type: "bytes", data: new Uint8Array() }] }) +// @ts-expect-error File URIs require an explicit MIME type for Gemini fileData. +Image.generate({ model: google, prompt: "A lighthouse", images: [{ type: "file-uri", uri: "files/123" }] }) + +const request = Image.request({ + model: google, + prompt: "A lighthouse", + options: { aspectRatio: "1:1", futureOption: true }, +}) +const typedRequest: ImageRequestFor = request +void typedRequest + +// @ts-expect-error Image requests no longer expose a common count option. +Image.generate({ model: openai, prompt: "A lighthouse", count: 2 }) +// @ts-expect-error Image requests no longer expose a common size option. +Image.generate({ model: openai, prompt: "A lighthouse", size: { width: 1024, height: 1024 } }) +// @ts-expect-error Image requests no longer expose a common aspectRatio option. +Image.generate({ model: openai, prompt: "A lighthouse", aspectRatio: "16:9" }) +// @ts-expect-error Image requests no longer expose a common seed option. +Image.generate({ model: openai, prompt: "A lighthouse", seed: 1 }) +// @ts-expect-error Image requests do not expose metadata. +Image.generate({ model: openai, prompt: "A lighthouse", metadata: { trace: true } }) +// @ts-expect-error Masks are provider options, not a common image request field. +Image.generate({ model: openai, prompt: "A lighthouse", mask: ImageInput.url("https://example.com/mask.png") }) diff --git a/packages/llm/test/lib/effect.ts b/packages/ai/test/lib/effect.ts similarity index 100% rename from packages/llm/test/lib/effect.ts rename to packages/ai/test/lib/effect.ts diff --git a/packages/llm/test/lib/http.ts b/packages/ai/test/lib/http.ts similarity index 100% rename from packages/llm/test/lib/http.ts rename to packages/ai/test/lib/http.ts diff --git a/packages/ai/test/lib/image.ts b/packages/ai/test/lib/image.ts new file mode 100644 index 000000000000..539046e0111b --- /dev/null +++ b/packages/ai/test/lib/image.ts @@ -0,0 +1,29 @@ +export const dimensions = (data: Uint8Array) => { + if (data[0] === 0x89 && data[1] === 0x50 && data[2] === 0x4e && data[3] === 0x47) + return { + width: readUint32(data, 16), + height: readUint32(data, 20), + } + if (data[0] === 0xff && data[1] === 0xd8) { + for (let offset = 2; offset + 8 < data.length; ) { + if (data[offset] !== 0xff) { + offset++ + continue + } + const marker = data[offset + 1] + if ( + marker !== undefined && + [0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf].includes(marker) + ) + return { + width: (data[offset + 7] << 8) | data[offset + 8], + height: (data[offset + 5] << 8) | data[offset + 6], + } + offset += 2 + ((data[offset + 2] << 8) | data[offset + 3]) + } + } + throw new Error("Unsupported image fixture format") +} + +const readUint32 = (data: Uint8Array, offset: number) => + ((data[offset] << 24) | (data[offset + 1] << 16) | (data[offset + 2] << 8) | data[offset + 3]) >>> 0 diff --git a/packages/llm/test/lib/openai-chunks.ts b/packages/ai/test/lib/openai-chunks.ts similarity index 100% rename from packages/llm/test/lib/openai-chunks.ts rename to packages/ai/test/lib/openai-chunks.ts diff --git a/packages/llm/test/lib/sse.ts b/packages/ai/test/lib/sse.ts similarity index 100% rename from packages/llm/test/lib/sse.ts rename to packages/ai/test/lib/sse.ts diff --git a/packages/ai/test/lib/tool-runtime.ts b/packages/ai/test/lib/tool-runtime.ts new file mode 100644 index 000000000000..56c7d91ea375 --- /dev/null +++ b/packages/ai/test/lib/tool-runtime.ts @@ -0,0 +1,151 @@ +import { Effect, Stream } from "effect" +import { LLMClient } from "../../src/route" +import { + LLMEvent, + LLMRequest, + Message, + type ContentPart, + type ProviderMetadata, + type ToolCallPart, + ToolResultPart, + type ToolResultValue, + type Usage, +} from "../../src/schema" +import { type Tools, toDefinitions } from "../../src/tool" +import { ToolRuntime } from "../../src/tool-runtime" + +interface RunOptions { + readonly request: LLMRequest + readonly tools: T + readonly maxSteps?: number +} + +/** Test-owned continuation loop. Production callers must own durable history. */ +export const runTools = (options: RunOptions) => + Stream.unwrap( + Effect.gen(function* () { + const names = new Set(Object.keys(options.tools)) + let request = LLMRequest.update(options.request, { + tools: [...options.request.tools.filter((tool) => !names.has(tool.name)), ...toDefinitions(options.tools)], + }) + let usage: Usage | undefined + const events: LLMEvent[] = [] + + for (let step = 0; step < (options.maxSteps ?? 10); step++) { + const streamed = Array.from(yield* LLMClient.stream(request).pipe(Stream.runCollect)) + const state = stepState(streamed) + usage = addUsage(usage, state.usage) + events.push(...streamed.filter((event) => event.type !== "finish").map((event) => indexStep(event, step))) + + if (state.toolCalls.length === 0) { + events.push(LLMEvent.finish({ reason: state.reason, usage, providerMetadata: state.providerMetadata })) + return Stream.fromIterable(events) + } + + const dispatched = yield* Effect.forEach( + state.toolCalls, + (call) => ToolRuntime.dispatch(options.tools, call).pipe(Effect.map((result) => [call, result] as const)), + { concurrency: 10 }, + ) + events.push(...dispatched.flatMap(([, result]) => result.events)) + + if (step + 1 >= (options.maxSteps ?? 10)) { + events.push(LLMEvent.finish({ reason: state.reason, usage, providerMetadata: state.providerMetadata })) + return Stream.fromIterable(events) + } + + request = LLMRequest.update(request, { + messages: [ + ...request.messages, + Message.assistant(state.assistantContent), + ...dispatched.map(([call, dispatched]) => + Message.tool({ + id: call.id, + name: call.name, + result: dispatched.result, + providerMetadata: call.providerMetadata, + }), + ), + ], + }) + } + + return Stream.fromIterable(events) + }), + ) + +const indexStep = (event: LLMEvent, index: number): LLMEvent => { + if (event.type === "step-start") return LLMEvent.stepStart({ index }) + if (event.type === "step-finish") return LLMEvent.stepFinish({ ...event, index }) + return event +} + +const stepState = (events: ReadonlyArray) => { + const assistantContent: ContentPart[] = [] + const toolCalls: ToolCallPart[] = [] + let reason: Extract["reason"] = { normalized: "unknown" } + let usage: Usage | undefined + let providerMetadata: ProviderMetadata | undefined + + for (const event of events) { + if (event.type === "text-delta" || event.type === "reasoning-delta") { + appendText(assistantContent, event.type === "text-delta" ? "text" : "reasoning", event.text) + } else if (event.type === "text-end" || event.type === "reasoning-end") { + appendText(assistantContent, event.type === "text-end" ? "text" : "reasoning", "", event.providerMetadata) + } else if (event.type === "tool-call") { + assistantContent.push(event) + if (!event.providerExecuted) toolCalls.push(event) + } else if (event.type === "tool-result" && event.providerExecuted && event.result !== undefined) { + assistantContent.push( + ToolResultPart.make({ + id: event.id, + name: event.name, + result: event.result, + providerExecuted: true, + providerMetadata: event.providerMetadata, + }), + ) + } else if (event.type === "finish") { + reason = event.reason + usage = event.usage + providerMetadata = event.providerMetadata + } + } + return { assistantContent, toolCalls, reason, usage, providerMetadata } +} + +const appendText = ( + content: ContentPart[], + type: "text" | "reasoning", + text: string, + providerMetadata?: ProviderMetadata, +) => { + const last = content.at(-1) + if (last?.type === type) { + content[content.length - 1] = { + ...last, + text: `${last.text}${text}`, + providerMetadata: providerMetadata ?? last.providerMetadata, + } + return + } + content.push({ type, text, providerMetadata }) +} + +const addUsage = (left: Usage | undefined, right: Usage | undefined): Usage | undefined => { + if (!left) return right + if (!right) return left + const sum = (key: keyof Usage) => + typeof left[key] !== "number" && typeof right[key] !== "number" + ? undefined + : ((left[key] as number | undefined) ?? 0) + ((right[key] as number | undefined) ?? 0) + return { + inputTokens: sum("inputTokens"), + outputTokens: sum("outputTokens"), + nonCachedInputTokens: sum("nonCachedInputTokens"), + cacheReadInputTokens: sum("cacheReadInputTokens"), + cacheWriteInputTokens: sum("cacheWriteInputTokens"), + reasoningTokens: sum("reasoningTokens"), + totalTokens: sum("totalTokens"), + } as Usage +} diff --git a/packages/ai/test/llm.test.ts b/packages/ai/test/llm.test.ts new file mode 100644 index 000000000000..e5588cf95d6a --- /dev/null +++ b/packages/ai/test/llm.test.ts @@ -0,0 +1,208 @@ +import { describe, expect, test } from "bun:test" +import { CacheHint, LLM, LLMResponse } from "../src" +import * as OpenAIChat from "../src/protocols/openai-chat" +import * as OpenAIResponses from "../src/protocols/openai-responses" +import { + GenerationOptions, + LLMRequest, + Message, + Model, + ToolCallPart, + ToolChoice, + ToolDefinition, + ToolResultPart, +} from "../src/schema" + +const chatRoute = OpenAIChat.route +const responsesRoute = OpenAIResponses.route + +describe("llm constructors", () => { + test("builds canonical schema classes from ergonomic input", () => { + const request = LLM.request({ + id: "req_1", + model: Model.make({ id: "fake-model", provider: "fake", route: chatRoute }), + system: "You are concise.", + prompt: "Say hello.", + }) + + expect(request).toBeInstanceOf(LLMRequest) + expect(request.model).toBeInstanceOf(Model) + expect(request.messages[0]).toBeInstanceOf(Message) + expect(request.system).toEqual([{ type: "text", text: "You are concise." }]) + expect(request.messages[0]?.content).toEqual([{ type: "text", text: "Say hello." }]) + expect(request.generation).toBeUndefined() + expect(request.tools).toEqual([]) + }) + + test("updates requests without spreading schema class instances", () => { + const base = LLM.request({ + id: "req_1", + model: Model.make({ id: "fake-model", provider: "fake", route: chatRoute }), + prompt: "Say hello.", + }) + const updated = LLMRequest.update(base, { + generation: GenerationOptions.make({ maxTokens: 20 }), + messages: [...base.messages, Message.assistant("Hi.")], + }) + + expect(updated).toBeInstanceOf(LLMRequest) + expect(updated.id).toBe("req_1") + expect(updated.model).toEqual(base.model) + expect(updated.generation).toEqual({ maxTokens: 20 }) + expect(updated.messages.map((message) => message.role)).toEqual(["user", "assistant"]) + }) + + test("keeps request options separate from route defaults", () => { + const request = LLM.request({ + model: Model.make({ + id: "fake-model", + provider: "fake", + route: chatRoute.with({ + generation: { maxTokens: 100, temperature: 1 }, + providerOptions: { openai: { store: false, metadata: { model: true } } }, + http: { body: { metadata: { model: true } }, headers: { "x-shared": "model" }, query: { model: "1" } }, + }), + }), + prompt: "Say hello.", + generation: { temperature: 0 }, + providerOptions: { openai: { store: true, metadata: { request: true } } }, + http: { body: { metadata: { request: true } }, headers: { "x-shared": "request" }, query: { request: "1" } }, + }) + + expect(request.generation).toEqual({ temperature: 0 }) + expect(request.providerOptions).toEqual({ openai: { store: true, metadata: { request: true } } }) + expect(request.http).toEqual({ + body: { metadata: { request: true } }, + headers: { "x-shared": "request" }, + query: { request: "1" }, + }) + }) + + test("updates canonical requests from the request datatype", () => { + const base = LLM.request({ + id: "req_1", + model: Model.make({ id: "fake-model", provider: "fake", route: chatRoute }), + prompt: "Say hello.", + }) + const updated = LLMRequest.update(base, { messages: [...base.messages, Message.assistant("Hi.")] }) + + expect(updated).toBeInstanceOf(LLMRequest) + expect(updated.id).toBe("req_1") + expect(LLMRequest.input(updated).id).toBe("req_1") + expect(updated.messages.map((message) => message.role)).toEqual(["user", "assistant"]) + expect(LLMRequest.update(updated, {})).toBe(updated) + }) + + test("updates canonical models from the model datatype", () => { + const base = Model.make({ + id: "fake-model", + provider: "fake", + route: chatRoute, + }) + const updated = Model.update(base, { + route: responsesRoute, + defaults: { generation: { maxTokens: 20 } }, + compatibility: { toolSchema: "gemini" }, + }) + const updatedInput = Model.input(updated) + + expect(updated).toBeInstanceOf(Model) + expect(String(updated.id)).toBe("fake-model") + expect(updated.route).toBe(responsesRoute) + expect(updated.defaults?.generation).toEqual({ maxTokens: 20 }) + expect(updated.compatibility).toEqual({ toolSchema: "gemini" }) + expect(updatedInput.defaults).toBe(updated.defaults) + expect(updatedInput.compatibility).toBe(updated.compatibility) + expect(String(updatedInput.provider)).toBe("fake") + expect(Model.update(updated, {})).toBe(updated) + }) + + test("carries model defaults and compatibility through route model selection", () => { + const model = chatRoute.model({ + id: "kimi-k2", + defaults: { + limits: { context: 128_000, output: 8_192 }, + generation: { maxTokens: 1_024, stop: ["END"] }, + providerOptions: { openai: { parallelToolCalls: false } }, + http: { body: { extra_body: true } }, + }, + compatibility: { toolSchema: "moonshot" }, + }) + const request = LLM.request({ model, prompt: "Say hello." }) + + expect(request.model.defaults?.limits).toEqual({ context: 128_000, output: 8_192 }) + expect(request.model.defaults?.generation).toEqual({ maxTokens: 1_024, stop: ["END"] }) + expect(request.model.defaults?.providerOptions).toEqual({ openai: { parallelToolCalls: false } }) + expect(request.model.defaults?.http).toEqual({ body: { extra_body: true } }) + expect(request.model.compatibility).toEqual({ toolSchema: "moonshot" }) + expect(request.generation).toBeUndefined() + expect(request.providerOptions).toBeUndefined() + expect(request.http).toBeUndefined() + }) + + test("builds tool choices from names and tools", () => { + const tool = ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } }) + + expect(tool).toBeInstanceOf(ToolDefinition) + expect(ToolChoice.make("lookup")).toEqual(new ToolChoice({ type: "tool", name: "lookup" })) + expect(ToolChoice.named("required")).toEqual(new ToolChoice({ type: "tool", name: "required" })) + expect(ToolChoice.make(tool)).toEqual(new ToolChoice({ type: "tool", name: "lookup" })) + }) + + test("builds tool choice modes from reserved strings", () => { + expect(ToolChoice.make("auto")).toEqual(new ToolChoice({ type: "auto" })) + expect(ToolChoice.make("none")).toEqual(new ToolChoice({ type: "none" })) + expect(ToolChoice.make("required")).toEqual(new ToolChoice({ type: "required" })) + expect( + LLM.request({ + model: Model.make({ + id: "fake-model", + provider: "fake", + route: chatRoute, + }), + prompt: "Use tools if needed.", + toolChoice: "required", + }).toolChoice, + ).toEqual(new ToolChoice({ type: "required" })) + }) + + test("builds assistant tool calls and tool result messages", () => { + const call = ToolCallPart.make({ id: "call_1", name: "lookup", input: { query: "weather" } }) + const result = ToolResultPart.make({ id: "call_1", name: "lookup", result: { temperature: 72 } }) + + expect(Message.assistant([call]).content).toEqual([call]) + expect(Message.tool(result).content).toEqual([ + { type: "tool-result", id: "call_1", name: "lookup", result: { type: "json", value: { temperature: 72 } } }, + ]) + }) + + test("builds chronological text-only system updates separately from the initial system prompt", () => { + const update = Message.system([ + { type: "text", text: "Use parameterized SQL.", cache: new CacheHint({ type: "ephemeral" }) }, + ]) + const request = LLM.request({ + model: Model.make({ id: "fake-model", provider: "fake", route: chatRoute }), + system: "Initial operator prompt.", + messages: [Message.user("Review this."), update], + }) + + expect(update).toBeInstanceOf(Message) + expect(update).toEqual({ + role: "system", + content: [{ type: "text", text: "Use parameterized SQL.", cache: { type: "ephemeral" } }], + }) + expect(request.system).toEqual([{ type: "text", text: "Initial operator prompt." }]) + expect(request.messages.map((message) => message.role)).toEqual(["user", "system"]) + }) + + test("extracts output text from response events", () => { + expect( + LLMResponse.text({ + events: [ + { type: "text-delta", id: "text-0", text: "hi" }, + { type: "finish", reason: { normalized: "stop" } }, + ], + }), + ).toBe("hi") + }) +}) diff --git a/packages/ai/test/prepare.test.ts b/packages/ai/test/prepare.test.ts new file mode 100644 index 000000000000..6923c5a678ed --- /dev/null +++ b/packages/ai/test/prepare.test.ts @@ -0,0 +1,178 @@ +import { describe, expect, test } from "bun:test" +import { Effect, Schema } from "effect" +import { HttpClientRequest } from "effect/unstable/http" +import { LLM, mergeProviderOptions } from "../src" +import { AnthropicMessages, OpenAIChat } from "../src/protocols" +import { Auth, LLMClient } from "../src/route" +import { it } from "./lib/effect" +import { dynamicResponse } from "./lib/http" +import { deltaChunk } from "./lib/openai-chunks" +import { sseEvents } from "./lib/sse" + +const TargetJson = Schema.fromJsonString(Schema.Unknown) +const decodeJson = Schema.decodeUnknownSync(TargetJson) + +describe("request option precedence", () => { + test("deep-merges provider option records and replaces arrays, primitives, and null", () => { + const merged = mergeProviderOptions( + { + openai: { + include: ["route"], + metadata: { route: true, shared: "route" }, + nullable: "route", + primitive: "route", + }, + }, + { + openai: { + include: ["model"], + metadata: { model: true, shared: "model" }, + nullable: null, + primitive: "model", + }, + }, + { openai: { metadata: { request: true }, primitive: false } }, + ) + + expect(merged).toEqual({ + openai: { + include: ["model"], + metadata: { route: true, model: true, request: true, shared: "model" }, + nullable: null, + primitive: false, + }, + }) + }) + + it.effect("prepares bodies with route defaults, model defaults, and call options in order", () => + Effect.gen(function* () { + const route = OpenAIChat.route.with({ + endpoint: { baseURL: "https://api.openai.test/v1/" }, + auth: Auth.bearer("test"), + generation: { maxTokens: 10, temperature: 1, stop: ["route"] }, + providerOptions: { openai: { store: false, reasoningEffort: "low" } }, + }) + const model = route.model({ + id: "gpt-4o-mini", + defaults: { + generation: { maxTokens: 20, temperature: 0.5, frequencyPenalty: 0.25, stop: ["model"] }, + providerOptions: { openai: { reasoningEffort: "medium" } }, + }, + }) + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + prompt: "Say hello.", + generation: { maxTokens: 30, topP: 0.9, stop: ["request"] }, + providerOptions: { openai: { store: true } }, + }), + ) + + expect(prepared.body).toMatchObject({ + model: "gpt-4o-mini", + stream: true, + max_tokens: 30, + temperature: 0.5, + top_p: 0.9, + frequency_penalty: 0.25, + store: true, + reasoning_effort: "medium", + }) + expect(prepared.body.stop).toEqual(["request"]) + }), + ) + + it.effect("applies model HTTP defaults before request HTTP overlays", () => + LLMClient.generate( + LLM.request({ + model: OpenAIChat.route + .with({ + endpoint: { baseURL: "https://api.openai.test/v1/" }, + auth: Auth.bearer("fresh-key"), + http: { + body: { metadata: { route: true, shared: "route" }, value: "route" }, + headers: { "x-route": "route", "x-shared": "route" }, + query: { route: "1", shared: "route" }, + }, + }) + .model({ + id: "gpt-4o-mini", + defaults: { + http: { + body: { metadata: { model: true, shared: "model" }, value: "model" }, + headers: { "x-model": "model", "x-shared": "model" }, + query: { model: "1", shared: "model" }, + }, + }, + }), + prompt: "Say hello.", + http: { + body: { metadata: { request: true }, value: null }, + headers: { "x-request": "request" }, + query: { request: "1" }, + }, + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.url).toBe("https://api.openai.test/v1/chat/completions?route=1&shared=model&model=1&request=1") + expect(web.headers.get("authorization")).toBe("Bearer fresh-key") + expect(web.headers.get("x-route")).toBe("route") + expect(web.headers.get("x-model")).toBe("model") + expect(web.headers.get("x-request")).toBe("request") + expect(web.headers.get("x-shared")).toBe("model") + expect(decodeJson(input.text)).toMatchObject({ + metadata: { route: true, model: true, request: true, shared: "model" }, + value: null, + }) + return input.respond(sseEvents(deltaChunk({}, "stop")), { + headers: { "content-type": "text/event-stream" }, + }) + }), + ), + ), + ), + ) + + it.effect("rejects raw body overlays for protocol-owned roots", () => + Effect.gen(function* () { + const model = OpenAIChat.route + .with({ endpoint: { baseURL: "https://api.openai.test/v1/" }, auth: Auth.bearer("test") }) + .model({ id: "gpt-4o-mini" }) + const error = yield* LLMClient.prepare( + LLM.request({ + model, + prompt: "Say hello.", + http: { body: { model: "gpt-5", messages: [], tools: [] } }, + }), + ).pipe(Effect.flip) + + expect(error.reason).toMatchObject({ + _tag: "InvalidRequest", + message: "http.body cannot overlay protocol-owned field(s): model, messages, tools", + }) + }), + ) + + it.effect("uses model output limits after route limits and before call maxTokens", () => + Effect.gen(function* () { + const route = AnthropicMessages.route.with({ + endpoint: { baseURL: "https://api.anthropic.test/v1/" }, + auth: Auth.header("x-api-key", "test"), + limits: { output: 128 }, + }) + const model = route.model({ id: "claude-sonnet-4-5", defaults: { limits: { output: 64 } } }) + const withoutMaxTokens = yield* LLMClient.prepare( + LLM.request({ model, prompt: "Say hello.", cache: "none" }), + ) + const withMaxTokens = yield* LLMClient.prepare( + LLM.request({ model, prompt: "Say hello.", cache: "none", generation: { maxTokens: 32 } }), + ) + + expect(withoutMaxTokens.body.max_tokens).toBe(64) + expect(withMaxTokens.body.max_tokens).toBe(32) + }), + ) +}) diff --git a/packages/ai/test/provider-error.test.ts b/packages/ai/test/provider-error.test.ts new file mode 100644 index 000000000000..ea0464089efb --- /dev/null +++ b/packages/ai/test/provider-error.test.ts @@ -0,0 +1,76 @@ +import { describe, expect, test } from "bun:test" +import { isContextOverflow } from "../src" +import { classifyProviderFailure } from "../src/provider-error" + +describe("provider error classification", () => { + test("classifies provider token limit messages as context overflow", () => { + const messages = [ + "tokens in request more than max tokens allowed", + '{"error":{"type":"request_too_large","message":"Request exceeds the maximum size"}}', + "Requested token count exceeds the model's maximum context length of 131072 tokens.", + "Input length (265330) exceeds model's maximum context length (262144).", + "Input length 131393 exceeds the maximum allowed input length of 131040 tokens.", + "The input (516368 tokens) is longer than the model's context length (262144 tokens).", + "Prompt has 5,958,968 tokens, but the configured context size is 256,000 tokens", + "Too many tokens", + "Token limit exceeded", + ] + + expect(messages.every(isContextOverflow)).toBe(true) + }) + + test("does not classify rate limits as context overflow", () => { + const messages = [ + "Throttling error: Too many tokens, please wait before trying again.", + "Rate limit exceeded, please retry after 30 seconds.", + "Too many requests. Please slow down.", + ] + + expect(messages.some(isContextOverflow)).toBe(false) + }) + + test("classifies V1 plain-text rate limit fallbacks", () => { + expect( + [ + "Request rate increased too quickly", + "Rate limit exceeded, please try again later", + "Too many requests, please slow down", + ].map((message) => classifyProviderFailure({ message })._tag), + ).toEqual(["RateLimit", "RateLimit", "RateLimit"]) + }) + + test("classifies V1 JSON rate limit fallbacks", () => { + expect( + [ + '{"type":"error","error":{"type":"too_many_requests"}}', + '{"type":"error","error":{"code":"rate_limit_exceeded"}}', + '{"code":"bad_request","error":{"code":"rate_limit_exceeded"}}', + '{"type":"error","error":{"code":"unknown","type":"too_many_requests"}}', + ].map((message) => classifyProviderFailure({ message })._tag), + ).toEqual(["RateLimit", "RateLimit", "RateLimit", "RateLimit"]) + }) + + test("classifies V1 overloaded provider codes", () => { + expect( + ['{"code":"resource_exhausted"}', '{"code":"service_unavailable"}'].map( + (message) => classifyProviderFailure({ message })._tag, + ), + ).toEqual(["ProviderInternal", "ProviderInternal"]) + }) + + test("classifies nested provider codes when a top-level code is also present", () => { + expect( + [ + '{"code":"bad_request","error":{"code":"usage_not_included"}}', + '{"code":"bad_request","error":{"code":"server_error"}}', + '{"code":"bad_request","error":{"type":"invalid_request_error"}}', + ].map((message) => classifyProviderFailure({ message })._tag), + ).toEqual(["QuotaExceeded", "ProviderInternal", "InvalidRequest"]) + }) + + test("keeps unknown and malformed provider payloads non-retryable", () => { + expect(classifyProviderFailure({ message: '{"error":{"message":"no_kv_space"}}' })._tag).toBe("UnknownProvider") + expect(classifyProviderFailure({ message: '{"type":"error","error":{"code":123}}' })._tag).toBe("UnknownProvider") + expect(classifyProviderFailure({ message: "not-json" })._tag).toBe("UnknownProvider") + }) +}) diff --git a/packages/ai/test/provider-package.test.ts b/packages/ai/test/provider-package.test.ts new file mode 100644 index 000000000000..45ab7dfa8459 --- /dev/null +++ b/packages/ai/test/provider-package.test.ts @@ -0,0 +1,310 @@ +import { describe, expect, test } from "bun:test" +import { model } from "@opencode-ai/ai/providers/openai" + +describe("provider package entrypoints", () => { + test("semantic API aliases expose the same contract", async () => { + const modules = await Promise.all([ + import("@opencode-ai/ai/providers/openai"), + import("@opencode-ai/ai/providers/openai/responses"), + import("@opencode-ai/ai/providers/openai/chat"), + import("@opencode-ai/ai/providers/anthropic"), + import("@opencode-ai/ai/providers/anthropic-compatible"), + import("@opencode-ai/ai/providers/openai-compatible"), + import("@opencode-ai/ai/providers/openai-compatible/responses"), + import("@opencode-ai/ai/providers/amazon-bedrock"), + import("@opencode-ai/ai/providers/azure"), + import("@opencode-ai/ai/providers/azure/responses"), + import("@opencode-ai/ai/providers/azure/chat"), + import("@opencode-ai/ai/providers/google"), + import("@opencode-ai/ai/providers/google-vertex"), + import("@opencode-ai/ai/providers/google-vertex/gemini"), + import("@opencode-ai/ai/providers/google-vertex/chat"), + import("@opencode-ai/ai/providers/google-vertex/responses"), + import("@opencode-ai/ai/providers/google-vertex/messages"), + ]) + + for (const module of modules) expect(module.model).toBeFunction() + expect(modules[0].model).toBe(modules[1].model) + expect(modules[8].model).toBe(modules[9].model) + expect(modules[12].model).toBe(modules[13].model) + }) + + test("maps package settings onto the executable model", () => { + const selected = model("gpt-5", { + apiKey: "fixture", + baseURL: "https://api.openai.test/v1", + headers: { "x-application": "opencode" }, + body: { service_tier: "priority" }, + limits: { context: 200_000, output: 64_000 }, + unrelatedInheritedSetting: true, + }) + + expect(selected.route.id).toBe("openai-responses") + expect(selected.route.defaults.headers).toEqual({ "x-application": "opencode" }) + expect(selected.route.defaults.http?.body).toEqual({ service_tier: "priority" }) + expect(selected.route.defaults.limits).toEqual({ context: 200_000, output: 64_000 }) + }) + + test("selects transport without changing the semantic API", () => { + expect(model("gpt-5", { apiKey: "fixture" }).route.id).toBe("openai-responses") + expect(model("gpt-5", { apiKey: "fixture", transport: "websocket" }).route.id).toBe("openai-responses-websocket") + }) + + test("maps OpenAI-compatible Responses settings onto the executable model", async () => { + const OpenAICompatibleResponses = await import("@opencode-ai/ai/providers/openai-compatible/responses") + const selected = OpenAICompatibleResponses.model("custom-model", { + apiKey: "fixture", + baseURL: "https://responses.example.test/v1", + provider: "example", + headers: { "x-application": "opencode" }, + body: { service_tier: "priority" }, + limits: { context: 200_000, output: 64_000 }, + providerOptions: { openresponses: { reasoningEffort: "low", store: true } }, + }) + + expect(String(selected.provider)).toBe("example") + expect(selected.route.id).toBe("openai-compatible-responses") + expect(selected.route.endpoint).toMatchObject({ + baseURL: "https://responses.example.test/v1", + path: "/responses", + }) + expect(selected.route.defaults.headers).toEqual({ "x-application": "opencode" }) + expect(selected.route.defaults.http?.body).toEqual({ service_tier: "priority" }) + expect(selected.route.defaults.limits).toEqual({ context: 200_000, output: 64_000 }) + expect(selected.route.defaults.providerOptions).toEqual({ + openresponses: { reasoningEffort: "low", store: true }, + }) + }) + + test("maps Anthropic-compatible settings onto the executable model", async () => { + const AnthropicCompatible = await import("@opencode-ai/ai/providers/anthropic-compatible") + const selected = AnthropicCompatible.model("compatible-model", { + apiKey: "fixture", + baseURL: "https://messages.example.test/v1", + provider: "example", + headers: { "x-application": "opencode" }, + body: { metadata: { user_id: "user_1" } }, + limits: { context: 200_000, output: 64_000 }, + providerOptions: { anthropic: { effort: "low" } }, + }) + + expect(String(selected.provider)).toBe("example") + expect(selected.route.id).toBe("anthropic-messages") + expect(selected.route.endpoint).toMatchObject({ + baseURL: "https://messages.example.test/v1", + path: "/messages", + }) + expect(selected.route.defaults.headers).toEqual({ "x-application": "opencode" }) + expect(selected.route.defaults.http?.body).toEqual({ metadata: { user_id: "user_1" } }) + expect(selected.route.defaults.limits).toEqual({ context: 200_000, output: 64_000 }) + expect(selected.route.defaults.providerOptions).toEqual({ anthropic: { effort: "low" } }) + }) + + test("maps Anthropic provider options onto the executable model", async () => { + const Anthropic = await import("@opencode-ai/ai/providers/anthropic") + const selected = Anthropic.model("claude-sonnet-4-6", { + apiKey: "fixture", + providerOptions: { anthropic: { thinking: { type: "adaptive" } } }, + }) + + expect(selected.route.defaults.providerOptions).toEqual({ + anthropic: { thinking: { type: "adaptive" } }, + }) + }) + + test("requires an Anthropic-compatible base URL at runtime", async () => { + const AnthropicCompatible = await import("@opencode-ai/ai/providers/anthropic-compatible") + expect(() => + Reflect.apply(AnthropicCompatible.model, undefined, ["compatible-model", { apiKey: "fixture" }]), + ).toThrow("Anthropic-compatible providers require a baseURL") + }) + + test("rejects conflicting Anthropic-compatible auth settings at runtime", async () => { + const Anthropic = await import("@opencode-ai/ai/providers/anthropic") + const AnthropicCompatible = await import("@opencode-ai/ai/providers/anthropic-compatible") + expect(() => + Reflect.apply(AnthropicCompatible.model, undefined, [ + "compatible-model", + { + apiKey: "fixture", + authToken: "token", + baseURL: "https://messages.example.test/v1", + }, + ]), + ).toThrow("Anthropic-compatible apiKey cannot be combined with authToken") + expect(() => + Reflect.apply(Anthropic.model, undefined, ["claude-sonnet-4-6", { apiKey: "fixture", authToken: "token" }]), + ).toThrow("Anthropic apiKey cannot be combined with authToken") + }) + + test("maps legacy OpenAI organization and project settings to headers", () => { + const selected = model("gpt-5", { + apiKey: "fixture", + organization: "org_123", + project: "proj_123", + }) + + expect(selected.route.defaults.headers).toMatchObject({ + "OpenAI-Organization": "org_123", + "OpenAI-Project": "proj_123", + }) + }) + + test("selects Azure API entrypoints with the same model contract", async () => { + const Azure = await import("@opencode-ai/ai/providers/azure") + const AzureChat = await import("@opencode-ai/ai/providers/azure/chat") + const AzureResponses = await import("@opencode-ai/ai/providers/azure/responses") + const settings = { + apiKey: "fixture", + resourceName: "opencode-test", + headers: { "x-application": "opencode" }, + body: { service_tier: "priority" }, + limits: { context: 200_000, output: 64_000 }, + } + + const responses = AzureResponses.model("deployment", settings) + const chat = AzureChat.model("deployment", settings) + + expect(Azure.model("deployment", settings).route.id).toBe("azure-openai-responses") + expect(responses.route.id).toBe("azure-openai-responses") + expect(responses.route.endpoint.baseURL).toBe("https://opencode-test.openai.azure.com/openai/v1") + expect(responses.route.defaults.headers).toEqual({ "x-application": "opencode" }) + expect(responses.route.defaults.http?.body).toEqual({ service_tier: "priority" }) + expect(responses.route.defaults.limits).toEqual({ context: 200_000, output: 64_000 }) + expect(chat.route.id).toBe("azure-openai-chat") + }) + + test("maps Google package settings onto the Gemini model", async () => { + const Google = await import("@opencode-ai/ai/providers/google") + const selected = Google.model("gemini-2.5-flash", { + apiKey: "fixture", + baseURL: "https://generativelanguage.test/v1beta", + headers: { "x-application": "opencode" }, + body: { safetySettings: [] }, + limits: { context: 1_000_000, output: 65_536 }, + providerOptions: { gemini: { thinkingConfig: { thinkingBudget: 1_024 } } }, + }) + + expect(selected.route.id).toBe("gemini") + expect(selected.route.endpoint.baseURL).toBe("https://generativelanguage.test/v1beta") + expect(selected.route.defaults.headers).toEqual({ "x-application": "opencode" }) + expect(selected.route.defaults.http?.body).toEqual({ safetySettings: [] }) + expect(selected.route.defaults.limits).toEqual({ context: 1_000_000, output: 65_536 }) + expect(selected.route.defaults.providerOptions).toEqual({ + gemini: { thinkingConfig: { thinkingBudget: 1_024 } }, + }) + }) + + test("selects Vertex entrypoints with the same model contract", async () => { + const GoogleVertex = await import("@opencode-ai/ai/providers/google-vertex") + const GoogleVertexGemini = await import("@opencode-ai/ai/providers/google-vertex/gemini") + const GoogleVertexChat = await import("@opencode-ai/ai/providers/google-vertex/chat") + const GoogleVertexResponses = await import("@opencode-ai/ai/providers/google-vertex/responses") + const GoogleVertexMessages = await import("@opencode-ai/ai/providers/google-vertex/messages") + const gemini = GoogleVertex.model("gemini-3.5-flash", { + apiKey: "fixture", + headers: { "x-application": "opencode" }, + body: { safetySettings: [] }, + limits: { context: 1_000_000, output: 65_536 }, + }) + const messages = GoogleVertexMessages.model("claude-sonnet-4-6", { + accessToken: "fixture", + location: "global", + project: "vertex-project", + }) + const chat = GoogleVertexChat.model("deepseek-ai/deepseek-v3.2-maas", { + accessToken: "fixture", + location: "global", + project: "vertex-project", + }) + const responses = GoogleVertexResponses.model("xai/grok-4.20-reasoning", { + accessToken: "fixture", + location: "global", + project: "vertex-project", + }) + + expect(GoogleVertexGemini.model).toBe(GoogleVertex.model) + expect(gemini.route.id).toBe("google-vertex-gemini") + expect(gemini.route.protocol).toBe("gemini") + expect(gemini.route.endpoint.baseURL).toBe("https://aiplatform.googleapis.com/v1/publishers/google") + expect(gemini.route.defaults.headers).toEqual({ "x-application": "opencode" }) + expect(gemini.route.defaults.http?.body).toEqual({ safetySettings: [] }) + expect(gemini.route.defaults.limits).toEqual({ context: 1_000_000, output: 65_536 }) + expect( + GoogleVertex.model("gemini-3.5-flash", { + accessToken: "fixture", + location: "eu", + project: "vertex-project", + }).route.endpoint.baseURL, + ).toBe("https://aiplatform.eu.rep.googleapis.com/v1beta1/projects/vertex-project/locations/eu/publishers/google") + expect(messages.route.id).toBe("google-vertex-messages") + expect(messages.route.protocol).toBe("anthropic-messages") + expect(messages.route.endpoint.baseURL).toBe( + "https://aiplatform.googleapis.com/v1/projects/vertex-project/locations/global/publishers/anthropic/models", + ) + expect(chat.route.id).toBe("google-vertex-chat") + expect(chat.route.protocol).toBe("openai-chat") + expect(chat.route.endpoint).toMatchObject({ + baseURL: "https://aiplatform.googleapis.com/v1/projects/vertex-project/locations/global/endpoints/openapi", + path: "/chat/completions", + }) + expect(responses.route.id).toBe("google-vertex-responses") + expect(responses.route.protocol).toBe("open-responses") + expect(responses.route.endpoint).toMatchObject({ + baseURL: "https://aiplatform.googleapis.com/v1/projects/vertex-project/locations/global/endpoints/openapi", + path: "/responses", + }) + expect(responses.route.defaults.providerOptions).toEqual({ openresponses: { store: false } }) + }) + + test("rejects conflicting Vertex auth settings at runtime", async () => { + const GoogleVertex = await import("@opencode-ai/ai/providers/google-vertex") + const GoogleVertexChat = await import("@opencode-ai/ai/providers/google-vertex/chat") + const GoogleVertexMessages = await import("@opencode-ai/ai/providers/google-vertex/messages") + const GoogleVertexResponses = await import("@opencode-ai/ai/providers/google-vertex/responses") + const Providers = await import("@opencode-ai/ai/providers") + expect(() => + Reflect.apply(GoogleVertex.model, undefined, [ + "gemini-3.5-flash", + { accessToken: "token", apiKey: "fixture", project: "vertex-project" }, + ]), + ).toThrow("Google Vertex apiKey cannot be combined with accessToken or auth") + const configured = Reflect.apply(GoogleVertex.configure, undefined, [ + { accessToken: "token", auth: {}, project: "vertex-project" }, + ]) + expect(() => configured.model("gemini-3.5-flash")).toThrow("Google Vertex accessToken cannot be combined with auth") + expect(() => + Reflect.apply(GoogleVertexMessages.model, undefined, [ + "claude-sonnet-4-6", + { apiKey: "fixture", project: "vertex-project" }, + ]), + ).toThrow("Google Vertex Messages does not support API keys") + expect(() => + Reflect.apply(Providers.GoogleVertexMessages.configure, undefined, [ + { apiKey: "fixture", project: "vertex-project" }, + ]), + ).toThrow("Google Vertex Messages does not support API keys") + expect(() => + Reflect.apply(GoogleVertexChat.model, undefined, [ + "deepseek-ai/deepseek-v3.2-maas", + { apiKey: "fixture", project: "vertex-project" }, + ]), + ).toThrow("Google Vertex Chat does not support API keys") + expect(() => + Reflect.apply(Providers.GoogleVertexChat.configure, undefined, [ + { apiKey: "fixture", project: "vertex-project" }, + ]), + ).toThrow("Google Vertex Chat does not support API keys") + expect(() => + Reflect.apply(GoogleVertexResponses.model, undefined, [ + "xai/grok-4.20-reasoning", + { apiKey: "fixture", project: "vertex-project" }, + ]), + ).toThrow("Google Vertex Responses does not support API keys") + expect(() => + Reflect.apply(Providers.GoogleVertexResponses.configure, undefined, [ + { apiKey: "fixture", project: "vertex-project" }, + ]), + ).toThrow("Google Vertex Responses does not support API keys") + }) +}) diff --git a/packages/llm/test/provider.types.ts b/packages/ai/test/provider.types.ts similarity index 100% rename from packages/llm/test/provider.types.ts rename to packages/ai/test/provider.types.ts diff --git a/packages/ai/test/provider/anthropic-messages-cache.recorded.test.ts b/packages/ai/test/provider/anthropic-messages-cache.recorded.test.ts new file mode 100644 index 000000000000..c6b9814e3c5d --- /dev/null +++ b/packages/ai/test/provider/anthropic-messages-cache.recorded.test.ts @@ -0,0 +1,110 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { CacheHint, LLM, LLMRequest, Message, ToolCallPart, ToolDefinition } from "../../src" +import { LLMClient } from "../../src/route" +import * as Anthropic from "../../src/providers/anthropic" +import { LARGE_CACHEABLE_SYSTEM } from "../recorded-scenarios" +import { recordedTests } from "../recorded-test" + +const model = Anthropic.configure({ + apiKey: process.env.ANTHROPIC_API_KEY ?? "fixture", +}).model("claude-haiku-4-5-20251001") + +// Two identical generations in a row. The first call writes the prefix into +// Anthropic's cache; the second should report a cache read against the same +// prefix. Cassette captures both interactions in order. +const cacheRequest = LLM.request({ + id: "recorded_anthropic_cache", + model, + system: [{ type: "text", text: LARGE_CACHEABLE_SYSTEM, cache: new CacheHint({ type: "ephemeral" }) }], + prompt: "Say hi.", + // Manual hint on the system part is the only marker we want here — skip the + // auto-policy's latest-user-message breakpoint so the cassette body matches. + cache: "none", + generation: { maxTokens: 16, temperature: 0 }, +}) + +const lookup = ToolDefinition.make({ + name: "lookup", + description: "Look up a fixture value.", + inputSchema: { + type: "object", + properties: { index: { type: "number" } }, + required: ["index"], + additionalProperties: false, + }, +}) +const longToolTurn = [ + Message.user("Run the fixture lookups."), + ...Array.from({ length: 11 }, (_, index) => { + const id = `lookup_${index}` + return [ + Message.assistant(ToolCallPart.make({ id, name: lookup.name, input: { index } })), + Message.tool({ + id, + name: lookup.name, + result: `Fixture result ${index}. `.repeat(80), + }), + ] + }).flat(), +] +const longToolTurnRequest = LLM.request({ + id: "recorded_anthropic_cache_long_tool_turn", + model, + system: LARGE_CACHEABLE_SYSTEM, + messages: longToolTurn, + tools: [lookup], + generation: { maxTokens: 16, temperature: 0 }, +}) + +const recorded = recordedTests({ + prefix: "anthropic-messages-cache", + provider: "anthropic", + protocol: "anthropic-messages", + requires: ["ANTHROPIC_API_KEY"], + // Two identical requests in one cassette — replay walks the cassette in + // recording order so the second call replays the cached-hit interaction. + options: { + redact: { allowRequestHeaders: ["anthropic-version"] }, + }, +}) + +describe("Anthropic Messages cache recorded", () => { + recorded.effect.with("writes then reads cache_control on identical second call", { tags: ["cache"] }, () => + Effect.gen(function* () { + const first = yield* LLMClient.generate(cacheRequest) + // The first call may write the cache (cacheWriteInputTokens > 0) or it + // may be a fresh miss (both fields 0) depending on whether the prefix is + // already warm on Anthropic's side. The assertion that matters is that + // the SECOND call reports a non-zero cache read. + expect(first.usage?.cacheReadInputTokens ?? 0).toBeGreaterThanOrEqual(0) + + const second = yield* LLMClient.generate(cacheRequest) + expect(second.usage?.cacheReadInputTokens ?? 0).toBeGreaterThan(0) + }), + ) + + recorded.effect.with("keeps a long tool turn inside the cache lookback", { tags: ["cache", "tool"] }, () => + Effect.gen(function* () { + const first = yield* LLMClient.generate(longToolTurnRequest) + const firstRead = first.usage?.cacheReadInputTokens ?? 0 + const firstWrite = first.usage?.cacheWriteInputTokens ?? 0 + const firstCached = firstRead + firstWrite + // The prefix may already be warm when recording, so either a read or a + // write establishes that Anthropic recognized the cache boundary. + expect(firstCached).toBeGreaterThan(0) + + const second = yield* LLMClient.generate( + LLMRequest.update(longToolTurnRequest, { + messages: [ + ...longToolTurn, + Message.assistant("The fixture lookups are complete."), + Message.user("Reply exactly: OK"), + ], + }), + ) + expect(second.usage?.cacheReadInputTokens ?? 0).toBeGreaterThanOrEqual(firstCached) + expect(second.usage?.cacheWriteInputTokens ?? 0).toBeLessThan(firstCached) + }), + ) +}) diff --git a/packages/llm/test/provider/anthropic-messages.recorded.test.ts b/packages/ai/test/provider/anthropic-messages.recorded.test.ts similarity index 100% rename from packages/llm/test/provider/anthropic-messages.recorded.test.ts rename to packages/ai/test/provider/anthropic-messages.recorded.test.ts diff --git a/packages/ai/test/provider/anthropic-messages.test.ts b/packages/ai/test/provider/anthropic-messages.test.ts new file mode 100644 index 000000000000..af1b3d99c802 --- /dev/null +++ b/packages/ai/test/provider/anthropic-messages.test.ts @@ -0,0 +1,1391 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { HttpClientRequest } from "effect/unstable/http" +import { CacheHint, LLM, LLMError, LLMRequest, Message, ToolCallPart, ToolDefinition, Usage } from "../../src" +import { Auth, LLMClient } from "../../src/route" +import * as AnthropicMessages from "../../src/protocols/anthropic-messages" +import { continuationRequest, nativeAnthropicMessagesContinuation } from "../continuation-scenarios" +import { it } from "../lib/effect" +import { dynamicResponse, fixedResponse } from "../lib/http" +import { sseEvents } from "../lib/sse" + +const model = AnthropicMessages.route + .with({ endpoint: { baseURL: "https://api.anthropic.test/v1/" }, auth: Auth.header("x-api-key", "test") }) + .model({ id: "claude-sonnet-4-5" }) + +const opus48 = AnthropicMessages.route + .with({ endpoint: { baseURL: "https://api.anthropic.test/v1/" }, auth: Auth.header("x-api-key", "test") }) + .model({ id: "claude-opus-4-8" }) + +const request = LLM.request({ + id: "req_1", + model, + system: { type: "text", text: "You are concise.", cache: new CacheHint({ type: "ephemeral" }) }, + prompt: "Say hello.", + // This fixture predates the `cache: "auto"` default; pin the policy off so + // existing wire-shape assertions only see the manual hint on the system part. + cache: "none", + generation: { maxTokens: 20, temperature: 0 }, +}) + +type AnthropicToolResult = Extract< + AnthropicMessages.AnthropicMessagesBody["messages"][number]["content"][number], + { readonly type: "tool_result" } +> + +const expectToolResult = (body: AnthropicMessages.AnthropicMessagesBody): AnthropicToolResult => { + const result = body.messages + .flatMap((message) => (message.role === "user" ? message.content : [])) + .find((block): block is AnthropicToolResult => block.type === "tool_result") + expect(result).toBeDefined() + return result! +} + +describe("Anthropic Messages route", () => { + it.effect("prepares Anthropic Messages target", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare(request) + + expect(prepared.body).toEqual({ + model: "claude-sonnet-4-5", + system: [{ type: "text", text: "You are concise.", cache_control: { type: "ephemeral" } }], + messages: [{ role: "user", content: [{ type: "text", text: "Say hello." }] }], + stream: true, + max_tokens: 20, + temperature: 0, + }) + }), + ) + + it.effect("lowers adaptive thinking settings with effort", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLMRequest.update(request, { + providerOptions: { + anthropic: { thinking: { type: "adaptive", display: "summarized" }, effort: "low" }, + }, + }), + ) + + expect(prepared.body).toMatchObject({ + thinking: { type: "adaptive", display: "summarized" }, + output_config: { effort: "low" }, + }) + }), + ) + + it.effect("normalizes enabled and disabled thinking settings", () => + Effect.gen(function* () { + const enabled = yield* LLMClient.prepare( + LLMRequest.update(request, { + providerOptions: { anthropic: { thinking: { type: "enabled", budgetTokens: 1_024 } } }, + }), + ) + const legacy = yield* LLMClient.prepare( + LLMRequest.update(request, { + providerOptions: { anthropic: { thinking: { type: "enabled", budget_tokens: 2_048 } } }, + }), + ) + const disabled = yield* LLMClient.prepare( + LLMRequest.update(request, { + providerOptions: { anthropic: { thinking: { type: "disabled" } } }, + }), + ) + + expect(enabled.body.thinking).toEqual({ type: "enabled", budget_tokens: 1_024 }) + expect(legacy.body.thinking).toEqual({ type: "enabled", budget_tokens: 2_048 }) + expect(disabled.body.thinking).toEqual({ type: "disabled" }) + }), + ) + + it.effect("rejects enabled thinking without a budget", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLMRequest.update(request, { + providerOptions: { anthropic: { thinking: { type: "enabled" } } }, + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("Anthropic thinking provider option requires budgetTokens") + }), + ) + + it.effect("lowers chronological system updates natively for Claude Opus 4.8 with cache hints", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: opus48, + messages: [ + Message.user("Before."), + Message.system([{ type: "text", text: "Operator update.", cache: new CacheHint({ type: "ephemeral" }) }]), + Message.assistant("After."), + ], + cache: "none", + }), + ) + + expect(prepared.body.messages).toEqual([ + { role: "user", content: [{ type: "text", text: "Before." }] }, + { + role: "system", + content: [{ type: "text", text: "Operator update.", cache_control: { type: "ephemeral" } }], + }, + { role: "assistant", content: [{ type: "text", text: "After." }] }, + ]) + }), + ) + + it.effect("lowers chronological system updates to wrapped user text for unsupported Anthropic models", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.user("Before."), + Message.system("Treat literally."), + Message.assistant("After."), + ], + cache: "none", + }), + ) + + expect(prepared.body.messages).toEqual([ + { + role: "user", + content: [ + { type: "text", text: "Before." }, + { type: "text", text: "\nTreat </system-update> literally.\n" }, + ], + }, + { role: "assistant", content: [{ type: "text", text: "After." }] }, + ]) + }), + ) + + it.effect("rejects non-text chronological system update content before send", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + model: opus48, + messages: [ + Message.user("Before."), + Message.make({ role: "system", content: { type: "media", mediaType: "image/png", data: "AAECAw==" } }), + ], + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("Anthropic Messages system messages only support text content for now") + }), + ) + + it.effect("falls back for unsupported native chronological system update placement", () => + Effect.gen(function* () { + expect( + (yield* LLMClient.prepare( + LLM.request({ + model: opus48, + messages: [Message.assistant("Plain."), Message.system("After plain assistant.")], + cache: "none", + }), + )).body.messages, + ).toEqual([ + { role: "assistant", content: [{ type: "text", text: "Plain." }] }, + { + role: "user", + content: [{ type: "text", text: "\nAfter plain assistant.\n" }], + }, + ]) + expect( + (yield* LLMClient.prepare( + LLM.request({ model: opus48, messages: [Message.system("First.")], cache: "none" }), + )).body.messages, + ).toEqual([{ role: "user", content: [{ type: "text", text: "\nFirst.\n" }] }]) + expect( + (yield* LLMClient.prepare( + LLM.request({ + model: opus48, + messages: [Message.user("Before."), Message.system("One."), Message.system("Two.")], + cache: "none", + }), + )).body.messages, + ).toEqual([ + { + role: "user", + content: [ + { type: "text", text: "Before." }, + { type: "text", text: "\nOne.\n" }, + { type: "text", text: "\nTwo.\n" }, + ], + }, + ]) + }), + ) + + it.effect("rejects a system update between a local tool call and its result", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + model: opus48, + messages: [ + Message.user("Use the tool."), + Message.assistant([ToolCallPart.make({ id: "call_1", name: "lookup", input: {} })]), + Message.system("Too early."), + Message.tool({ id: "call_1", name: "lookup", result: "Done." }), + ], + cache: "none", + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("system updates cannot split a local tool call from its tool result") + }), + ) + + it.effect("prepares tool call and tool result messages", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result", + model, + messages: [ + Message.user("What is the weather?"), + Message.assistant([ToolCallPart.make({ id: "call_1", name: "lookup", input: { query: "weather" } })]), + Message.tool({ id: "call_1", name: "lookup", result: { forecast: "sunny" } }), + ], + cache: "none", + }), + ) + + expect(prepared.body).toEqual({ + model: "claude-sonnet-4-5", + messages: [ + { role: "user", content: [{ type: "text", text: "What is the weather?" }] }, + { + role: "assistant", + content: [{ type: "tool_use", id: "call_1", name: "lookup", input: { query: "weather" } }], + }, + { role: "user", content: [{ type: "tool_result", tool_use_id: "call_1", content: '{"forecast":"sunny"}' }] }, + ], + stream: true, + max_tokens: 4096, + }) + }), + ) + + it.effect("keeps tools and sends tool_choice none", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_choice_none", + model, + tools: [{ name: "lookup", description: "Look things up", inputSchema: { type: "object", properties: {} } }], + messages: [ + Message.user("What is the weather?"), + Message.assistant([ToolCallPart.make({ id: "call_1", name: "lookup", input: { query: "weather" } })]), + Message.tool({ id: "call_1", name: "lookup", result: { forecast: "sunny" } }), + ], + toolChoice: "none", + cache: "none", + }), + ) + + expect(prepared.body.tools).toEqual([ + { + name: "lookup", + description: "Look things up", + input_schema: { type: "object", properties: {} }, + }, + ]) + expect(prepared.body.tool_choice).toEqual({ type: "none" }) + }), + ) + + // Regression: read tool results must stay structured so base64 media data is + // not JSON-stringified into `tool_result.content`. + it.effect("lowers media tool-result content as structured blocks", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result_image", + model, + messages: [ + Message.user("Show me the screenshot."), + Message.assistant([ToolCallPart.make({ id: "call_1", name: "read", input: { filePath: "shot.png" } })]), + Message.tool({ + id: "call_1", + name: "read", + resultType: "content", + result: [ + { type: "text", text: "Image read successfully" }, + { type: "file", uri: "data:image/png;base64,AAECAw==", mime: "image/png" }, + { type: "file", uri: "data:application/pdf;base64,JVBERi0xLjQ=", mime: "application/pdf" }, + ], + }), + ], + cache: "none", + }), + ) + + expect(expectToolResult(prepared.body).content).toEqual([ + { type: "text", text: "Image read successfully" }, + { type: "image", source: { type: "base64", media_type: "image/png", data: "AAECAw==" } }, + { type: "document", source: { type: "base64", media_type: "application/pdf", data: "JVBERi0xLjQ=" } }, + ]) + }), + ) + + it.effect("lowers single-image tool-result content as a structured image block", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result_image_only", + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "screenshot", input: {} })]), + Message.tool({ + id: "call_1", + name: "screenshot", + resultType: "content", + result: [{ type: "file", uri: "data:image/jpeg;base64,/9j/AA==", mime: "image/jpeg" }], + }), + ], + cache: "none", + }), + ) + + expect(expectToolResult(prepared.body).content).toEqual([ + { type: "image", source: { type: "base64", media_type: "image/jpeg", data: "/9j/AA==" } }, + ]) + }), + ) + + it.effect("rejects unsupported media in tool-result content with a clear error", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result_unsupported_media", + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "fetch", input: {} })]), + Message.tool({ + id: "call_1", + name: "fetch", + resultType: "content", + result: [{ type: "file", uri: "data:audio/mpeg;base64,AAECAw==", mime: "audio/mpeg" }], + }), + ], + cache: "none", + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("Anthropic Messages") + expect(error.message).toContain("audio/mpeg") + }), + ) + + it.effect("prepares the composed native continuation request", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + continuationRequest({ + id: "req_native_continuation_anthropic", + model, + features: nativeAnthropicMessagesContinuation, + }), + ) + + expect(prepared.body).toMatchObject({ + system: [{ type: "text", text: "You are concise. Continue from the provided history." }], + messages: [ + { + role: "user", + content: [ + { type: "text", text: "What is shown here?" }, + { type: "image", source: { type: "base64", media_type: "image/png", data: "AAECAw==" } }, + ], + }, + { + role: "assistant", + content: [ + { type: "thinking", thinking: "I inspected the previous turn.", signature: "sig_continuation_1" }, + { type: "text", text: "It shows a small test image." }, + ], + }, + { role: "user", content: [{ type: "text", text: "Check the weather in Paris before continuing." }] }, + { + role: "assistant", + content: [{ type: "tool_use", id: "call_weather_1", name: "get_weather", input: { city: "Paris" } }], + }, + { + role: "user", + content: [{ type: "tool_result", tool_use_id: "call_weather_1", content: '{"temperature":22}' }], + }, + { role: "assistant", content: [{ type: "text", text: "Paris is 22 degrees." }] }, + { role: "user", content: [{ type: "text", text: "Continue from this conversation in one short sentence." }] }, + ], + }) + expect(prepared.body.tools).toEqual([expect.objectContaining({ name: "get_weather" })]) + }), + ) + + it.effect("lowers preserved Anthropic reasoning signature metadata", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ + { type: "reasoning", text: "thinking", providerMetadata: { anthropic: { signature: "sig_1" } } }, + ]), + ], + }), + ) + + expect(prepared.body).toMatchObject({ + messages: [{ role: "assistant", content: [{ type: "thinking", thinking: "thinking", signature: "sig_1" }] }], + }) + }), + ) + + it.effect("round-trips redacted thinking as redacted_thinking blocks", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ + { type: "reasoning", text: "", providerMetadata: { anthropic: { redactedData: "opaque_1" } } }, + { type: "reasoning", text: "visible", providerMetadata: { anthropic: { signature: "sig_1" } } }, + ]), + ], + }), + ) + + expect(prepared.body).toMatchObject({ + messages: [ + { + role: "assistant", + content: [ + { type: "redacted_thinking", data: "opaque_1" }, + { type: "thinking", thinking: "visible", signature: "sig_1" }, + ], + }, + ], + }) + }), + ) + + it.effect("parses text, reasoning, and usage stream fixtures", () => + Effect.gen(function* () { + const body = sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5, cache_read_input_tokens: 1 } } }, + { type: "content_block_start", index: 0, content_block: { type: "text", text: "" } }, + { type: "content_block_delta", index: 0, delta: { type: "text_delta", text: "Hello" } }, + { type: "content_block_delta", index: 0, delta: { type: "text_delta", text: "!" } }, + { type: "content_block_stop", index: 0 }, + { type: "content_block_start", index: 1, content_block: { type: "thinking", thinking: "" } }, + { type: "content_block_delta", index: 1, delta: { type: "thinking_delta", thinking: "thinking" } }, + { type: "content_block_delta", index: 1, delta: { type: "signature_delta", signature: "sig_1" } }, + { type: "content_block_stop", index: 1 }, + { + type: "message_delta", + delta: { stop_reason: "end_turn", stop_sequence: "\n\nHuman:" }, + usage: { output_tokens: 2 }, + }, + { type: "message_stop" }, + ) + const response = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body))) + + expect(response.text).toBe("Hello!") + expect(response.reasoning).toBe("thinking") + expect(response.usage).toMatchObject({ + inputTokens: 6, + outputTokens: 2, + nonCachedInputTokens: 5, + cacheReadInputTokens: 1, + totalTokens: 8, + }) + expect(response.events.find((event) => event.type === "reasoning-end")).toMatchObject({ + providerMetadata: { anthropic: { signature: "sig_1" } }, + }) + expect(response.events.find((event) => event.type === "reasoning-delta" && event.text === "")).toBeUndefined() + expect(response.message.content).toEqual([ + { type: "text", text: "Hello!" }, + { type: "reasoning", text: "thinking", providerMetadata: { anthropic: { signature: "sig_1" } } }, + ]) + expect(response.events.at(-1)).toMatchObject({ + type: "finish", + reason: { normalized: "stop", raw: "end_turn" }, + providerMetadata: { anthropic: { stopSequence: "\n\nHuman:" } }, + }) + }), + ) + + it.effect("requires message_stop before completing a streamed message", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { type: "content_block_start", index: 0, content_block: { type: "text", text: "" } }, + { type: "content_block_delta", index: 0, delta: { type: "text_delta", text: "Hello" } }, + { type: "content_block_stop", index: 0 }, + { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 1 } }, + ), + ), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ + _tag: "InvalidProviderOutput", + message: "Provider stream ended without a terminal finish event", + }) + }), + ) + + it.effect("maps thinking tokens and preserves unknown Anthropic usage fields", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { + type: "message_start", + message: { + usage: { + input_tokens: 5, + cache_read_input_tokens: 2, + service_tier: "standard", + cache_creation: { ephemeral_5m_input_tokens: 1 }, + server_tool_use: { web_search_requests: 1, start_counter: 2 }, + output_tokens_details: { thinking_tokens: 3, start_detail: "preserved" }, + }, + }, + }, + { + type: "message_delta", + delta: { stop_reason: "end_turn" }, + usage: { + output_tokens: 8, + server_tool_use: { web_search_requests: 2, terminal_counter: 3 }, + output_tokens_details: { terminal_detail: "preserved" }, + future_terminal: { requests: 4 }, + }, + }, + { type: "message_stop" }, + ), + ), + ), + ) + + expect(response.usage).toMatchObject({ + inputTokens: 7, + outputTokens: 8, + reasoningTokens: 3, + totalTokens: 15, + providerMetadata: { + anthropic: { + input_tokens: 5, + cache_read_input_tokens: 2, + service_tier: "standard", + cache_creation: { ephemeral_5m_input_tokens: 1 }, + server_tool_use: { web_search_requests: 2, start_counter: 2, terminal_counter: 3 }, + output_tokens: 8, + output_tokens_details: { + thinking_tokens: 3, + start_detail: "preserved", + terminal_detail: "preserved", + }, + future_terminal: { requests: 4 }, + }, + }, + }) + }), + ) + + it.effect("round-trips omitted thinking carried only by a signature delta", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { + type: "content_block_start", + index: 0, + content_block: { type: "thinking", thinking: "", signature: "" }, + }, + { type: "content_block_delta", index: 0, delta: { type: "signature_delta", signature: "sig_1" } }, + { type: "content_block_stop", index: 0 }, + { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 1 } }, + { type: "message_stop" }, + ), + ), + ), + ) + + expect(response.message.content).toEqual([ + { type: "reasoning", text: "", providerMetadata: { anthropic: { signature: "sig_1" } } }, + ]) + + const prepared = yield* LLMClient.prepare( + LLM.request({ model, messages: [response.message], cache: "none" }), + ) + expect(prepared.body.messages).toEqual([ + { role: "assistant", content: [{ type: "thinking", thinking: "", signature: "sig_1" }] }, + ]) + }), + ) + + it.effect("retains a thinking signature supplied in content_block_start", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { + type: "content_block_start", + index: 0, + content_block: { type: "thinking", thinking: "", signature: "sig_1" }, + }, + { type: "content_block_stop", index: 0 }, + { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 1 } }, + { type: "message_stop" }, + ), + ), + ), + ) + + expect(response.message.content).toEqual([ + { type: "reasoning", text: "", providerMetadata: { anthropic: { signature: "sig_1" } } }, + ]) + expect(response.events.find((event) => event.type === "reasoning-end")).toMatchObject({ + providerMetadata: { anthropic: { signature: "sig_1" } }, + }) + }), + ) + + it.effect("retains complete tool input from content_block_start", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { + type: "content_block_start", + index: 0, + content_block: { type: "tool_use", id: "call_1", name: "lookup", input: { query: "weather" } }, + }, + { type: "content_block_stop", index: 0 }, + { type: "message_delta", delta: { stop_reason: "tool_use" }, usage: { output_tokens: 1 } }, + { type: "message_stop" }, + ), + ), + ), + ) + + expect(response.toolCalls).toMatchObject([ + { id: "call_1", name: "lookup", input: { query: "weather" } }, + ]) + }), + ) + + it.effect("retains empty text blocks", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { type: "content_block_start", index: 0, content_block: { type: "text", text: "" } }, + { type: "content_block_stop", index: 0 }, + { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 1 } }, + { type: "message_stop" }, + ), + ), + ), + ) + + expect(response.message.content).toEqual([{ type: "text", text: "" }]) + }), + ) + + it.effect("parses redacted thinking into empty reasoning with redactedData metadata", () => + Effect.gen(function* () { + const body = sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { type: "content_block_start", index: 0, content_block: { type: "redacted_thinking", data: "opaque_1" } }, + { type: "content_block_stop", index: 0 }, + { type: "content_block_start", index: 1, content_block: { type: "text", text: "" } }, + { type: "content_block_delta", index: 1, delta: { type: "text_delta", text: "Hello" } }, + { type: "content_block_stop", index: 1 }, + { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 2 } }, + { type: "message_stop" }, + ) + const response = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body))) + + expect(response.events.find((event) => event.type === "reasoning-start")).toMatchObject({ + providerMetadata: { anthropic: { redactedData: "opaque_1" } }, + }) + expect(response.message.content).toEqual([ + { type: "reasoning", text: "", providerMetadata: { anthropic: { redactedData: "opaque_1" } } }, + { type: "text", text: "Hello" }, + ]) + }), + ) + + it.effect("round-trips streamed redacted thinking with tool use into a continuation request", () => + Effect.gen(function* () { + // Anthropic types `redacted_thinking.data` as an opaque string. Its + // contents are provider-owned and must be replayed without inspection. + const redactedData = "cmVkYWN0ZWQtdGhpbmtpbmc=" + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { + type: "content_block_start", + index: 0, + content_block: { type: "redacted_thinking", data: redactedData }, + }, + { type: "content_block_stop", index: 0 }, + { + type: "content_block_start", + index: 1, + content_block: { type: "tool_use", id: "call_1", name: "lookup" }, + }, + { + type: "content_block_delta", + index: 1, + delta: { type: "input_json_delta", partial_json: '{"query":"weather"}' }, + }, + { type: "content_block_stop", index: 1 }, + { type: "message_delta", delta: { stop_reason: "tool_use" }, usage: { output_tokens: 1 } }, + { type: "message_stop" }, + ), + ), + ), + ) + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.user("Say hello."), + response.message, + Message.tool({ id: "call_1", name: "lookup", result: "sunny", resultType: "text" }), + ], + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + cache: "none", + }), + ) + + expect(prepared.body.messages).toEqual([ + { role: "user", content: [{ type: "text", text: "Say hello." }] }, + { + role: "assistant", + content: [ + { type: "redacted_thinking", data: redactedData }, + { type: "tool_use", id: "call_1", name: "lookup", input: { query: "weather" } }, + ], + }, + { + role: "user", + content: [ + { + type: "tool_result", + tool_use_id: "call_1", + content: "sunny", + is_error: undefined, + cache_control: undefined, + }, + ], + }, + ]) + }), + ) + + it.effect("maps context-window truncation to length", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { + type: "message_delta", + delta: { stop_reason: "model_context_window_exceeded" }, + usage: { output_tokens: 1 }, + }, + { type: "message_stop" }, + ), + ), + ), + ) + + expect(response.finishReason).toEqual({ normalized: "length", raw: "model_context_window_exceeded" }) + }), + ) + + it.effect("preserves pause_turn while normalizing it to stop", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { type: "message_delta", delta: { stop_reason: "pause_turn" }, usage: { output_tokens: 1 } }, + { type: "message_stop" }, + ), + ), + ), + ) + + expect(response.finishReason).toEqual({ normalized: "stop", raw: "pause_turn" }) + }), + ) + + it.effect("assembles streamed tool call input", () => + Effect.gen(function* () { + const body = sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { type: "content_block_start", index: 0, content_block: { type: "tool_use", id: "call_1", name: "lookup" } }, + { type: "content_block_delta", index: 0, delta: { type: "input_json_delta", partial_json: '{"query"' } }, + { type: "content_block_delta", index: 0, delta: { type: "input_json_delta", partial_json: ':"weather"}' } }, + { type: "content_block_stop", index: 0 }, + { type: "message_delta", delta: { stop_reason: "tool_use" }, usage: { output_tokens: 1 } }, + { type: "message_stop" }, + ) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedResponse(body))) + const usage = new Usage({ + inputTokens: 5, + outputTokens: 1, + nonCachedInputTokens: 5, + cacheReadInputTokens: undefined, + cacheWriteInputTokens: undefined, + totalTokens: 6, + providerMetadata: { anthropic: { input_tokens: 5, output_tokens: 1 } }, + }) + + expect(response.toolCalls).toEqual([ + { + type: "tool-call", + id: "call_1", + name: "lookup", + input: { query: "weather" }, + providerExecuted: undefined, + providerMetadata: undefined, + }, + ]) + expect(response.events).toEqual([ + { type: "step-start", index: 0 }, + { type: "tool-input-start", id: "call_1", name: "lookup" }, + { type: "tool-input-delta", id: "call_1", name: "lookup", text: '{"query"' }, + { type: "tool-input-delta", id: "call_1", name: "lookup", text: ':"weather"}' }, + { type: "tool-input-end", id: "call_1", name: "lookup", providerMetadata: undefined }, + { + type: "tool-call", + id: "call_1", + name: "lookup", + input: { query: "weather" }, + providerExecuted: undefined, + providerMetadata: undefined, + }, + { + type: "step-finish", + index: 0, + reason: { normalized: "tool-calls", raw: "tool_use" }, + usage, + providerMetadata: undefined, + }, + { + type: "finish", + reason: { normalized: "tool-calls", raw: "tool_use" }, + providerMetadata: undefined, + usage, + }, + ]) + }), + ) + + it.effect("keeps malformed server tool input terminal", () => + Effect.gen(function* () { + const body = sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { + type: "content_block_start", + index: 0, + content_block: { type: "server_tool_use", id: "call_1", name: "web_search" }, + }, + { + type: "content_block_delta", + index: 0, + delta: { type: "input_json_delta", partial_json: '{"query":"partial' }, + }, + { type: "content_block_stop", index: 0 }, + ) + + const error = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body)), Effect.flip) + + expect(error).toBeInstanceOf(LLMError) + expect(error.message).toContain("Invalid JSON input for anthropic-messages tool call web_search") + }), + ) + + it.effect("fails with a typed provider error for stream error frames", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse(sseEvents({ type: "error", error: { type: "overloaded_error", message: "Overloaded" } })), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "ProviderInternal", message: "overloaded_error: Overloaded" }) + }), + ) + + it.effect("classifies prompt-too-long provider errors", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents({ + type: "error", + error: { type: "invalid_request_error", message: "prompt is too long: 210000 tokens" }, + }), + ), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ + _tag: "InvalidRequest", + message: "invalid_request_error: prompt is too long: 210000 tokens", + classification: "context-overflow", + }) + }), + ) + + it.effect("falls back to error type when no message is present", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide(fixedResponse(sseEvents({ type: "error", error: { type: "overloaded_error", message: "" } }))), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "ProviderInternal", message: "overloaded_error" }) + }), + ) + + it.effect("falls back to a stable default when error payload is absent", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide(fixedResponse(sseEvents({ type: "error" }))), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "UnknownProvider", message: "Anthropic Messages stream error" }) + }), + ) + + it.effect("fails HTTP provider errors before stream parsing", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse('{"type":"error","error":{"type":"invalid_request_error","message":"Bad request"}}', { + status: 400, + headers: { "content-type": "application/json" }, + }), + ), + Effect.flip, + ) + + expect(error).toBeInstanceOf(LLMError) + expect(error.reason).toMatchObject({ _tag: "InvalidRequest" }) + expect(error.message).toContain("HTTP 400") + }), + ) + + it.effect("decodes server_tool_use + web_search_tool_result as provider-executed events", () => + Effect.gen(function* () { + const body = sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { + type: "content_block_start", + index: 0, + content_block: { type: "server_tool_use", id: "srvtoolu_abc", name: "web_search" }, + }, + { + type: "content_block_delta", + index: 0, + delta: { type: "input_json_delta", partial_json: '{"query":"effect 4"}' }, + }, + { type: "content_block_stop", index: 0 }, + { + type: "content_block_start", + index: 1, + content_block: { + type: "web_search_tool_result", + tool_use_id: "srvtoolu_abc", + content: [{ type: "web_search_result", url: "https://example.com", title: "Example" }], + }, + }, + { type: "content_block_stop", index: 1 }, + { type: "content_block_start", index: 2, content_block: { type: "text", text: "" } }, + { type: "content_block_delta", index: 2, delta: { type: "text_delta", text: "Found it." } }, + { type: "content_block_stop", index: 2 }, + { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 8 } }, + { type: "message_stop" }, + ) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ + ToolDefinition.make({ name: "web_search", description: "Web search", inputSchema: { type: "object" } }), + ], + }), + ).pipe(Effect.provide(fixedResponse(body))) + + const toolCall = response.events.find((event) => event.type === "tool-call") + expect(toolCall).toEqual({ + type: "tool-call", + id: "srvtoolu_abc", + name: "web_search", + input: { query: "effect 4" }, + providerExecuted: true, + }) + const toolResult = response.events.find((event) => event.type === "tool-result") + expect(toolResult).toEqual({ + type: "tool-result", + id: "srvtoolu_abc", + name: "web_search", + result: { type: "json", value: [{ type: "web_search_result", url: "https://example.com", title: "Example" }] }, + providerExecuted: true, + // The complete payload rides in provider metadata as irreducible replay + // state for later stateless requests. + providerMetadata: { + anthropic: { + blockType: "web_search_tool_result", + result: [{ type: "web_search_result", url: "https://example.com", title: "Example" }], + }, + }, + }) + expect(response.text).toBe("Found it.") + expect(response.events.at(-1)).toMatchObject({ + type: "finish", + reason: { normalized: "stop", raw: "end_turn" }, + }) + }), + ) + + it.effect("decodes web_search_tool_result_error as provider-executed error result", () => + Effect.gen(function* () { + const body = sseEvents( + { type: "message_start", message: { usage: { input_tokens: 5 } } }, + { + type: "content_block_start", + index: 0, + content_block: { type: "server_tool_use", id: "srvtoolu_x", name: "web_search" }, + }, + { type: "content_block_delta", index: 0, delta: { type: "input_json_delta", partial_json: '{"query":"q"}' } }, + { type: "content_block_stop", index: 0 }, + { + type: "content_block_start", + index: 1, + content_block: { + type: "web_search_tool_result", + tool_use_id: "srvtoolu_x", + content: { type: "web_search_tool_result_error", error_code: "max_uses_exceeded" }, + }, + }, + { type: "content_block_stop", index: 1 }, + { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 1 } }, + { type: "message_stop" }, + ) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ + ToolDefinition.make({ name: "web_search", description: "Web search", inputSchema: { type: "object" } }), + ], + }), + ).pipe(Effect.provide(fixedResponse(body))) + + const toolResult = response.events.find((event) => event.type === "tool-result") + expect(toolResult).toMatchObject({ + type: "tool-result", + id: "srvtoolu_x", + name: "web_search", + result: { type: "error" }, + providerExecuted: true, + }) + }), + ) + + it.effect("round-trips provider-executed assistant content into server tool blocks", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_round_trip", + model, + messages: [ + Message.user("Search for something."), + Message.assistant([ + { + type: "tool-call", + id: "srvtoolu_abc", + name: "web_search", + input: { query: "effect 4" }, + providerExecuted: true, + }, + { + type: "tool-result", + id: "srvtoolu_abc", + name: "web_search", + result: { type: "json", value: [{ url: "https://example.com" }] }, + providerExecuted: true, + }, + { type: "text", text: "Found it." }, + ]), + Message.user("Thanks."), + ], + }), + ) + + expect(prepared.body).toMatchObject({ + messages: [ + { role: "user", content: [{ type: "text", text: "Search for something." }] }, + { + role: "assistant", + content: [ + { type: "server_tool_use", id: "srvtoolu_abc", name: "web_search", input: { query: "effect 4" } }, + { + type: "web_search_tool_result", + tool_use_id: "srvtoolu_abc", + content: [{ url: "https://example.com" }], + }, + { type: "text", text: "Found it." }, + ], + }, + { role: "user", content: [{ type: "text", text: "Thanks." }] }, + ], + }) + }), + ) + + it.effect("rejects round-trip for unknown server tool names", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + id: "req_unknown_server_tool", + model, + messages: [ + Message.assistant([ + { + type: "tool-result", + id: "srvtoolu_abc", + name: "future_server_tool", + result: { type: "json", value: {} }, + providerExecuted: true, + }, + ]), + ], + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("future_server_tool") + }), + ) + + it.effect("continues a conversation with user media content", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLM.request({ + id: "req_media", + model, + messages: [ + Message.user([ + { type: "text", text: "What is in this image?" }, + { type: "media", mediaType: "image/png", data: "AAECAw==" }, + { type: "media", mediaType: "application/pdf", data: "JVBERi0xLjQ=", filename: "report.pdf" }, + ]), + ], + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(yield* Effect.promise(() => web.json())).toMatchObject({ + messages: [ + { + role: "user", + content: [ + { type: "text", text: "What is in this image?" }, + { type: "image", source: { type: "base64", media_type: "image/png", data: "AAECAw==" } }, + { + type: "document", + source: { type: "base64", media_type: "application/pdf", data: "JVBERi0xLjQ=" }, + }, + ], + }, + ], + }) + return input.respond( + sseEvents( + { type: "content_block_start", index: 0, content_block: { type: "text", text: "" } }, + { type: "content_block_delta", index: 0, delta: { type: "text_delta", text: "An image." } }, + { type: "content_block_stop", index: 0 }, + { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 3 } }, + { type: "message_stop" }, + ), + { headers: { "content-type": "text/event-stream" } }, + ) + }), + ), + ), + ) + + expect(response.text).toBe("An image.") + }), + ) + + it.effect("maps ttlSeconds >= 3600 to cache_control ttl: '1h'", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + system: { type: "text", text: "system", cache: new CacheHint({ type: "ephemeral", ttlSeconds: 3600 }) }, + prompt: "hi", + }), + ) + + expect(prepared.body).toMatchObject({ + system: [{ type: "text", text: "system", cache_control: { type: "ephemeral", ttl: "1h" } }], + }) + }), + ) + + it.effect("emits cache_control on tool definitions and tool-result blocks", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + tools: [ + { + name: "lookup", + description: "lookup tool", + inputSchema: { type: "object", properties: {} }, + cache: new CacheHint({ type: "ephemeral" }), + }, + ], + messages: [ + Message.user("What's the weather?"), + Message.assistant([ToolCallPart.make({ id: "call_1", name: "lookup", input: {} })]), + Message.tool({ + id: "call_1", + name: "lookup", + result: { temp: 72 }, + cache: new CacheHint({ type: "ephemeral" }), + }), + ], + }), + ) + + expect(prepared.body).toMatchObject({ + tools: [{ name: "lookup", cache_control: { type: "ephemeral" } }], + messages: [ + { role: "user", content: [{ type: "text", text: "What's the weather?" }] }, + { role: "assistant", content: [{ type: "tool_use", id: "call_1", name: "lookup" }] }, + { + role: "user", + content: [{ type: "tool_result", tool_use_id: "call_1", cache_control: { type: "ephemeral" } }], + }, + ], + }) + }), + ) + + it.effect("drops cache_control breakpoints past the 4-per-request cap", () => + Effect.gen(function* () { + const hint = new CacheHint({ type: "ephemeral" }) + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + system: [ + { type: "text", text: "a", cache: hint }, + { type: "text", text: "b", cache: hint }, + { type: "text", text: "c", cache: hint }, + { type: "text", text: "d", cache: hint }, + { type: "text", text: "e", cache: hint }, + { type: "text", text: "f", cache: hint }, + ], + prompt: "hi", + }), + ) + + const system = (prepared.body as { system: Array<{ cache_control?: unknown }> }).system + const marked = system.filter((part) => part.cache_control !== undefined) + expect(marked).toHaveLength(4) + expect(system[4]?.cache_control).toBeUndefined() + expect(system[5]?.cache_control).toBeUndefined() + }), + ) + + it.effect("spends breakpoint budget on tools before system before messages", () => + Effect.gen(function* () { + const hint = new CacheHint({ type: "ephemeral" }) + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + tools: [ + { + name: "t1", + description: "t1", + inputSchema: { type: "object", properties: {} }, + cache: hint, + }, + { + name: "t2", + description: "t2", + inputSchema: { type: "object", properties: {} }, + cache: hint, + }, + { + name: "t3", + description: "t3", + inputSchema: { type: "object", properties: {} }, + cache: hint, + }, + { + name: "t4", + description: "t4", + inputSchema: { type: "object", properties: {} }, + cache: hint, + }, + ], + system: [{ type: "text", text: "system-tail", cache: hint }], + messages: [Message.user([{ type: "text", text: "message-tail", cache: hint }])], + }), + ) + + const body = prepared.body as { + tools: Array<{ cache_control?: unknown }> + system: Array<{ cache_control?: unknown }> + messages: Array<{ content: Array<{ cache_control?: unknown }> }> + } + expect(body.tools.every((t) => t.cache_control !== undefined)).toBe(true) + expect(body.system[0]?.cache_control).toBeUndefined() + expect(body.messages[0]?.content[0]?.cache_control).toBeUndefined() + }), + ) +}) diff --git a/packages/llm/test/provider/bedrock-converse-cache.recorded.test.ts b/packages/ai/test/provider/bedrock-converse-cache.recorded.test.ts similarity index 75% rename from packages/llm/test/provider/bedrock-converse-cache.recorded.test.ts rename to packages/ai/test/provider/bedrock-converse-cache.recorded.test.ts index 8702e4eb4034..8209ab1121af 100644 --- a/packages/llm/test/provider/bedrock-converse-cache.recorded.test.ts +++ b/packages/ai/test/provider/bedrock-converse-cache.recorded.test.ts @@ -13,12 +13,8 @@ const RECORDING_REGION = process.env.BEDROCK_RECORDING_REGION ?? "us-east-1" // call wouldn't deterministically prove cache mapping works. Override with // BEDROCK_CACHE_MODEL_ID if your account has access elsewhere. const model = AmazonBedrock.configure({ - credentials: { - region: RECORDING_REGION, - accessKeyId: process.env.AWS_ACCESS_KEY_ID ?? "fixture", - secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY ?? "fixture", - sessionToken: process.env.AWS_SESSION_TOKEN, - }, + apiKey: process.env.AWS_BEARER_TOKEN_BEDROCK ?? "fixture", + region: RECORDING_REGION, }).model(process.env.BEDROCK_CACHE_MODEL_ID ?? "us.anthropic.claude-haiku-4-5-20251001-v1:0") const cacheRequest = LLM.request({ @@ -36,7 +32,7 @@ const recorded = recordedTests({ prefix: "bedrock-converse-cache", provider: "amazon-bedrock", protocol: "bedrock-converse", - requires: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"], + requires: ["AWS_BEARER_TOKEN_BEDROCK"], // Two identical requests in one cassette — replay walks the cassette in // recording order so the second call replays the cached-hit interaction. }) @@ -45,10 +41,20 @@ describe("Bedrock Converse cache recorded", () => { recorded.effect.with("writes then reads cachePoint on identical second call", { tags: ["cache"] }, () => Effect.gen(function* () { const first = yield* LLMClient.generate(cacheRequest) - expect(first.usage?.cacheReadInputTokens ?? 0).toBeGreaterThanOrEqual(0) + expect(first.usage?.cacheWriteInputTokens ?? 0).toBeGreaterThan(0) + expect(first.usage?.inputTokens).toBe( + (first.usage?.nonCachedInputTokens ?? 0) + + (first.usage?.cacheReadInputTokens ?? 0) + + (first.usage?.cacheWriteInputTokens ?? 0), + ) const second = yield* LLMClient.generate(cacheRequest) expect(second.usage?.cacheReadInputTokens ?? 0).toBeGreaterThan(0) + expect(second.usage?.inputTokens).toBe( + (second.usage?.nonCachedInputTokens ?? 0) + + (second.usage?.cacheReadInputTokens ?? 0) + + (second.usage?.cacheWriteInputTokens ?? 0), + ) }), ) }) diff --git a/packages/ai/test/provider/bedrock-converse.test.ts b/packages/ai/test/provider/bedrock-converse.test.ts new file mode 100644 index 000000000000..5cc8af1378a7 --- /dev/null +++ b/packages/ai/test/provider/bedrock-converse.test.ts @@ -0,0 +1,1178 @@ +import { EventStreamCodec } from "@smithy/eventstream-codec" +import { fromUtf8, toUtf8 } from "@smithy/util-utf8" +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { + CacheHint, + GenerationOptions, + LLM, + LLMRequest, + Message, + ToolCallPart, + ToolChoice, + ToolDefinition, +} from "../../src" +import { LLMClient } from "../../src/route" +import { AmazonBedrock } from "../../src/providers" +import * as BedrockConverse from "../../src/protocols/bedrock-converse" +import { it } from "../lib/effect" +import { fixedResponse } from "../lib/http" +import { + eventSummary, + expectWeatherToolLoop, + runWeatherToolLoop, + weatherTool, + weatherToolLoopRequest, + weatherToolName, +} from "../recorded-scenarios" +import { recordedTests } from "../recorded-test" + +const codec = new EventStreamCodec(toUtf8, fromUtf8) +const utf8Encoder = new TextEncoder() + +// Build a single AWS event-stream frame for a Converse stream event. Each +// frame carries `:message-type=event` + `:event-type=` headers and a +// JSON payload body. +const eventFrame = (type: string, payload: object) => + codec.encode({ + headers: { + ":message-type": { type: "string", value: "event" }, + ":event-type": { type: "string", value: type }, + ":content-type": { type: "string", value: "application/json" }, + }, + body: utf8Encoder.encode(JSON.stringify(payload)), + }) + +const exceptionFrame = (type: string, payload: object) => + codec.encode({ + headers: { + ":message-type": { type: "string", value: "exception" }, + ":exception-type": { type: "string", value: type }, + ":content-type": { type: "string", value: "application/json" }, + }, + body: utf8Encoder.encode(JSON.stringify(payload)), + }) + +const errorFrame = (code: string, message: string) => + codec.encode({ + headers: { + ":message-type": { type: "string", value: "error" }, + ":error-code": { type: "string", value: code }, + ":error-message": { type: "string", value: message }, + }, + body: new Uint8Array(), + }) + +const concat = (frames: ReadonlyArray) => { + const total = frames.reduce((sum, frame) => sum + frame.length, 0) + const out = new Uint8Array(total) + let offset = 0 + for (const frame of frames) { + out.set(frame, offset) + offset += frame.length + } + return out +} + +const eventStreamBody = (...payloads: ReadonlyArray) => + concat(payloads.map(([type, payload]) => eventFrame(type, payload))) + +// Override the default SSE content-type with the binary event-stream type so +// the cassette layer treats the body as bytes when recording. +const fixedBytes = (bytes: Uint8Array) => + fixedResponse(bytes.slice().buffer, { headers: { "content-type": "application/vnd.amazon.eventstream" } }) + +const model = AmazonBedrock.configure({ + baseURL: "https://bedrock-runtime.test", + apiKey: "test-bearer", +}).model("anthropic.claude-3-5-sonnet-20240620-v1:0") + +const baseRequest = LLM.request({ + id: "req_1", + model, + system: "You are concise.", + prompt: "Say hello.", + // Wire-shape assertions in this file predate the `cache: "auto"` default; + // pin the policy off so they only exercise the lowering path itself. + cache: "none", + generation: { maxTokens: 64, temperature: 0 }, +}) + +describe("Bedrock Converse route", () => { + it.effect("prepares Converse target with system, inference config, and messages", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare(baseRequest) + + expect(prepared.body).toEqual({ + modelId: "anthropic.claude-3-5-sonnet-20240620-v1:0", + system: [{ text: "You are concise." }], + messages: [{ role: "user", content: [{ text: "Say hello." }] }], + inferenceConfig: { maxTokens: 64, temperature: 0 }, + }) + }), + ) + + it.effect("passes topK through additionalModelRequestFields as top_k", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLMRequest.update(baseRequest, { + generation: GenerationOptions.make({ maxTokens: 64, temperature: 0, topK: 40 }), + }), + ) + + // Converse's inferenceConfig has no topK; Anthropic/Nova read it from + // additionalModelRequestFields as top_k. + expect(prepared.body.inferenceConfig).toEqual({ maxTokens: 64, temperature: 0 }) + expect(prepared.body.additionalModelRequestFields).toEqual({ top_k: 40 }) + }), + ) + + it.effect("omits additionalModelRequestFields when topK is unset", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare(baseRequest) + expect(prepared.body.additionalModelRequestFields).toBeUndefined() + }), + ) + + it.effect("lowers chronological system updates to wrapped user text in order", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [Message.user("Before."), Message.system("Update."), Message.assistant("After.")], + cache: "none", + }), + ) + + expect(prepared.body.messages).toEqual([ + { role: "user", content: [{ text: "Before." }, { text: "\nUpdate.\n" }] }, + { role: "assistant", content: [{ text: "After." }] }, + ]) + }), + ) + + it.effect("prepares tool config with toolSpec and toolChoice", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLMRequest.update(baseRequest, { + tools: [ + ToolDefinition.make({ + name: "lookup", + description: "Lookup data", + inputSchema: { type: "object", properties: { query: { type: "string" } }, required: ["query"] }, + }), + ], + toolChoice: ToolChoice.make({ type: "required" }), + }), + ) + + expect(prepared.body).toMatchObject({ + toolConfig: { + tools: [ + { + toolSpec: { + name: "lookup", + description: "Lookup data", + inputSchema: { + json: { type: "object", properties: { query: { type: "string" } }, required: ["query"] }, + }, + }, + }, + ], + toolChoice: { any: {} }, + }, + }) + }), + ) + + it.effect("keeps tools and omits the unsupported choice when tool choice is none", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLMRequest.update(baseRequest, { + tools: [ + ToolDefinition.make({ + name: "lookup", + description: "Lookup data", + inputSchema: { type: "object", properties: { query: { type: "string" } } }, + }), + ], + toolChoice: ToolChoice.make({ type: "none" }), + }), + ) + + expect(prepared.body.toolConfig).toMatchObject({ + tools: [ + { + toolSpec: { + name: "lookup", + description: "Lookup data", + inputSchema: { json: { type: "object", properties: { query: { type: "string" } } } }, + }, + }, + ], + }) + expect(prepared.body.toolConfig?.toolChoice).toBeUndefined() + }), + ) + + it.effect("lowers assistant tool-call + tool-result message history", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_history", + model, + messages: [ + Message.user("What is the weather?"), + Message.assistant([ToolCallPart.make({ id: "tool_1", name: "lookup", input: { query: "weather" } })]), + Message.tool({ id: "tool_1", name: "lookup", result: { forecast: "sunny" } }), + ], + cache: "none", + }), + ) + + expect(prepared.body).toMatchObject({ + messages: [ + { role: "user", content: [{ text: "What is the weather?" }] }, + { + role: "assistant", + content: [{ toolUse: { toolUseId: "tool_1", name: "lookup", input: { query: "weather" } } }], + }, + { + role: "user", + content: [ + { + toolResult: { + toolUseId: "tool_1", + content: [{ json: { forecast: "sunny" } }], + status: "success", + }, + }, + ], + }, + ], + }) + }), + ) + + it.effect("lowers image content in tool-result messages", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_image", + model, + messages: [ + Message.user("Capture the screen."), + Message.assistant([ToolCallPart.make({ id: "tool_1", name: "screenshot", input: {} })]), + Message.tool({ + id: "tool_1", + name: "screenshot", + result: { + type: "content", + value: [ + { type: "text", text: "Screenshot captured." }, + { type: "file", uri: "data:image/png;base64,AAAA", mime: "image/png" }, + ], + }, + }), + ], + cache: "none", + }), + ) + + expect(prepared.body).toMatchObject({ + messages: [ + { role: "user", content: [{ text: "Capture the screen." }] }, + { + role: "assistant", + content: [{ toolUse: { toolUseId: "tool_1", name: "screenshot", input: {} } }], + }, + { + role: "user", + content: [ + { + toolResult: { + toolUseId: "tool_1", + content: [{ text: "Screenshot captured." }, { image: { format: "png", source: { bytes: "AAAA" } } }], + status: "success", + }, + }, + ], + }, + ], + }) + }), + ) + + it.effect("decodes text-delta + messageStop + metadata usage from binary event stream", () => + Effect.gen(function* () { + const body = eventStreamBody( + ["messageStart", { role: "assistant" }], + ["contentBlockDelta", { contentBlockIndex: 0, delta: { text: "Hello" } }], + ["contentBlockDelta", { contentBlockIndex: 0, delta: { text: "!" } }], + ["contentBlockStop", { contentBlockIndex: 0 }], + ["messageStop", { stopReason: "end_turn" }], + ["metadata", { usage: { inputTokens: 5, outputTokens: 2, totalTokens: 7 } }], + ) + const response = yield* LLMClient.generate(baseRequest).pipe(Effect.provide(fixedBytes(body))) + + expect(response.text).toBe("Hello!") + const finishes = response.events.filter((event) => event.type === "finish") + // Bedrock splits the finish across `messageStop` (carries reason) and + // `metadata` (carries usage). We consolidate them into a single + // terminal `finish` event with both. + expect(finishes).toHaveLength(1) + expect(finishes[0]).toMatchObject({ + type: "finish", + reason: { normalized: "stop", raw: "end_turn" }, + }) + expect(response.usage).toMatchObject({ + inputTokens: 5, + outputTokens: 2, + totalTokens: 7, + }) + }), + ) + + it.effect("maps truncation and malformed output stop reasons", () => + Effect.gen(function* () { + const reasons = [ + ["model_context_window_exceeded", "length"], + ["malformed_model_output", "error"], + ["malformed_tool_use", "error"], + ] as const + + for (const [raw, normalized] of reasons) { + const response = yield* LLMClient.generate(baseRequest).pipe( + Effect.provide(fixedBytes(eventStreamBody(["messageStop", { stopReason: raw }]))), + ) + expect(response.finishReason).toEqual({ normalized, raw }) + } + }), + ) + + it.effect("adds cache reads and writes to Bedrock input usage", () => + Effect.gen(function* () { + const body = eventStreamBody( + ["messageStart", { role: "assistant" }], + ["contentBlockDelta", { contentBlockIndex: 0, delta: { text: "Hello" } }], + ["contentBlockStop", { contentBlockIndex: 0 }], + ["messageStop", { stopReason: "end_turn" }], + [ + "metadata", + { + usage: { + inputTokens: 5, + outputTokens: 2, + totalTokens: 12, + cacheReadInputTokens: 3, + cacheWriteInputTokens: 2, + }, + }, + ], + ) + const response = yield* LLMClient.generate(baseRequest).pipe(Effect.provide(fixedBytes(body))) + + expect(response.usage).toMatchObject({ + inputTokens: 10, + nonCachedInputTokens: 5, + cacheReadInputTokens: 3, + cacheWriteInputTokens: 2, + outputTokens: 2, + totalTokens: 12, + }) + }), + ) + + it.effect("preserves usage across later metadata events without usage", () => + Effect.gen(function* () { + const body = eventStreamBody( + ["messageStop", { stopReason: "end_turn" }], + ["metadata", { usage: { inputTokens: 5, outputTokens: 2, totalTokens: 7 } }], + ["metadata", { metrics: { latencyMs: 100 } }], + ) + const response = yield* LLMClient.generate(baseRequest).pipe(Effect.provide(fixedBytes(body))) + + expect(response.usage).toMatchObject({ inputTokens: 5, outputTokens: 2, totalTokens: 7 }) + }), + ) + + it.effect("assembles streamed tool call input", () => + Effect.gen(function* () { + const body = eventStreamBody( + ["messageStart", { role: "assistant" }], + [ + "contentBlockStart", + { + contentBlockIndex: 0, + start: { toolUse: { toolUseId: "tool_1", name: "lookup" } }, + }, + ], + ["contentBlockDelta", { contentBlockIndex: 0, delta: { toolUse: { input: '{"query"' } } }], + ["contentBlockDelta", { contentBlockIndex: 0, delta: { toolUse: { input: ':"weather"}' } } }], + ["contentBlockStop", { contentBlockIndex: 0 }], + ["messageStop", { stopReason: "tool_use" }], + ) + const response = yield* LLMClient.generate( + LLMRequest.update(baseRequest, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedBytes(body))) + + expect(response.toolCalls).toEqual([ + { type: "tool-call", id: "tool_1", name: "lookup", input: { query: "weather" } }, + ]) + const events = response.events.filter((event) => event.type === "tool-input-delta") + expect(events).toEqual([ + { type: "tool-input-delta", id: "tool_1", name: "lookup", text: '{"query"' }, + { type: "tool-input-delta", id: "tool_1", name: "lookup", text: ':"weather"}' }, + ]) + expect(response.events.at(-1)).toMatchObject({ + type: "finish", + reason: { normalized: "tool-calls", raw: "tool_use" }, + }) + }), + ) + + it.effect("emits malformed tool input as an unexecuted tool error", () => + Effect.gen(function* () { + const body = eventStreamBody( + ["messageStart", { role: "assistant" }], + [ + "contentBlockStart", + { + contentBlockIndex: 0, + start: { toolUse: { toolUseId: "tool_1", name: "lookup" } }, + }, + ], + ["contentBlockDelta", { contentBlockIndex: 0, delta: { toolUse: { input: '{"query":"partial' } } }], + ["contentBlockStop", { contentBlockIndex: 0 }], + ["messageStop", { stopReason: "end_turn" }], + ) + const response = yield* LLMClient.generate(baseRequest).pipe(Effect.provide(fixedBytes(body))) + + expect(response.events.find((event) => event.type === "tool-input-error")).toMatchObject({ + id: "tool_1", + name: "lookup", + raw: '{"query":"partial', + }) + expect(response.finishReason).toEqual({ normalized: "tool-calls", raw: "end_turn" }) + }), + ) + + it.effect("decodes reasoning deltas", () => + Effect.gen(function* () { + const body = eventStreamBody( + ["messageStart", { role: "assistant" }], + ["contentBlockDelta", { contentBlockIndex: 0, delta: { reasoningContent: { text: "Let me think." } } }], + ["contentBlockStop", { contentBlockIndex: 0 }], + ["messageStop", { stopReason: "end_turn" }], + ) + const response = yield* LLMClient.generate(baseRequest).pipe(Effect.provide(fixedBytes(body))) + + expect(response.reasoning).toBe("Let me think.") + }), + ) + + it.effect("preserves streamed reasoning signatures for continuation lowering", () => + Effect.gen(function* () { + const body = eventStreamBody( + ["messageStart", { role: "assistant" }], + ["contentBlockDelta", { contentBlockIndex: 0, delta: { reasoningContent: { text: "Let me think." } } }], + ["contentBlockDelta", { contentBlockIndex: 0, delta: { reasoningContent: { signature: "sig_1" } } }], + ["contentBlockStop", { contentBlockIndex: 0 }], + ["messageStop", { stopReason: "end_turn" }], + ) + const response = yield* LLMClient.generate(baseRequest).pipe(Effect.provide(fixedBytes(body))) + const reasoning = response.events.find((event) => event.type === "reasoning-end") + + expect(reasoning).toEqual({ + type: "reasoning-end", + id: "reasoning-0", + providerMetadata: { bedrock: { signature: "sig_1" } }, + }) + + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ + { type: "reasoning", text: "Let me think.", providerMetadata: reasoning?.providerMetadata }, + ]), + ], + cache: "none", + }), + ) + expect(prepared.body.messages).toEqual([ + { + role: "assistant", + content: [{ reasoningContent: { reasoningText: { text: "Let me think.", signature: "sig_1" } } }], + }, + ]) + }), + ) + + it.effect("preserves reasoning signatures when contentBlockStop is missing", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(baseRequest).pipe( + Effect.provide( + fixedBytes( + eventStreamBody( + ["messageStart", { role: "assistant" }], + [ + "contentBlockDelta", + { contentBlockIndex: 0, delta: { reasoningContent: { text: "Let me think." } } }, + ], + [ + "contentBlockDelta", + { contentBlockIndex: 0, delta: { reasoningContent: { signature: "sig_1" } } }, + ], + ["messageStop", { stopReason: "end_turn" }], + ), + ), + ), + ) + + expect(response.events.find((event) => event.type === "reasoning-delta" && event.text === "")).toEqual({ + type: "reasoning-delta", + id: "reasoning-0", + text: "", + providerMetadata: { bedrock: { signature: "sig_1" } }, + }) + expect(response.message.content).toEqual([ + { + type: "reasoning", + text: "Let me think.", + providerMetadata: { bedrock: { signature: "sig_1" } }, + }, + ]) + + const prepared = yield* LLMClient.prepare( + LLM.request({ model, messages: [response.message], cache: "none" }), + ) + expect(prepared.body.messages).toEqual([ + { + role: "assistant", + content: [{ reasoningContent: { reasoningText: { text: "Let me think.", signature: "sig_1" } } }], + }, + ]) + }), + ) + + it.effect("preserves signature-only reasoning blocks", () => + Effect.gen(function* () { + const body = eventStreamBody( + ["messageStart", { role: "assistant" }], + [ + "contentBlockDelta", + { contentBlockIndex: 0, delta: { reasoningContent: { signature: "sig_1" } } }, + ], + ["contentBlockStop", { contentBlockIndex: 0 }], + ["messageStop", { stopReason: "end_turn" }], + ) + const response = yield* LLMClient.generate(baseRequest).pipe(Effect.provide(fixedBytes(body))) + + expect(response.message.content).toEqual([ + { type: "reasoning", text: "", providerMetadata: { bedrock: { signature: "sig_1" } } }, + ]) + }), + ) + + it.effect("accepts Vercel-compatible redacted reasoning data deltas", () => + Effect.gen(function* () { + const redactedData = "cmVkYWN0ZWQtdGhpbmtpbmc=" + const body = eventStreamBody( + ["messageStart", { role: "assistant" }], + ["contentBlockDelta", { contentBlockIndex: 0, delta: { reasoningContent: { data: redactedData } } }], + ["contentBlockStop", { contentBlockIndex: 0 }], + ["messageStop", { stopReason: "end_turn" }], + ) + const response = yield* LLMClient.generate(baseRequest).pipe(Effect.provide(fixedBytes(body))) + + expect(response.events.find((event) => event.type === "reasoning-delta" && event.text === "")).toEqual({ + type: "reasoning-delta", + id: "reasoning-0", + text: "", + providerMetadata: { bedrock: { redactedData } }, + }) + expect(response.message.content).toEqual([ + { type: "reasoning", text: "", providerMetadata: { bedrock: { redactedData } } }, + ]) + }), + ) + + it.effect("round-trips streamed redacted reasoning with tool use into a continuation request", () => + Effect.gen(function* () { + // Bedrock represents redactedContent blobs as base64 strings on its JSON + // wire. The provider owns the payload and requires byte-exact replay. + const redactedData = "cmVkYWN0ZWQtdGhpbmtpbmc=" + const response = yield* LLMClient.generate( + LLMRequest.update(baseRequest, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe( + Effect.provide( + fixedBytes( + eventStreamBody( + ["messageStart", { role: "assistant" }], + [ + "contentBlockDelta", + { contentBlockIndex: 0, delta: { reasoningContent: { redactedContent: redactedData } } }, + ], + ["contentBlockStop", { contentBlockIndex: 0 }], + [ + "contentBlockStart", + { + contentBlockIndex: 1, + start: { toolUse: { toolUseId: "tool_1", name: "lookup" } }, + }, + ], + ["contentBlockDelta", { contentBlockIndex: 1, delta: { toolUse: { input: '{"query":"weather"}' } } }], + ["contentBlockStop", { contentBlockIndex: 1 }], + ["messageStop", { stopReason: "tool_use" }], + ), + ), + ), + ) + expect(response.events.find((event) => event.type === "reasoning-delta" && event.text === "")).toEqual({ + type: "reasoning-delta", + id: "reasoning-0", + text: "", + providerMetadata: { bedrock: { redactedData } }, + }) + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.user("Say hello."), + response.message, + Message.tool({ id: "tool_1", name: "lookup", result: "sunny", resultType: "text" }), + ], + tools: [{ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } }], + cache: "none", + }), + ) + + expect(prepared.body.messages).toEqual([ + { role: "user", content: [{ text: "Say hello." }] }, + { + role: "assistant", + content: [ + { reasoningContent: { redactedContent: redactedData } }, + { toolUse: { toolUseId: "tool_1", name: "lookup", input: { query: "weather" } } }, + ], + }, + { + role: "user", + content: [{ toolResult: { toolUseId: "tool_1", content: [{ text: "sunny" }], status: "success" } }], + }, + ]) + }), + ) + + it.effect("classifies throttlingException as a rate limit", () => + Effect.gen(function* () { + const body = concat([ + eventFrame("messageStart", { role: "assistant" }), + exceptionFrame("throttlingException", { message: "Slow down" }), + ]) + const error = yield* LLMClient.generate(baseRequest).pipe(Effect.provide(fixedBytes(body)), Effect.flip) + + expect(error.reason).toMatchObject({ _tag: "RateLimit", message: "Slow down" }) + }), + ) + + it.effect("classifies input-too-long validation exceptions", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(baseRequest).pipe( + Effect.provide( + fixedBytes(exceptionFrame("validationException", { message: "Input is too long for requested model" })), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ + _tag: "InvalidRequest", + message: "Input is too long for requested model", + classification: "context-overflow", + }) + }), + ) + + it.effect("uses originalMessage from model stream exception frames", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(baseRequest).pipe( + Effect.provide( + fixedBytes( + exceptionFrame("modelStreamErrorException", { + originalMessage: "Upstream model failed", + originalStatusCode: 500, + }), + ), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "ProviderInternal", message: "Upstream model failed" }) + }), + ) + + it.effect("fails unmodeled AWS event-stream errors", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(baseRequest).pipe( + Effect.provide(fixedBytes(errorFrame("BadStream", "Stream failed"))), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ + _tag: "InvalidProviderOutput", + message: "BadStream: Stream failed", + }) + }), + ) + + it.effect("rejects requests with no auth path", () => + Effect.gen(function* () { + const unsignedModel = AmazonBedrock.configure({ + baseURL: "https://bedrock-runtime.test", + }).model("anthropic.claude-3-5-sonnet-20240620-v1:0") + const error = yield* LLMClient.generate(LLMRequest.update(baseRequest, { model: unsignedModel })).pipe( + Effect.provide(fixedBytes(eventStreamBody(["messageStop", { stopReason: "end_turn" }]))), + Effect.flip, + ) + + expect(error.message).toContain("Bedrock Converse requires either route bearer auth or AWS credentials") + }), + ) + + it.effect("signs requests with SigV4 when AWS credentials are provided (deterministic plumbing check)", () => + Effect.gen(function* () { + const signed = AmazonBedrock.configure({ + baseURL: "https://bedrock-runtime.test", + credentials: { + region: "us-east-1", + accessKeyId: "AKIAIOSFODNN7EXAMPLE", + secretAccessKey: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", + }, + }).model("anthropic.claude-3-5-sonnet-20240620-v1:0") + const prepared = yield* LLMClient.prepare(LLMRequest.update(baseRequest, { model: signed })) + + expect(prepared.route).toBe("bedrock-converse") + expect(prepared.model).toBe(signed) + }), + ) + + it.effect("emits cachePoint markers after system, user-text, and assistant-text with cache hints", () => + Effect.gen(function* () { + const cache = new CacheHint({ type: "ephemeral" }) + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_cache", + model, + system: [{ type: "text", text: "System prefix.", cache }], + messages: [ + Message.user([{ type: "text", text: "User prefix.", cache }]), + Message.assistant([{ type: "text", text: "Assistant prefix.", cache }]), + ], + generation: { maxTokens: 16, temperature: 0 }, + }), + ) + + expect(prepared.body).toMatchObject({ + // System: text block followed by cachePoint marker. + system: [{ text: "System prefix." }, { cachePoint: { type: "default" } }], + messages: [ + { + role: "user", + content: [{ text: "User prefix." }, { cachePoint: { type: "default" } }], + }, + { + role: "assistant", + content: [{ text: "Assistant prefix." }, { cachePoint: { type: "default" } }], + }, + ], + }) + }), + ) + + it.effect("does not emit cachePoint when no cache hint is set", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare(baseRequest) + expect(prepared.body).toMatchObject({ + system: [{ text: "You are concise." }], + messages: [{ role: "user", content: [{ text: "Say hello." }] }], + }) + }), + ) + + it.effect("lowers image media into Bedrock image blocks", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_image", + model, + messages: [ + Message.user([ + { type: "text", text: "What is in this image?" }, + { type: "media", mediaType: "image/png", data: "AAAA" }, + { type: "media", mediaType: "image/jpeg", data: "BBBB" }, + { type: "media", mediaType: "image/jpg", data: "CCCC" }, + { type: "media", mediaType: "image/webp", data: "DDDD" }, + ]), + ], + cache: "none", + }), + ) + + expect(prepared.body).toMatchObject({ + messages: [ + { + role: "user", + content: [ + { text: "What is in this image?" }, + { image: { format: "png", source: { bytes: "AAAA" } } }, + { image: { format: "jpeg", source: { bytes: "BBBB" } } }, + // image/jpg is a non-standard alias; we map it to jpeg. + { image: { format: "jpeg", source: { bytes: "CCCC" } } }, + { image: { format: "webp", source: { bytes: "DDDD" } } }, + ], + }, + ], + }) + }), + ) + + it.effect("base64-encodes Uint8Array image bytes", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_image_bytes", + model, + messages: [Message.user([{ type: "media", mediaType: "image/png", data: new Uint8Array([1, 2, 3, 4, 5]) }])], + }), + ) + + // Buffer.from([1,2,3,4,5]).toString("base64") === "AQIDBAU=" + expect(prepared.body).toMatchObject({ + messages: [ + { + role: "user", + content: [{ image: { format: "png", source: { bytes: "AQIDBAU=" } } }], + }, + ], + }) + }), + ) + + it.effect("lowers document media into Bedrock document blocks with format and name", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_doc", + model, + cache: "none", + messages: [ + Message.user([ + { type: "text", text: "Summarize these documents." }, + { type: "media", mediaType: "application/pdf", data: "UERGREFUQQ==", filename: "report.pdf" }, + { type: "media", mediaType: "text/csv", data: "Q1NWREFUQQ==", filename: "data.csv" }, + ]), + ], + }), + ) + + expect(prepared.body).toMatchObject({ + messages: [ + { + role: "user", + content: [ + { text: "Summarize these documents." }, + { document: { format: "pdf", name: "report.pdf", source: { bytes: "UERGREFUQQ==" } } }, + { document: { format: "csv", name: "data.csv", source: { bytes: "Q1NWREFUQQ==" } } }, + ], + }, + ], + }) + }), + ) + + it.effect("requires names for document media", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [Message.user({ type: "media", mediaType: "application/pdf", data: "UERGREFUQQ==" })], + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("document media requires a filename") + }), + ) + + it.effect("passes named document-only messages through for provider validation", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + cache: "none", + messages: [ + Message.user({ + type: "media", + mediaType: "application/pdf", + data: "UERGREFUQQ==", + filename: "report.pdf", + }), + ], + }), + ) + + expect(prepared.body.messages).toEqual([ + { + role: "user", + content: [{ document: { format: "pdf", name: "report.pdf", source: { bytes: "UERGREFUQQ==" } } }], + }, + ]) + }), + ) + + it.effect("lowers document media in tool results", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + cache: "none", + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "read", input: { path: "report.pdf" } })]), + Message.tool({ + id: "call_1", + name: "read", + result: { + type: "content", + value: [ + { type: "text", text: "Read successfully" }, + { + type: "file", + uri: "data:application/pdf;base64,UERGREFUQQ==", + mime: "application/pdf", + name: "report", + }, + ], + }, + }), + ], + }), + ) + + expect(prepared.body.messages).toEqual([ + { + role: "assistant", + content: [{ toolUse: { toolUseId: "call_1", name: "read", input: { path: "report.pdf" } } }], + }, + { + role: "user", + content: [ + { + toolResult: { + toolUseId: "call_1", + status: "success", + content: [ + { text: "Read successfully" }, + { document: { format: "pdf", name: "report", source: { bytes: "UERGREFUQQ==" } } }, + ], + }, + }, + ], + }, + ]) + }), + ) + + it.effect("rejects unsupported image media types", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + id: "req_bad_image", + model, + messages: [Message.user([{ type: "media", mediaType: "image/svg+xml", data: "x" }])], + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("Bedrock Converse does not support image media type image/svg+xml") + }), + ) + + it.effect("rejects unsupported document media types", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + id: "req_bad_doc", + model, + messages: [Message.user([{ type: "media", mediaType: "application/x-tar", data: "x", filename: "a.tar" }])], + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("Bedrock Converse does not support media type application/x-tar") + }), + ) + + it.effect("maps ttlSeconds >= 3600 to cachePoint ttl: '1h'", () => + Effect.gen(function* () { + const cache = new CacheHint({ type: "ephemeral", ttlSeconds: 3600 }) + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + system: [{ type: "text", text: "system", cache }], + prompt: "hi", + }), + ) + + expect(prepared.body).toMatchObject({ + system: [{ text: "system" }, { cachePoint: { type: "default", ttl: "1h" } }], + }) + }), + ) + + it.effect("appends cachePoint after marked tool definitions and tool-result blocks", () => + Effect.gen(function* () { + const cache = new CacheHint({ type: "ephemeral" }) + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + tools: [{ name: "lookup", description: "lookup", inputSchema: { type: "object", properties: {} }, cache }], + messages: [ + Message.user("What's the weather?"), + Message.assistant([ToolCallPart.make({ id: "call_1", name: "lookup", input: {} })]), + Message.tool({ id: "call_1", name: "lookup", result: { temp: 72 }, cache }), + ], + cache: "none", + }), + ) + + expect(prepared.body).toMatchObject({ + toolConfig: { + tools: [{ toolSpec: { name: "lookup" } }, { cachePoint: { type: "default" } }], + }, + messages: [ + { role: "user", content: [{ text: "What's the weather?" }] }, + { role: "assistant", content: [{ toolUse: { toolUseId: "call_1" } }] }, + { + role: "user", + content: [{ toolResult: { toolUseId: "call_1" } }, { cachePoint: { type: "default" } }], + }, + ], + }) + }), + ) + + it.effect("drops cachePoint markers past the 4-per-request cap", () => + Effect.gen(function* () { + const cache = new CacheHint({ type: "ephemeral" }) + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + system: [ + { type: "text", text: "a", cache }, + { type: "text", text: "b", cache }, + { type: "text", text: "c", cache }, + { type: "text", text: "d", cache }, + { type: "text", text: "e", cache }, + { type: "text", text: "f", cache }, + ], + prompt: "hi", + }), + ) + + const system = (prepared.body as { system: Array<{ cachePoint?: unknown }> }).system + expect(system.filter((part) => "cachePoint" in part)).toHaveLength(4) + }), + ) +}) + +// Live recorded integration tests. Run with `RECORD=true AWS_ACCESS_KEY_ID=... +// AWS_SECRET_ACCESS_KEY=... [AWS_SESSION_TOKEN=...] bun run test ...` to refresh +// cassettes; replay is the default and works without credentials. +// +// Region is pinned to us-east-1 in tests so the request URL is stable across +// machines on replay. If you need to record from a different region (e.g. your +// account has access elsewhere), pass `BEDROCK_RECORDING_REGION=eu-west-1` — +// but then commit the resulting cassette and others should record from the +// same region too. +const RECORDING_REGION = process.env.BEDROCK_RECORDING_REGION ?? "us-east-1" + +const recordedModel = () => + AmazonBedrock.configure({ + // Most newer Anthropic models on Bedrock require a cross-region inference + // profile (`us.` prefix). Nova does not require an Anthropic use-case form + // and is on-demand-throughput accessible by default for most accounts. + credentials: { + region: RECORDING_REGION, + accessKeyId: process.env.AWS_ACCESS_KEY_ID ?? "fixture", + secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY ?? "fixture", + sessionToken: process.env.AWS_SESSION_TOKEN, + }, + }).model(process.env.BEDROCK_MODEL_ID ?? "us.amazon.nova-micro-v1:0") + +const recorded = recordedTests({ + prefix: "bedrock-converse", + provider: "amazon-bedrock", + protocol: "bedrock-converse", + requires: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"], +}) + +describe("Bedrock Converse recorded", () => { + recorded.effect("streams text", () => + Effect.gen(function* () { + const llm = yield* LLMClient.Service + const response = yield* llm.generate( + LLM.request({ + id: "recorded_bedrock_text", + model: recordedModel(), + system: "Reply with the single word 'Hello'.", + prompt: "Say hello.", + cache: "none", + generation: { maxTokens: 16, temperature: 0 }, + }), + ) + + expect(eventSummary(response.events)).toEqual([ + { type: "text", value: "Hello" }, + { type: "finish", reason: "stop", usage: { inputTokens: 12, outputTokens: 2, totalTokens: 14 } }, + ]) + }), + ) + + recorded.effect.with("streams a tool call", { tags: ["tool"] }, () => + Effect.gen(function* () { + const llm = yield* LLMClient.Service + const response = yield* llm.generate( + LLM.request({ + id: "recorded_bedrock_tool_call", + model: recordedModel(), + system: "Call tools exactly as requested.", + prompt: "Call get_weather with city exactly Paris.", + tools: [weatherTool], + toolChoice: ToolChoice.make(weatherTool), + cache: "none", + generation: { maxTokens: 80, temperature: 0 }, + }), + ) + + expect(eventSummary(response.events)).toEqual([ + { type: "tool-call", name: weatherToolName, input: { city: "Paris" } }, + { type: "finish", reason: "tool-calls", usage: { inputTokens: 419, outputTokens: 16, totalTokens: 435 } }, + ]) + }), + ) + + recorded.effect.with("drives a tool loop", { tags: ["tool", "tool-loop", "golden"] }, () => + Effect.gen(function* () { + expectWeatherToolLoop( + yield* runWeatherToolLoop( + weatherToolLoopRequest({ + id: "recorded_bedrock_tool_loop", + model: recordedModel(), + }), + ), + ) + }), + ) +}) diff --git a/packages/ai/test/provider/cloudflare.test.ts b/packages/ai/test/provider/cloudflare.test.ts new file mode 100644 index 000000000000..309f5db0ff28 --- /dev/null +++ b/packages/ai/test/provider/cloudflare.test.ts @@ -0,0 +1,283 @@ +import { describe, expect } from "bun:test" +import { ConfigProvider, Effect, Schema } from "effect" +import { HttpClientRequest } from "effect/unstable/http" +import { LLM, LLMEvent } from "../../src" +import { CloudflareAIGateway, CloudflareWorkersAI } from "../../src/providers/cloudflare" +import { LLMClient } from "../../src/route" +import { it } from "../lib/effect" +import { dynamicResponse } from "../lib/http" +import { sseEvents } from "../lib/sse" + +const Json = Schema.fromJsonString(Schema.Unknown) +const decodeJson = Schema.decodeUnknownSync(Json) +const withEnv = (env: Record) => Effect.provide(ConfigProvider.layer(ConfigProvider.fromEnv({ env }))) + +const deltaChunk = (delta: object, finishReason: string | null = null) => ({ + id: "chatcmpl_fixture", + choices: [{ delta, finish_reason: finishReason }], + usage: null, +}) + +describe("Cloudflare", () => { + it.effect("prepares AI Gateway models through the OpenAI-compatible Chat protocol", () => + Effect.gen(function* () { + const model = CloudflareAIGateway.configure({ + accountId: "test-account", + gatewayId: "test-gateway", + apiKey: "test-token", + }).model("workers-ai/@cf/meta/llama-3.3-70b-instruct") + + expect(model).toMatchObject({ + id: "workers-ai/@cf/meta/llama-3.3-70b-instruct", + provider: "cloudflare-ai-gateway", + route: { id: "cloudflare-ai-gateway" }, + }) + expect(model.route.endpoint.baseURL).toBe("https://gateway.ai.cloudflare.com/v1/test-account/test-gateway/compat") + + const prepared = yield* LLMClient.prepare(LLM.request({ model, prompt: "Say hello." })) + + expect(prepared.route).toBe("cloudflare-ai-gateway") + expect(prepared.body).toMatchObject({ + model: "workers-ai/@cf/meta/llama-3.3-70b-instruct", + messages: [{ role: "user", content: "Say hello." }], + stream: true, + }) + }), + ) + + it.effect("posts to the derived gateway endpoint with bearer auth", () => + Effect.gen(function* () { + const response = yield* LLM.generate( + LLM.request({ + model: CloudflareAIGateway.configure({ + accountId: "test-account", + gatewayId: "test-gateway", + apiKey: "test-token", + }).model("openai/gpt-4o-mini"), + prompt: "Say hello.", + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.url).toBe( + "https://gateway.ai.cloudflare.com/v1/test-account/test-gateway/compat/chat/completions", + ) + expect(web.headers.get("authorization")).toBe("Bearer test-token") + expect(decodeJson(input.text)).toMatchObject({ + model: "openai/gpt-4o-mini", + stream: true, + messages: [{ role: "user", content: "Say hello." }], + }) + return input.respond( + sseEvents(deltaChunk({ role: "assistant", content: "Hello" }), deltaChunk({}, "stop")), + { headers: { "content-type": "text/event-stream" } }, + ) + }), + ), + ), + ) + + expect(response.text).toBe("Hello") + }), + ) + + it.effect("preserves reasoning details for AI Gateway continuation", () => + Effect.gen(function* () { + const model = CloudflareAIGateway.configure({ + accountId: "test-account", + gatewayId: "test-gateway", + apiKey: "test-token", + }).model("anthropic/claude-sonnet-4.6") + const details = [ + { type: "reasoning.text", text: "Think", format: "anthropic-claude-v1", index: 0 }, + { type: "reasoning.text", text: "ing", format: "anthropic-claude-v1", index: 0 }, + { type: "reasoning.text", signature: "signed", format: "anthropic-claude-v1", index: 0 }, + ] + const merged = [ + { + type: "reasoning.text", + text: "Thinking", + signature: "signed", + format: "anthropic-claude-v1", + index: 0, + }, + ] + const response = yield* LLM.generate(LLM.request({ model, prompt: "Say hello." })).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.succeed( + input.respond( + sseEvents( + deltaChunk({ reasoning: "Think", reasoning_details: [details[0]] }), + deltaChunk({ reasoning: "ing", reasoning_details: [details[1]] }), + deltaChunk({ reasoning_details: [details[2]] }), + deltaChunk({ content: "Hello" }), + deltaChunk({}, "stop"), + ), + { headers: { "content-type": "text/event-stream" } }, + ), + ), + ), + ), + ) + + expect(response.reasoning).toBe("Thinking") + expect(response.events.filter(LLMEvent.is.reasoningDelta)).toHaveLength(2) + expect(response.message.content.find((part) => part.type === "reasoning")?.providerMetadata).toEqual({ + openai: { reasoningField: "reasoning", reasoningDetails: merged }, + }) + + const replay = yield* LLMClient.prepare(LLM.request({ model, messages: [response.message] })) + expect(replay.body.messages).toEqual([ + { role: "assistant", content: "Hello", reasoning: "Thinking", reasoning_details: merged }, + ]) + }), + ) + + it.effect("defaults AI Gateway id to default when omitted or blank", () => + Effect.gen(function* () { + expect( + CloudflareAIGateway.configure({ + accountId: "test-account", + gatewayId: "", + gatewayApiKey: "test-token", + }).model("workers-ai/@cf/meta/llama-3.3-70b-instruct").route.endpoint.baseURL, + ).toBe("https://gateway.ai.cloudflare.com/v1/test-account/default/compat") + }), + ) + + it.effect("supports authenticated AI Gateway plus upstream provider auth", () => + Effect.gen(function* () { + yield* LLM.generate( + LLM.request({ + model: CloudflareAIGateway.configure({ + accountId: "test-account", + gatewayApiKey: "gateway-token", + apiKey: "provider-token", + }).model("openai/gpt-4o-mini"), + prompt: "Say hello.", + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.url).toBe("https://gateway.ai.cloudflare.com/v1/test-account/default/compat/chat/completions") + expect(web.headers.get("cf-aig-authorization")).toBe("Bearer gateway-token") + expect(web.headers.get("authorization")).toBe("Bearer provider-token") + return input.respond( + sseEvents(deltaChunk({ role: "assistant", content: "Hello" }), deltaChunk({}, "stop")), + { headers: { "content-type": "text/event-stream" } }, + ) + }), + ), + ), + ) + }), + ) + + it.effect("allows a fully configured baseURL override", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: CloudflareAIGateway.configure({ + baseURL: "https://gateway.proxy.test/v1/custom/compat", + apiKey: "test-token", + }).model("openai/gpt-4o-mini"), + prompt: "Say hello.", + }), + ) + + expect(prepared.model.route.endpoint.baseURL).toBe("https://gateway.proxy.test/v1/custom/compat") + }), + ) + + it.effect("prepares direct Workers AI models through the OpenAI-compatible Chat protocol", () => + Effect.gen(function* () { + const model = CloudflareWorkersAI.configure({ + accountId: "test-account", + apiKey: "test-token", + }).model("@cf/meta/llama-3.1-8b-instruct") + + expect(model).toMatchObject({ + id: "@cf/meta/llama-3.1-8b-instruct", + provider: "cloudflare-workers-ai", + route: { id: "cloudflare-workers-ai" }, + }) + expect(model.route.endpoint.baseURL).toBe("https://api.cloudflare.com/client/v4/accounts/test-account/ai/v1") + + const prepared = yield* LLMClient.prepare(LLM.request({ model, prompt: "Say hello." })) + + expect(prepared.route).toBe("cloudflare-workers-ai") + expect(prepared.body).toMatchObject({ + model: "@cf/meta/llama-3.1-8b-instruct", + messages: [{ role: "user", content: "Say hello." }], + stream: true, + }) + }), + ) + + it.effect("posts direct Workers AI requests to the account endpoint with bearer auth", () => + Effect.gen(function* () { + const response = yield* LLM.generate( + LLM.request({ + model: CloudflareWorkersAI.configure({ + accountId: "test-account", + apiKey: "test-token", + }).model("@cf/meta/llama-3.1-8b-instruct"), + prompt: "Say hello.", + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.url).toBe("https://api.cloudflare.com/client/v4/accounts/test-account/ai/v1/chat/completions") + expect(web.headers.get("authorization")).toBe("Bearer test-token") + expect(decodeJson(input.text)).toMatchObject({ + model: "@cf/meta/llama-3.1-8b-instruct", + stream: true, + messages: [{ role: "user", content: "Say hello." }], + }) + return input.respond( + sseEvents(deltaChunk({ role: "assistant", content: "Hello" }), deltaChunk({}, "stop")), + { headers: { "content-type": "text/event-stream" } }, + ) + }), + ), + ), + ) + + expect(response.text).toBe("Hello") + }), + ) + + it.effect("supports direct Workers AI token aliases through auth config", () => + Effect.gen(function* () { + yield* LLM.generate( + LLM.request({ + model: CloudflareWorkersAI.configure({ + accountId: "test-account", + }).model("@cf/meta/llama-3.1-8b-instruct"), + prompt: "Say hello.", + }), + ).pipe( + withEnv({ CLOUDFLARE_WORKERS_AI_TOKEN: "test-token" }), + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.headers.get("authorization")).toBe("Bearer test-token") + return input.respond( + sseEvents(deltaChunk({ role: "assistant", content: "Hello" }), deltaChunk({}, "stop")), + { headers: { "content-type": "text/event-stream" } }, + ) + }), + ), + ), + ) + }), + ) +}) diff --git a/packages/llm/test/provider/gemini-cache.recorded.test.ts b/packages/ai/test/provider/gemini-cache.recorded.test.ts similarity index 100% rename from packages/llm/test/provider/gemini-cache.recorded.test.ts rename to packages/ai/test/provider/gemini-cache.recorded.test.ts diff --git a/packages/ai/test/provider/gemini.test.ts b/packages/ai/test/provider/gemini.test.ts new file mode 100644 index 000000000000..2b22401e0a54 --- /dev/null +++ b/packages/ai/test/provider/gemini.test.ts @@ -0,0 +1,707 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { LLM, LLMError, LLMRequest, Message, ToolCallPart, ToolDefinition, Usage } from "../../src" +import { Auth, LLMClient } from "../../src/route" +import * as Gemini from "../../src/protocols/gemini" +import { ProviderShared } from "../../src/protocols/shared" +import { it } from "../lib/effect" +import { fixedResponse } from "../lib/http" +import { sseEvents, sseRaw } from "../lib/sse" + +const model = Gemini.route + .with({ + endpoint: { baseURL: "https://generativelanguage.test/v1beta/" }, + auth: Auth.header("x-goog-api-key", "test"), + }) + .model({ id: "gemini-2.5-flash" }) + +const request = LLM.request({ + id: "req_1", + model, + system: "You are concise.", + prompt: "Say hello.", + generation: { maxTokens: 20, temperature: 0 }, +}) + +describe("Gemini route", () => { + it.effect("prepares Gemini target", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare(request) + + expect(prepared.body).toEqual({ + contents: [{ role: "user", parts: [{ text: "Say hello." }] }], + systemInstruction: { parts: [{ text: "You are concise." }] }, + generationConfig: { maxOutputTokens: 20, temperature: 0 }, + }) + }), + ) + + it.effect("normalizes Gemini thinking options", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLMRequest.update(request, { + providerOptions: { gemini: { thinkingConfig: { thinkingBudget: 0, includeThoughts: false } } }, + }), + ) + const filtered = yield* LLMClient.prepare( + LLMRequest.update(request, { + providerOptions: { gemini: { thinkingConfig: { thinkingBudget: "invalid", includeThoughts: false } } }, + }), + ) + + expect(prepared.body.generationConfig?.thinkingConfig).toEqual({ + thinkingBudget: 0, + includeThoughts: false, + }) + expect(filtered.body.generationConfig?.thinkingConfig).toEqual({ includeThoughts: false }) + }), + ) + + it.effect("lowers chronological system updates to wrapped user text in order", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [Message.user("Before."), Message.system("Update."), Message.assistant("After.")], + }), + ) + + expect(prepared.body.contents).toEqual([ + { role: "user", parts: [{ text: "Before." }, { text: "\nUpdate.\n" }] }, + { role: "model", parts: [{ text: "After." }] }, + ]) + }), + ) + + it.effect("prepares multimodal user input and tool history", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result", + model, + tools: [ + { + name: "lookup", + description: "Lookup data", + inputSchema: { type: "object", properties: { query: { type: "string" } } }, + }, + ], + toolChoice: { type: "tool", name: "lookup" }, + messages: [ + Message.user([ + { type: "text", text: "What is in this image?" }, + { type: "media", mediaType: "image/png", data: "AAECAw==" }, + { type: "media", mediaType: "application/pdf", data: "JVBERi0xLjQ=" }, + ]), + Message.assistant([ToolCallPart.make({ id: "call_1", name: "lookup", input: { query: "weather" } })]), + Message.tool({ id: "call_1", name: "lookup", result: { forecast: "sunny" } }), + ], + }), + ) + + expect(prepared.body).toEqual({ + contents: [ + { + role: "user", + parts: [ + { text: "What is in this image?" }, + { inlineData: { mimeType: "image/png", data: "AAECAw==" } }, + { inlineData: { mimeType: "application/pdf", data: "JVBERi0xLjQ=" } }, + ], + }, + { + role: "model", + parts: [{ functionCall: { name: "lookup", args: { query: "weather" } } }], + }, + { + role: "user", + parts: [ + { + functionResponse: { + name: "lookup", + response: { name: "lookup", content: '{"forecast":"sunny"}' }, + }, + }, + ], + }, + ], + tools: [ + { + functionDeclarations: [ + { + name: "lookup", + description: "Lookup data", + parameters: { type: "object", properties: { query: { type: "string" } } }, + }, + ], + }, + ], + toolConfig: { functionCallingConfig: { mode: "ANY", allowedFunctionNames: ["lookup"] } }, + }) + }), + ) + + it.effect("continues media tool results as inline model input without base64 text", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_image", name: "read", input: { path: "pixel.png" } })]), + Message.tool({ + id: "call_image", + name: "read", + result: { + type: "content", + value: [ + { type: "text", text: "Image read successfully" }, + { type: "file", uri: "data:image/png;base64,AAECAw==", mime: "image/png", name: "pixel.png" }, + { type: "file", uri: "data:application/pdf;base64,JVBERi0xLjQ=", mime: "application/pdf" }, + ], + }, + }), + ], + }), + ) + + expect(prepared.body.contents).toEqual([ + { role: "model", parts: [{ functionCall: { name: "read", args: { path: "pixel.png" } } }] }, + { + role: "user", + parts: [ + { + functionResponse: { + name: "read", + response: { name: "read", content: "Image read successfully" }, + parts: [ + { inlineData: { mimeType: "image/png", data: "AAECAw==" } }, + { inlineData: { mimeType: "application/pdf", data: "JVBERi0xLjQ=" } }, + ], + }, + }, + ], + }, + ]) + expect(JSON.stringify(prepared.body.contents)).not.toContain('"content":"AAECAw=="') + }), + ) + + it.effect("strips matching data URLs to raw base64 inlineData", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.user({ type: "media", mediaType: "image/png", data: "data:image/png;base64,AAEC" }), + Message.tool({ + id: "call_image", + name: "read", + result: { + type: "content", + value: [{ type: "file", uri: "data:image/jpeg;base64,/9j/", mime: "image/jpeg" }], + }, + }), + ], + }), + ) + expect(prepared.body.contents).toEqual([ + { role: "user", parts: [{ inlineData: { mimeType: "image/png", data: "AAEC" } }] }, + { + role: "user", + parts: [ + { + functionResponse: { + name: "read", + response: { name: "read", content: "" }, + parts: [{ inlineData: { mimeType: "image/jpeg", data: "/9j/" } }], + }, + }, + ], + }, + ]) + }), + ) + + for (const [name, media] of [ + ["mismatched data URL MIME", { mediaType: "image/png", data: "data:image/jpeg;base64,/9j/" }], + ["malformed base64", { mediaType: "image/png", data: "%%%=" }], + ["unsupported SVG", { mediaType: "image/svg+xml", data: "PHN2Zz4=" }], + ] as const) + it.effect(`rejects ${name}`, () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ model, messages: [Message.user({ type: "media", ...media })] }), + ).pipe(Effect.flip) + expect(error.message).toMatch(/does not support|does not match|valid base64/) + }), + ) + + it.effect("rejects oversized image input", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.user({ + type: "media", + mediaType: "image/png", + data: "A".repeat(ProviderShared.MAX_MEDIA_ENCODED_BYTES + 4), + }), + ], + }), + ).pipe(Effect.flip) + expect(error.message).toContain("encoded limit") + }), + ) + + it.effect("keeps tools and sends function calling mode NONE", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_choice_none", + model, + prompt: "Say hello.", + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + toolChoice: { type: "none" }, + }), + ) + + expect(prepared.body).toMatchObject({ + contents: [{ role: "user", parts: [{ text: "Say hello." }] }], + tools: [{ functionDeclarations: [{ name: "lookup", description: "Lookup data" }] }], + toolConfig: { functionCallingConfig: { mode: "NONE" } }, + }) + }), + ) + + it.effect("sanitizes integer enums, dangling required, untyped arrays, and scalar object keys", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_schema_patch", + model, + prompt: "Use the tool.", + tools: [ + { + name: "lookup", + description: "Lookup data", + inputSchema: { + type: "object", + required: ["status", "missing"], + properties: { + status: { type: "integer", enum: [1, 2] }, + tags: { type: "array" }, + name: { type: "string", properties: { ignored: { type: "string" } }, required: ["ignored"] }, + }, + }, + }, + ], + }), + ) + + expect(prepared.body).toMatchObject({ + tools: [ + { + functionDeclarations: [ + { + parameters: { + type: "object", + required: ["status"], + properties: { + status: { type: "string", enum: ["1", "2"] }, + tags: { type: "array", items: { type: "string" } }, + name: { type: "string" }, + }, + }, + }, + ], + }, + ], + }) + }), + ) + + it.effect("parses text, reasoning, and usage stream fixtures", () => + Effect.gen(function* () { + const body = sseEvents( + { + candidates: [ + { + content: { role: "model", parts: [{ text: "thinking", thought: true }] }, + }, + ], + }, + { + candidates: [ + { + content: { role: "model", parts: [{ text: "Hello" }] }, + }, + ], + }, + { + candidates: [ + { + content: { role: "model", parts: [{ text: "!" }] }, + finishReason: "STOP", + }, + ], + }, + { + usageMetadata: { + promptTokenCount: 5, + candidatesTokenCount: 2, + totalTokenCount: 7, + thoughtsTokenCount: 1, + cachedContentTokenCount: 1, + }, + }, + ) + const response = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body))) + + expect(response.text).toBe("Hello!") + expect(response.reasoning).toBe("thinking") + expect(response.usage).toMatchObject({ + inputTokens: 5, + outputTokens: 3, + nonCachedInputTokens: 4, + cacheReadInputTokens: 1, + reasoningTokens: 1, + totalTokens: 7, + }) + const usage = new Usage({ + inputTokens: 5, + outputTokens: 3, + nonCachedInputTokens: 4, + cacheReadInputTokens: 1, + reasoningTokens: 1, + totalTokens: 7, + providerMetadata: { + google: { + promptTokenCount: 5, + candidatesTokenCount: 2, + totalTokenCount: 7, + thoughtsTokenCount: 1, + cachedContentTokenCount: 1, + }, + }, + }) + expect(response.events).toEqual([ + { type: "step-start", index: 0 }, + { type: "reasoning-start", id: "reasoning-0" }, + { type: "reasoning-delta", id: "reasoning-0", text: "thinking" }, + { type: "reasoning-end", id: "reasoning-0" }, + { type: "text-start", id: "text-0" }, + { type: "text-delta", id: "text-0", text: "Hello" }, + { type: "text-delta", id: "text-0", text: "!" }, + { type: "text-end", id: "text-0" }, + { + type: "step-finish", + index: 0, + reason: { normalized: "stop", raw: "STOP" }, + usage, + providerMetadata: undefined, + }, + { + type: "finish", + reason: { normalized: "stop", raw: "STOP" }, + usage, + }, + ]) + }), + ) + + it.effect("preserves thoughtSignature for reasoning and tool-call continuation", () => + Effect.gen(function* () { + const body = sseEvents({ + candidates: [ + { + content: { + role: "model", + parts: [ + { text: "thinking", thought: true }, + { text: "", thought: true, thoughtSignature: "thought_sig" }, + { + functionCall: { id: "provider_call", name: "lookup", args: { query: "weather" } }, + thoughtSignature: "tool_sig", + }, + ], + }, + finishReason: "STOP", + }, + ], + }) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedResponse(body))) + const reasoning = response.events.find((event) => event.type === "reasoning-start") + const reasoningEnd = response.events.find((event) => event.type === "reasoning-end") + const toolCall = response.events.find((event) => event.type === "tool-call") + + expect(reasoning).toEqual({ + type: "reasoning-start", + id: "reasoning-0", + providerMetadata: undefined, + }) + expect(reasoningEnd).toEqual({ + type: "reasoning-end", + id: "reasoning-0", + providerMetadata: { google: { thoughtSignature: "thought_sig" } }, + }) + expect(toolCall).toMatchObject({ + id: "tool_0", + providerMetadata: { google: { functionCallId: "provider_call", thoughtSignature: "tool_sig" } }, + }) + expect(response.events.findIndex((event) => event.type === "reasoning-end")).toBeLessThan( + response.events.findIndex((event) => event.type === "tool-call"), + ) + + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ + { type: "reasoning", text: "thinking", providerMetadata: reasoningEnd?.providerMetadata }, + ToolCallPart.make({ + id: "tool_0", + name: "lookup", + input: { query: "weather" }, + providerMetadata: toolCall?.providerMetadata, + }), + ]), + Message.tool({ + id: "tool_0", + name: "lookup", + result: "done", + resultType: "text", + providerMetadata: toolCall?.providerMetadata, + }), + ], + }), + ) + expect(prepared.body.contents).toEqual([ + { + role: "model", + parts: [ + { text: "thinking", thought: true, thoughtSignature: "thought_sig" }, + { + functionCall: { id: "provider_call", name: "lookup", args: { query: "weather" } }, + thoughtSignature: "tool_sig", + }, + ], + }, + { + role: "user", + parts: [ + { + functionResponse: { + id: "provider_call", + name: "lookup", + response: { name: "lookup", content: "done" }, + }, + }, + ], + }, + ]) + }), + ) + + it.effect("emits streamed tool calls and maps finish reason", () => + Effect.gen(function* () { + const body = sseEvents({ + candidates: [ + { + content: { + role: "model", + parts: [{ functionCall: { name: "lookup", args: { query: "weather" } } }], + }, + finishReason: "STOP", + }, + ], + usageMetadata: { promptTokenCount: 5, candidatesTokenCount: 1 }, + }) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedResponse(body))) + const usage = new Usage({ + inputTokens: 5, + outputTokens: 1, + nonCachedInputTokens: 5, + cacheReadInputTokens: undefined, + reasoningTokens: undefined, + totalTokens: 6, + providerMetadata: { google: { promptTokenCount: 5, candidatesTokenCount: 1 } }, + }) + + expect(response.toolCalls).toEqual([ + { + type: "tool-call", + id: "tool_0", + name: "lookup", + input: { query: "weather" }, + providerExecuted: undefined, + providerMetadata: undefined, + }, + ]) + expect(response.events).toEqual([ + { type: "step-start", index: 0 }, + { + type: "tool-call", + id: "tool_0", + name: "lookup", + input: { query: "weather" }, + providerExecuted: undefined, + providerMetadata: undefined, + }, + { + type: "step-finish", + index: 0, + reason: { normalized: "tool-calls", raw: "STOP" }, + usage, + providerMetadata: undefined, + }, + { + type: "finish", + reason: { normalized: "tool-calls", raw: "STOP" }, + usage, + }, + ]) + }), + ) + + it.effect("assigns unique ids to multiple streamed tool calls", () => + Effect.gen(function* () { + const body = sseEvents({ + candidates: [ + { + content: { + role: "model", + parts: [ + { functionCall: { id: "tool_0", name: "lookup", args: { query: "weather" } } }, + { functionCall: { name: "lookup", args: { query: "news" } } }, + ], + }, + finishReason: "STOP", + }, + ], + }) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedResponse(body))) + + expect(response.toolCalls).toEqual([ + { + type: "tool-call", + id: "tool_0", + name: "lookup", + input: { query: "weather" }, + providerMetadata: { google: { functionCallId: "tool_0" } }, + }, + { type: "tool-call", id: "tool_1", name: "lookup", input: { query: "news" } }, + ]) + expect(response.events.at(-1)).toMatchObject({ + type: "finish", + reason: { normalized: "tool-calls", raw: "STOP" }, + }) + }), + ) + + it.effect("maps length and content-filter finish reasons", () => + Effect.gen(function* () { + const length = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents({ candidates: [{ content: { role: "model", parts: [] }, finishReason: "MAX_TOKENS" }] }), + ), + ), + ) + const filtered = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse(sseEvents({ candidates: [{ content: { role: "model", parts: [] }, finishReason: "SAFETY" }] })), + ), + ) + + expect(length.events.map((event) => event.type)).toEqual(["step-start", "step-finish", "finish"]) + expect(length.events.at(-1)).toMatchObject({ + type: "finish", + reason: { normalized: "length", raw: "MAX_TOKENS" }, + }) + expect(filtered.events.map((event) => event.type)).toEqual(["step-start", "step-finish", "finish"]) + expect(filtered.events.at(-1)).toMatchObject({ + type: "finish", + reason: { normalized: "content-filter", raw: "SAFETY" }, + }) + }), + ) + + it.effect("maps current blocking and invalid-output finish reasons", () => + Effect.gen(function* () { + const reasons = [ + ["MODEL_ARMOR", "content-filter"], + ["IMAGE_PROHIBITED_CONTENT", "content-filter"], + ["IMAGE_RECITATION", "content-filter"], + ["LANGUAGE", "content-filter"], + ["UNEXPECTED_TOOL_CALL", "error"], + ["NO_IMAGE", "error"], + ["IMAGE_OTHER", "unknown"], + ["TOO_MANY_TOOL_CALLS", "error"], + ["MISSING_THOUGHT_SIGNATURE", "error"], + ["MALFORMED_RESPONSE", "error"], + ] as const + + for (const [raw, normalized] of reasons) { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse(sseEvents({ candidates: [{ content: { role: "model", parts: [] }, finishReason: raw }] })), + ), + ) + expect(response.finishReason).toEqual({ normalized, raw }) + } + }), + ) + + it.effect("leaves total usage undefined when component counts are missing", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide(fixedResponse(sseEvents({ usageMetadata: { thoughtsTokenCount: 1 } }))), + ) + + expect(response.usage).toMatchObject({ reasoningTokens: 1 }) + expect(response.usage?.totalTokens).toBeUndefined() + }), + ) + + it.effect("fails invalid stream events", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide(fixedResponse(sseRaw("data: {not json}"))), + Effect.flip, + ) + + expect(error).toBeInstanceOf(LLMError) + expect(error.reason).toMatchObject({ _tag: "InvalidProviderOutput" }) + expect(error.message).toContain("Invalid google/gemini stream event") + }), + ) + + it.effect("rejects unsupported assistant media content", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + id: "req_media", + model, + messages: [Message.assistant({ type: "media", mediaType: "image/png", data: "AAECAw==" })], + }), + ).pipe(Effect.flip) + + expect(error.message).toContain( + "Gemini assistant messages only support text, reasoning, and tool-call content for now", + ) + }), + ) +}) diff --git a/packages/llm/test/provider/golden.recorded.test.ts b/packages/ai/test/provider/golden.recorded.test.ts similarity index 92% rename from packages/llm/test/provider/golden.recorded.test.ts rename to packages/ai/test/provider/golden.recorded.test.ts index ef67c866d8d8..2ab4bd66c501 100644 --- a/packages/llm/test/provider/golden.recorded.test.ts +++ b/packages/ai/test/provider/golden.recorded.test.ts @@ -1,4 +1,5 @@ import * as Anthropic from "../../src/providers/anthropic" +import * as AnthropicCompatible from "../../src/providers/anthropic-compatible" import { CloudflareAIGateway, CloudflareWorkersAI } from "../../src/providers/cloudflare" import * as Google from "../../src/providers/google" import * as OpenAI from "../../src/providers/openai" @@ -12,12 +13,16 @@ const openAI = OpenAI.configure({ }) const openAIChat = openAI.chat("gpt-4o-mini") const openAIResponses = openAI.responses("gpt-5.5") -const openAIResponsesWebSocket = openAI.responsesWebSocket("gpt-4.1-mini") const anthropic = Anthropic.configure({ apiKey: process.env.ANTHROPIC_API_KEY ?? "fixture", }) const anthropicHaiku = anthropic.model("claude-haiku-4-5-20251001") const anthropicOpus = anthropic.model("claude-opus-4-7") +const minimax = AnthropicCompatible.configure({ + apiKey: process.env.MINIMAX_API_KEY ?? "fixture", + baseURL: "https://api.minimax.io/anthropic/v1", + provider: "minimax", +}).model("MiniMax-M3") const google = Google.configure({ apiKey: process.env.GOOGLE_GENERATIVE_AI_API_KEY ?? "fixture" }) const gemini = google.model("gemini-2.5-flash") const xai = XAI.configure({ apiKey: process.env.XAI_API_KEY ?? "fixture" }) @@ -89,14 +94,6 @@ describeRecordedGoldenScenarios([ { id: "image-tool-result", temperature: false, maxTokens: 40 }, ], }, - { - name: "OpenAI Responses WebSocket gpt-4.1-mini", - prefix: "openai-responses-websocket", - model: openAIResponsesWebSocket, - transport: "websocket", - requires: ["OPENAI_API_KEY"], - scenarios: ["tool-loop"], - }, { name: "Anthropic Haiku 4.5", prefix: "anthropic-messages", @@ -117,6 +114,15 @@ describeRecordedGoldenScenarios([ { id: "image-tool-result", temperature: false, maxTokens: 40 }, ], }, + { + name: "MiniMax M3 Anthropic-compatible", + prefix: "anthropic-compatible-messages", + protocol: "anthropic-messages", + model: minimax, + requires: ["MINIMAX_API_KEY"], + options: { redact: { allowRequestHeaders: ["anthropic-version"] } }, + scenarios: ["text", "tool-call", "tool-loop"], + }, { name: "Gemini 2.5 Flash", prefix: "gemini", diff --git a/packages/ai/test/provider/google-images.recorded.test.ts b/packages/ai/test/provider/google-images.recorded.test.ts new file mode 100644 index 000000000000..cd7530c65153 --- /dev/null +++ b/packages/ai/test/provider/google-images.recorded.test.ts @@ -0,0 +1,56 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { Image, ImageInput } from "../../src" +import { Google } from "../../src/providers" +import { dimensions } from "../lib/image" +import { recordedTests } from "../recorded-test" + +const model = Google.configure({ + apiKey: process.env.GOOGLE_GENERATIVE_AI_API_KEY ?? "fixture", +}).image("gemini-3.1-flash-image") + +const recorded = recordedTests({ + prefix: "google-images", + provider: "google", + protocol: "google-images", + requires: ["GOOGLE_GENERATIVE_AI_API_KEY"], +}) + +describe("Google Images recorded", () => { + recorded.effect("generates an image", () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model, + prompt: "A simple flat blue circle centered on a plain white background.", + options: { aspectRatio: "1:1" }, + }) + + expect(response.images).toHaveLength(1) + expect(response.image?.mediaType).toMatch(/^image\//) + expect(response.image?.data).toBeInstanceOf(Uint8Array) + expect(response.image?.data.length).toBeGreaterThan(0) + }), + ) + + recorded.effect("edits an image", () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model, + prompt: + "Transform this minimal source into a bright orange sun icon with eight rounded rays on a pale blue background.", + images: [ + ImageInput.bytes( + yield* Effect.promise(() => Bun.file("test/fixtures/images/edit-source.jpg").bytes()), + "image/jpeg", + ), + ], + options: { aspectRatio: "1:1" }, + }) + + expect(response.image?.mediaType).toBe("image/jpeg") + expect(response.image?.data).toBeInstanceOf(Uint8Array) + if (!(response.image?.data instanceof Uint8Array)) throw new Error("Expected owned Google image bytes") + expect(dimensions(response.image.data)).toEqual({ width: 1024, height: 1024 }) + }), + ) +}) diff --git a/packages/ai/test/provider/google-vertex.test.ts b/packages/ai/test/provider/google-vertex.test.ts new file mode 100644 index 000000000000..395d983ffe39 --- /dev/null +++ b/packages/ai/test/provider/google-vertex.test.ts @@ -0,0 +1,246 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { HttpClientRequest } from "effect/unstable/http" +import { LLM } from "../../src" +import { GoogleVertex, GoogleVertexChat, GoogleVertexMessages, GoogleVertexResponses } from "../../src/providers" +import { LLMClient } from "../../src/route" +import { it } from "../lib/effect" +import { dynamicResponse } from "../lib/http" +import { deltaChunk, finishChunk } from "../lib/openai-chunks" +import { sseEvents } from "../lib/sse" + +describe("Google Vertex providers", () => { + it.effect("sends Gemini requests to the global Vertex endpoint", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLM.request({ + model: GoogleVertex.configure({ + accessToken: "vertex-token", + location: "global", + project: "vertex-project", + }).model("gemini-3.5-flash"), + prompt: "Say hello.", + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.url).toBe( + "https://aiplatform.googleapis.com/v1beta1/projects/vertex-project/locations/global/publishers/google/models/gemini-3.5-flash:streamGenerateContent?alt=sse", + ) + expect(request.headers.get("authorization")).toBe("Bearer vertex-token") + expect(yield* Effect.promise(() => request.json())).toMatchObject({ + contents: [{ role: "user", parts: [{ text: "Say hello." }] }], + }) + return input.respond( + sseEvents({ + candidates: [ + { + content: { role: "model", parts: [{ text: "Hello." }] }, + finishReason: "STOP", + }, + ], + }), + { headers: { "content-type": "text/event-stream" } }, + ) + }), + ), + ), + ) + + expect(response.text).toBe("Hello.") + }), + ) + + it.effect("projects Anthropic Messages onto the Vertex raw-predict API", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLM.request({ + model: GoogleVertexMessages.configure({ + accessToken: "vertex-token", + location: "eu", + project: "vertex-project", + }).model("claude-sonnet-4-6"), + prompt: "Say hello.", + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.url).toBe( + "https://aiplatform.eu.rep.googleapis.com/v1/projects/vertex-project/locations/eu/publishers/anthropic/models/claude-sonnet-4-6:streamRawPredict", + ) + expect(request.headers.get("authorization")).toBe("Bearer vertex-token") + expect(request.headers.get("anthropic-version")).toBeNull() + const body = yield* Effect.promise(() => request.json()) + expect(body).toMatchObject({ + anthropic_version: "vertex-2023-10-16", + messages: [{ role: "user", content: [{ type: "text", text: "Say hello." }] }], + stream: true, + }) + expect(body).not.toHaveProperty("model") + return input.respond( + sseEvents( + { type: "content_block_start", index: 0, content_block: { type: "text", text: "" } }, + { type: "content_block_delta", index: 0, delta: { type: "text_delta", text: "Hello." } }, + { type: "content_block_stop", index: 0 }, + { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 2 } }, + { type: "message_stop" }, + ), + { headers: { "content-type": "text/event-stream" } }, + ) + }), + ), + ), + ) + + expect(response.text).toBe("Hello.") + }), + ) + + it.effect("sends MaaS requests through Vertex Chat Completions", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLM.request({ + model: GoogleVertexChat.configure({ + accessToken: "vertex-token", + location: "global", + project: "vertex-project", + }).model("deepseek-ai/deepseek-v3.2-maas"), + prompt: "Say hello.", + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.url).toBe( + "https://aiplatform.googleapis.com/v1/projects/vertex-project/locations/global/endpoints/openapi/chat/completions", + ) + expect(request.headers.get("authorization")).toBe("Bearer vertex-token") + expect(yield* Effect.promise(() => request.json())).toMatchObject({ + model: "deepseek-ai/deepseek-v3.2-maas", + messages: [{ role: "user", content: "Say hello." }], + stream: true, + stream_options: { include_usage: true }, + }) + return input.respond(sseEvents(deltaChunk({ content: "Hello." }), finishChunk("stop")), { + headers: { "content-type": "text/event-stream" }, + }) + }), + ), + ), + ) + + expect(response.text).toBe("Hello.") + }), + ) + + it.effect("sends Grok requests through Vertex Responses", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLM.request({ + model: GoogleVertexResponses.configure({ + accessToken: "vertex-token", + location: "global", + project: "vertex-project", + }).model("xai/grok-4.20-reasoning"), + prompt: "Say hello.", + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.url).toBe( + "https://aiplatform.googleapis.com/v1/projects/vertex-project/locations/global/endpoints/openapi/responses", + ) + expect(request.headers.get("authorization")).toBe("Bearer vertex-token") + expect(yield* Effect.promise(() => request.json())).toMatchObject({ + model: "xai/grok-4.20-reasoning", + input: [{ role: "user", content: [{ type: "input_text", text: "Say hello." }] }], + store: false, + stream: true, + }) + return input.respond( + sseEvents( + { type: "response.output_text.delta", item_id: "msg_1", delta: "Hello." }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + { headers: { "content-type": "text/event-stream" } }, + ) + }), + ), + ), + ) + + expect(response.text).toBe("Hello.") + }), + ) + + it.effect("protects the Vertex Messages API version from body overlays", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + model: GoogleVertexMessages.configure({ + accessToken: "vertex-token", + http: { body: { anthropic_version: "wrong" } }, + project: "vertex-project", + }).model("claude-sonnet-4-6"), + prompt: "Say hello.", + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("http.body cannot overlay protocol-owned field(s): anthropic_version") + }), + ) + + it.effect("routes tuned Gemini models through their deployed endpoint", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLM.request({ + model: GoogleVertex.configure({ + accessToken: "vertex-token", + location: "us-central1", + project: "vertex-project", + }).model("endpoints/1234567890"), + prompt: "Say hello.", + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.url).toBe( + "https://us-central1-aiplatform.googleapis.com/v1beta1/projects/vertex-project/locations/us-central1/endpoints/1234567890:streamGenerateContent?alt=sse", + ) + return input.respond( + sseEvents({ + candidates: [ + { + content: { role: "model", parts: [{ text: "Hello." }] }, + finishReason: "STOP", + }, + ], + }), + { headers: { "content-type": "text/event-stream" } }, + ) + }), + ), + ), + ) + + expect(response.text).toBe("Hello.") + }), + ) + + it.effect("rejects tuned Gemini models in express mode", () => + Effect.sync(() => { + expect(() => GoogleVertex.configure({ apiKey: "fixture" }).model("endpoints/1234567890")).toThrow( + "Google Vertex tuned models do not support Express Mode API keys", + ) + }), + ) +}) diff --git a/packages/ai/test/provider/openai-chat-reasoning.recorded.test.ts b/packages/ai/test/provider/openai-chat-reasoning.recorded.test.ts new file mode 100644 index 000000000000..a8b40346cf20 --- /dev/null +++ b/packages/ai/test/provider/openai-chat-reasoning.recorded.test.ts @@ -0,0 +1,148 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { LLM, LLMEvent, LLMResponse, Model } from "../../src" +import { OpenAIChat } from "../../src/protocols/openai-chat" +import * as OpenAICompatible from "../../src/providers/openai-compatible" +import * as OpenRouter from "../../src/providers/openrouter" +import { LLMClient } from "../../src/route" +import { recordedTests } from "../recorded-test" +import { expectWeatherToolLoop, goldenWeatherToolLoopRequest, runWeatherToolLoop } from "../recorded-scenarios" + +const cases = [ + { + name: "OpenRouter", + model: Model.update( + OpenRouter.configure({ + apiKey: process.env.OPENROUTER_API_KEY ?? "fixture", + providerOptions: { openrouter: { reasoning: { max_tokens: 1024 } } }, + }).model("anthropic/claude-sonnet-4.6"), + { compatibility: { reasoningField: "reasoning" } }, + ), + requires: ["OPENROUTER_API_KEY"], + cassette: "openrouter-reasoning", + structured: true, + }, + { + name: "Vercel AI Gateway", + model: Model.update( + OpenAICompatible.configure({ + provider: "vercel-ai-gateway", + baseURL: "https://ai-gateway.vercel.sh/v1", + apiKey: process.env.AI_GATEWAY_API_KEY ?? "fixture", + http: { body: { reasoning: { enabled: true, max_tokens: 1024 } } }, + }).model("anthropic/claude-sonnet-4.6"), + { compatibility: { reasoningField: "reasoning" } }, + ), + requires: ["AI_GATEWAY_API_KEY"], + cassette: "vercel-ai-gateway-reasoning", + structured: true, + }, +] as const + +for (const item of cases) { + const recorded = recordedTests({ + prefix: "openai-compatible-chat", + provider: item.model.provider, + protocol: "openai-chat", + requires: item.requires, + tags: ["reasoning"], + metadata: { model: item.model.id }, + }) + + describe(`${item.name} reasoning recorded`, () => { + recorded.effect.with( + "streams scalar reasoning", + { cassette: item.cassette }, + () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLM.request({ + model: item.model, + system: "Think through the arithmetic, then reply with only the final integer.", + prompt: "What is 173 multiplied by 219?", + generation: { maxTokens: 1536, temperature: 0 }, + }), + ) + + expect(response.text.replaceAll(",", "").trim()).toBe("37887") + expect(response.reasoning.length).toBeGreaterThan(0) + expect(response.events.some(LLMEvent.is.reasoningDelta)).toBe(true) + const metadata = response.message.content.find((part) => part.type === "reasoning")?.providerMetadata + expect(metadata?.openai?.reasoningField).toBe(item.structured ? "reasoning" : "reasoning_content") + expect(Array.isArray(metadata?.openai?.reasoningDetails)).toBe(item.structured) + if (!item.structured) return + const details = metadata?.openai?.reasoningDetails + if (!Array.isArray(details)) return + expect( + details.some( + (detail) => + typeof detail === "object" && + detail !== null && + "signature" in detail && + typeof detail.signature === "string" && + detail.signature.length > 0, + ), + ).toBe(true) + + const replay = yield* LLMClient.prepare( + LLM.request({ model: item.model, messages: [response.message] }), + ) + expect(replay.body.messages).toMatchObject([ + { role: "assistant", content: response.text, reasoning: response.reasoning }, + ]) + const replayDetails = + replay.body.messages[0]?.role === "assistant" ? replay.body.messages[0].reasoning_details : undefined + expect(Array.isArray(replayDetails)).toBe(true) + if (!Array.isArray(replayDetails)) return + expect(replayDetails).toEqual(details) + expect(replayDetails).toHaveLength(1) + expect(replayDetails[0]).toMatchObject({ + type: "reasoning.text", + text: response.reasoning, + signature: expect.any(String), + }) + }), + 30_000, + ) + + recorded.effect.with( + "continues signed reasoning through a tool loop", + { cassette: `${item.cassette}-tool-loop`, tags: ["continuation", "tool", "tool-loop"] }, + () => + Effect.gen(function* () { + const events = yield* runWeatherToolLoop( + goldenWeatherToolLoopRequest({ + id: `${item.cassette}-tool-loop`, + model: item.model, + maxTokens: 1536, + temperature: false, + }), + ) + + expectWeatherToolLoop(events) + expect( + LLMResponse.text({ + events: events.slice(events.findIndex(LLMEvent.is.stepFinish) + 1), + }).trim(), + ).toMatch(/^Paris is sunny\.?$/) + const details = events + .filter(LLMEvent.is.reasoningEnd) + .map((event) => event.providerMetadata?.openai?.reasoningDetails) + .find(Array.isArray) + expect(Array.isArray(details)).toBe(item.structured) + if (!item.structured || !Array.isArray(details)) return + expect( + details.some( + (detail) => + typeof detail === "object" && + detail !== null && + "signature" in detail && + typeof detail.signature === "string" && + detail.signature.length > 0, + ), + ).toBe(true) + }), + 60_000, + ) + }) +} diff --git a/packages/ai/test/provider/openai-chat.test.ts b/packages/ai/test/provider/openai-chat.test.ts new file mode 100644 index 000000000000..57ae8e865305 --- /dev/null +++ b/packages/ai/test/provider/openai-chat.test.ts @@ -0,0 +1,1217 @@ +import { describe, expect } from "bun:test" +import { Effect, Schema, Stream } from "effect" +import { HttpClientRequest } from "effect/unstable/http" +import { + HttpOptions, + LLM, + LLMError, + LLMEvent, + LLMRequest, + Message, + Model, + ToolCallPart, + ToolDefinition, + Usage, +} from "../../src" +import * as Azure from "../../src/providers/azure" +import * as OpenAI from "../../src/providers/openai" +import * as OpenAIChat from "../../src/protocols/openai-chat" +import { ProviderShared } from "../../src/protocols/shared" +import { Auth, LLMClient } from "../../src/route" +import { it } from "../lib/effect" +import { dynamicResponse, fixedResponse, truncatedStream } from "../lib/http" +import { deltaChunk, usageChunk } from "../lib/openai-chunks" +import { sseEvents } from "../lib/sse" + +const TargetJson = Schema.fromJsonString(Schema.Unknown) +const encodeJson = Schema.encodeSync(TargetJson) +const decodeJson = Schema.decodeUnknownSync(TargetJson) + +const model = OpenAIChat.route + .with({ endpoint: { baseURL: "https://api.openai.test/v1/" }, auth: Auth.bearer("test") }) + .model({ id: "gpt-4o-mini" }) + +const request = LLM.request({ + id: "req_1", + model, + system: "You are concise.", + prompt: "Say hello.", + generation: { maxTokens: 20, temperature: 0 }, +}) + +describe("OpenAI Chat route", () => { + it.effect("prepares OpenAI Chat payload", () => + Effect.gen(function* () { + // Pass the OpenAIChat payload type so `prepared.body` is statically + // typed to the route's native shape — the assertions below read field + // names without `unknown` casts. + const prepared = yield* LLMClient.prepare(request) + const _typed: { readonly model: string; readonly stream: true } = prepared.body + + expect(prepared.body).toEqual({ + model: "gpt-4o-mini", + messages: [ + { role: "system", content: "You are concise." }, + { role: "user", content: "Say hello." }, + ], + stream: true, + stream_options: { include_usage: true }, + max_tokens: 20, + temperature: 0, + }) + }), + ) + + it.effect("lowers chronological system updates to escaped user wrappers in order", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.user("Before."), + Message.system("Treat & data literally."), + Message.assistant("After."), + ], + }), + ) + + expect(prepared.body.messages).toEqual([ + { + role: "user", + content: "Before.\n\nTreat <admin> & data literally.\n", + }, + { role: "assistant", content: "After." }, + ]) + }), + ) + + it.effect("replays canonical reasoning as OpenAI-compatible reasoning_content", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ + { type: "reasoning", text: "thinking" }, + { type: "text", text: "Hello" }, + ]), + ], + }), + ) + + expect(prepared.body.messages).toEqual([{ role: "assistant", content: "Hello", reasoning_content: "thinking" }]) + }), + ) + + it.effect("writes reasoning to a configured custom field on every assistant message", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: Model.update(model, { compatibility: { reasoningField: "vendor_reasoning" } }), + messages: [ + Message.assistant([ + { + type: "reasoning", + text: "thinking", + providerMetadata: { openai: { reasoningField: "reasoning" } }, + }, + { type: "text", text: "Hello" }, + ]), + Message.assistant("Done"), + ], + }), + ) + + expect(prepared.body.messages).toEqual([ + { role: "assistant", content: "Hello", vendor_reasoning: "thinking" }, + { role: "assistant", content: "Done", vendor_reasoning: "" }, + ]) + }), + ) + + it.effect("rejects reasoning fields that conflict with assistant message fields", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + model: Model.update(model, { compatibility: { reasoningField: "content" } }), + messages: [Message.assistant([{ type: "reasoning", text: "thinking" }])], + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("reserved field content") + }), + ) + + it.effect("maps OpenAI provider options to Chat options", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: OpenAI.configure({ baseURL: "https://api.openai.test/v1/", apiKey: "test" }).chat("gpt-4o-mini"), + prompt: "think", + providerOptions: { openai: { reasoningEffort: "max" } }, + }), + ) + + expect(prepared.body.store).toBe(false) + expect(prepared.body.reasoning_effort).toBe("max") + }), + ) + + it.effect("passes through custom OpenAI-compatible reasoning effort strings", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + prompt: "think", + providerOptions: { openai: { reasoningEffort: "experimental" } }, + }), + ) + + expect(prepared.body.reasoning_effort).toBe("experimental") + }), + ) + + it.effect("adds native query params to the Chat Completions URL", () => + LLMClient.generate( + LLMRequest.update(request, { + model: Model.update(model, { route: model.route.with({ endpoint: { query: { "api-version": "v1" } } }) }), + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.url).toBe("https://api.openai.test/v1/chat/completions?api-version=v1") + return input.respond(sseEvents(deltaChunk({}, "stop")), { + headers: { "content-type": "text/event-stream" }, + }) + }), + ), + ), + ), + ) + + it.effect("uses Azure api-key header for static OpenAI Chat keys", () => + LLMClient.generate( + LLMRequest.update(request, { + model: Azure.configure({ + baseURL: "https://opencode-test.openai.azure.com/openai/v1/", + apiKey: "azure-key", + headers: { authorization: "Bearer stale" }, + }).chat("gpt-4o-mini"), + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.url).toBe("https://opencode-test.openai.azure.com/openai/v1/chat/completions?api-version=v1") + expect(web.headers.get("api-key")).toBe("azure-key") + expect(web.headers.get("authorization")).toBeNull() + return input.respond(sseEvents(deltaChunk({}, "stop")), { + headers: { "content-type": "text/event-stream" }, + }) + }), + ), + ), + ), + ) + + it.effect("applies serializable HTTP overlays after payload lowering", () => + LLMClient.generate( + LLMRequest.update(request, { + model: model.route + .with({ auth: Auth.bearer("fresh-key"), headers: { authorization: "Bearer stale" } }) + .model({ id: model.id }), + http: HttpOptions.make({ + body: { metadata: { source: "test" } }, + headers: { authorization: "Bearer request", "x-custom": "yes" }, + query: { debug: "1" }, + }), + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.url).toBe("https://api.openai.test/v1/chat/completions?debug=1") + expect(web.headers.get("authorization")).toBe("Bearer fresh-key") + expect(web.headers.get("x-custom")).toBe("yes") + expect(decodeJson(input.text)).toMatchObject({ + stream: true, + stream_options: { include_usage: true }, + metadata: { source: "test" }, + }) + return input.respond(sseEvents(deltaChunk({}, "stop")), { + headers: { "content-type": "text/event-stream" }, + }) + }), + ), + ), + ), + ) + + it.effect("prepares assistant tool-call and tool-result messages", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result", + model, + messages: [ + Message.user("What is the weather?"), + Message.assistant([ToolCallPart.make({ id: "call_1", name: "lookup", input: { query: "weather" } })]), + Message.tool({ id: "call_1", name: "lookup", result: { forecast: "sunny" } }), + ], + }), + ) + + expect(prepared.body).toEqual({ + model: "gpt-4o-mini", + messages: [ + { role: "user", content: "What is the weather?" }, + { + role: "assistant", + content: null, + tool_calls: [ + { + id: "call_1", + type: "function", + function: { name: "lookup", arguments: encodeJson({ query: "weather" }) }, + }, + ], + }, + { role: "tool", tool_call_id: "call_1", content: encodeJson({ forecast: "sunny" }) }, + ], + stream: true, + stream_options: { include_usage: true }, + }) + }), + ) + + it.effect("preserves structured tool errors for the model", () => + Effect.gen(function* () { + const error = { error: { type: "unknown", message: "Tool execution interrupted" } } + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "bash", input: {} })]), + Message.tool({ id: "call_1", name: "bash", resultType: "error", result: error }), + ], + }), + ) + + expect(prepared.body.messages.at(-1)).toEqual({ + role: "tool", + tool_call_id: "call_1", + content: ProviderShared.encodeJson(error), + }) + }), + ) + + it.effect("continues image tool results as vision input without base64 text", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_image", name: "read", input: { path: "pixel.png" } })]), + Message.tool({ + id: "call_image", + name: "read", + result: { + type: "content", + value: [ + { type: "text", text: "Image read successfully" }, + { type: "file", uri: "data:image/png;base64,AAECAw==", mime: "image/png", name: "pixel.png" }, + ], + }, + }), + ], + }), + ) + + expect(prepared.body.messages).toEqual([ + { + role: "assistant", + content: null, + tool_calls: [ + { + id: "call_image", + type: "function", + function: { name: "read", arguments: encodeJson({ path: "pixel.png" }) }, + }, + ], + }, + { role: "tool", tool_call_id: "call_image", content: "Image read successfully" }, + { + role: "user", + content: [{ type: "image_url", image_url: { url: "data:image/png;base64,AAECAw==" } }], + }, + ]) + expect(JSON.stringify(prepared.body.messages)).not.toContain('"content":"AAECAw=="') + }), + ) + + it.effect("orders parallel tool responses before one aggregated vision message", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ + ToolCallPart.make({ id: "call_1", name: "read", input: {} }), + ToolCallPart.make({ id: "call_2", name: "read", input: {} }), + ]), + Message.make({ + role: "tool", + content: [ + { + type: "tool-result", + id: "call_1", + name: "read", + result: { + type: "content", + value: [{ type: "file", uri: "data:image/png;base64,AAEC", mime: "image/png" }], + }, + }, + { + type: "tool-result", + id: "call_2", + name: "read", + result: { + type: "content", + value: [{ type: "file", uri: "data:image/jpeg;base64,/9j/", mime: "image/jpeg" }], + }, + }, + ], + }), + ], + }), + ) + expect(prepared.body.messages.slice(1)).toEqual([ + { role: "tool", tool_call_id: "call_1", content: "" }, + { role: "tool", tool_call_id: "call_2", content: "" }, + { + role: "user", + content: [ + { type: "image_url", image_url: { url: "data:image/png;base64,AAEC" } }, + { type: "image_url", image_url: { url: "data:image/jpeg;base64,/9j/" } }, + ], + }, + ]) + }), + ) + + it.effect("aggregates consecutive tool images with a following system update", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.tool({ + id: "call_1", + name: "read", + result: { + type: "content", + value: [{ type: "file", uri: "data:image/png;base64,AAEC", mime: "image/png" }], + }, + }), + Message.tool({ + id: "call_2", + name: "read", + result: { + type: "content", + value: [{ type: "file", uri: "data:image/webp;base64,UklG", mime: "image/webp" }], + }, + }), + Message.system("Inspect both images."), + ], + }), + ) + expect(prepared.body.messages).toEqual([ + { role: "tool", tool_call_id: "call_1", content: "" }, + { role: "tool", tool_call_id: "call_2", content: "" }, + { + role: "user", + content: [ + { type: "image_url", image_url: { url: "data:image/png;base64,AAEC" } }, + { type: "image_url", image_url: { url: "data:image/webp;base64,UklG" } }, + { type: "text", text: "\nInspect both images.\n" }, + ], + }, + ]) + }), + ) + + it.effect("appends system updates without replacing multipart user content", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.user({ type: "media", mediaType: "image/png", data: "AAEC" }), + Message.system("Keep the image."), + ], + }), + ) + expect(prepared.body.messages).toEqual([ + { + role: "user", + content: [ + { type: "image_url", image_url: { url: "data:image/png;base64,AAEC" } }, + { type: "text", text: "\nKeep the image.\n" }, + ], + }, + ]) + }), + ) + + for (const [name, media] of [ + ["mismatched data URL MIME", { mediaType: "image/png", data: "data:image/jpeg;base64,/9j/" }], + ["malformed base64", { mediaType: "image/png", data: "not-base64" }], + ["unsupported SVG", { mediaType: "image/svg+xml", data: "PHN2Zz4=" }], + ] as const) + it.effect(`rejects ${name}`, () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ model, messages: [Message.user({ type: "media", ...media })] }), + ).pipe(Effect.flip) + expect(error.message).toMatch(/does not support|does not match|valid base64/) + }), + ) + + it.effect("rejects oversized image input", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.user({ + type: "media", + mediaType: "image/png", + data: "A".repeat(ProviderShared.MAX_MEDIA_ENCODED_BYTES + 4), + }), + ], + }), + ).pipe(Effect.flip) + expect(error.message).toContain("encoded limit") + }), + ) + + it.effect("prepares raw and data URL image media as vision input", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_media", + model, + messages: [ + Message.user([ + { type: "media", mediaType: "image/png", data: "AAECAw==" }, + { type: "media", mediaType: "image/jpeg", data: "data:image/jpeg;base64,/9j/" }, + ]), + ], + }), + ) + + expect(prepared.body.messages).toEqual([ + { + role: "user", + content: [ + { type: "image_url", image_url: { url: "data:image/png;base64,AAECAw==" } }, + { type: "image_url", image_url: { url: "data:image/jpeg;base64,/9j/" } }, + ], + }, + ]) + }), + ) + + it.effect("lowers reasoning-only assistant history", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_reasoning", + model, + messages: [Message.assistant({ type: "reasoning", text: "hidden" })], + }), + ) + + expect(prepared.body.messages).toEqual([{ role: "assistant", content: null, reasoning_content: "hidden" }]) + }), + ) + + it.effect("parses text and usage stream fixtures", () => + Effect.gen(function* () { + const body = sseEvents( + deltaChunk({ role: "assistant", content: "Hello" }), + deltaChunk({ content: "!" }), + deltaChunk({}, "stop"), + usageChunk({ + prompt_tokens: 5, + completion_tokens: 2, + total_tokens: 7, + prompt_tokens_details: { cached_tokens: 1, cache_write_tokens: 2 }, + completion_tokens_details: { reasoning_tokens: 0 }, + }), + ) + const response = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body))) + const usage = new Usage({ + inputTokens: 5, + outputTokens: 2, + nonCachedInputTokens: 2, + cacheReadInputTokens: 1, + cacheWriteInputTokens: 2, + reasoningTokens: 0, + totalTokens: 7, + providerMetadata: { + openai: { + prompt_tokens: 5, + completion_tokens: 2, + total_tokens: 7, + prompt_tokens_details: { cached_tokens: 1, cache_write_tokens: 2 }, + completion_tokens_details: { reasoning_tokens: 0 }, + }, + }, + }) + + expect(response.text).toBe("Hello!") + expect(response.events).toEqual([ + { type: "step-start", index: 0 }, + { type: "text-start", id: "text-0" }, + { type: "text-delta", id: "text-0", text: "Hello" }, + { type: "text-delta", id: "text-0", text: "!" }, + { type: "text-end", id: "text-0" }, + { + type: "step-finish", + index: 0, + reason: { normalized: "stop", raw: "stop" }, + usage, + providerMetadata: undefined, + }, + { + type: "finish", + reason: { normalized: "stop", raw: "stop" }, + usage, + }, + ]) + }), + ) + + it.effect("parses and replays OpenAI-compatible reasoning fields", () => + Effect.gen(function* () { + const fields = ["reasoning_content", "reasoning", "reasoning_text"] as const + for (const field of fields) { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { [field]: "thinking" } }] }, + { choices: [{ delta: { content: "Hello" } }] }, + { choices: [{ delta: {}, finish_reason: "stop" }] }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("thinking") + expect(response.text).toBe("Hello") + expect(response.message.content.find((part) => part.type === "reasoning")?.providerMetadata).toEqual({ + openai: { reasoningField: field }, + }) + + const replay = yield* LLMClient.prepare( + LLM.request({ model, messages: [response.message] }), + ) + expect(replay.body.messages).toEqual([{ role: "assistant", content: "Hello", [field]: "thinking" }]) + } + }), + ) + + it.effect("parses and replays a configured custom reasoning field", () => + Effect.gen(function* () { + const custom = Model.update(model, { compatibility: { reasoningField: "vendor_reasoning" } }) + const response = yield* LLMClient.generate(LLMRequest.update(request, { model: custom })).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { vendor_reasoning: "thinking" } }] }, + { choices: [{ delta: { content: "Hello" } }] }, + { choices: [{ delta: {}, finish_reason: "stop" }] }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("thinking") + expect(response.message.content.find((part) => part.type === "reasoning")?.providerMetadata).toEqual({ + openai: { reasoningField: "vendor_reasoning" }, + }) + + const replay = yield* LLMClient.prepare( + LLM.request({ model: custom, messages: [response.message] }), + ) + expect(replay.body.messages).toEqual([{ role: "assistant", content: "Hello", vendor_reasoning: "thinking" }]) + }), + ) + + it.effect("preserves and replays reasoning details alongside scalar reasoning", () => + Effect.gen(function* () { + const details = [ + { type: "reasoning.text", text: "thinking", format: "anthropic-claude-v1", index: 0 }, + { type: "reasoning.encrypted", data: "opaque", format: "anthropic-claude-v1", index: 1 }, + ] + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { reasoning: "thinking", reasoning_details: [details[0]] } }] }, + { choices: [{ delta: { reasoning_details: [details[1]] } }] }, + { + choices: [ + { + delta: { + tool_calls: [ + { index: 0, id: "call_1", function: { name: "lookup", arguments: '{"query":"weather"}' } }, + ], + }, + finish_reason: "tool_calls", + }, + ], + }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("thinking") + expect(response.message.content.find((part) => part.type === "reasoning")?.providerMetadata).toEqual({ + openai: { reasoningField: "reasoning", reasoningDetails: details }, + }) + + const replay = yield* LLMClient.prepare( + LLM.request({ model, messages: [response.message] }), + ) + expect(replay.body.messages).toEqual([ + { + role: "assistant", + content: null, + reasoning: "thinking", + reasoning_details: details, + tool_calls: [ + { + id: "call_1", + type: "function", + function: { name: "lookup", arguments: '{"query":"weather"}' }, + }, + ], + }, + ]) + }), + ) + + it.effect("uses reasoning details as display fallback without inventing a scalar replay field", () => + Effect.gen(function* () { + const details = [ + { type: "reasoning.summary", summary: "thinking", format: "openai-responses-v1", index: 0 }, + { type: "reasoning.encrypted", data: "opaque", format: "openai-responses-v1", index: 1 }, + ] + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { reasoning_details: [details[0]] } }] }, + { choices: [{ delta: { reasoning_details: [details[1]] } }] }, + { choices: [{ delta: { content: "Hello" } }] }, + { choices: [{ delta: {}, finish_reason: "stop" }] }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("thinking") + expect(response.message.content.find((part) => part.type === "reasoning")?.providerMetadata).toEqual({ + openai: { reasoningDetails: details }, + }) + + const replay = yield* LLMClient.prepare( + LLM.request({ model, messages: [response.message] }), + ) + expect(replay.body.messages).toEqual([{ role: "assistant", content: "Hello", reasoning_details: details }]) + }), + ) + + it.effect("preserves unknown reasoning details while using scalar display text", () => + Effect.gen(function* () { + const details = [{ type: "reasoning.future", format: "provider-v2", state: { opaque: true } }] + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { reasoning: "thinking", reasoning_details: details } }] }, + { choices: [{ delta: { content: "Hello" } }] }, + { choices: [{ delta: {}, finish_reason: "stop" }] }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("thinking") + expect(response.message.content.find((part) => part.type === "reasoning")?.providerMetadata).toEqual({ + openai: { reasoningField: "reasoning", reasoningDetails: details }, + }) + + const replay = yield* LLMClient.prepare( + LLM.request({ model, messages: [response.message] }), + ) + expect(replay.body.messages).toEqual([ + { role: "assistant", content: "Hello", reasoning: "thinking", reasoning_details: details }, + ]) + }), + ) + + it.effect("uses scalar display text for signature-only reasoning details", () => + Effect.gen(function* () { + const details = [{ type: "reasoning.text", signature: "signed", format: "provider-v2", index: 0 }] + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { reasoning: "thinking", reasoning_details: details } }] }, + { choices: [{ delta: { content: "Hello" } }] }, + { choices: [{ delta: {}, finish_reason: "stop" }] }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("thinking") + expect(response.message.content.find((part) => part.type === "reasoning")?.providerMetadata).toEqual({ + openai: { reasoningField: "reasoning", reasoningDetails: details }, + }) + }), + ) + + it.effect("ignores scalar reasoning after content starts", () => + Effect.gen(function* () { + const details = [{ type: "reasoning.text", text: "detail", format: "unknown", index: 0 }] + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { reasoning_details: details } }] }, + { choices: [{ delta: { content: "Hello" } }] }, + { choices: [{ delta: { reasoning: "scalar" } }] }, + { choices: [{ delta: {}, finish_reason: "stop" }] }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("detail") + expect(response.events.filter(LLMEvent.is.reasoningStart)).toHaveLength(1) + expect(response.events.filter(LLMEvent.is.reasoningEnd)).toHaveLength(1) + expect(response.message.content.find((part) => part.type === "reasoning")?.providerMetadata).toEqual({ + openai: { reasoningDetails: details }, + }) + }), + ) + + it.effect("preserves an explicitly empty reasoning details array", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { reasoning_details: [] } }] }, + { choices: [{ delta: { content: "Hello" } }] }, + { choices: [{ delta: {}, finish_reason: "stop" }] }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("") + expect(response.message.content.find((part) => part.type === "reasoning")?.providerMetadata).toEqual({ + openai: { reasoningDetails: [] }, + }) + + const replay = yield* LLMClient.prepare( + LLM.request({ model, messages: [response.message] }), + ) + expect(replay.body.messages).toEqual([{ role: "assistant", content: "Hello", reasoning_details: [] }]) + }), + ) + + it.effect("attaches signature-only details that arrive after content", () => + Effect.gen(function* () { + const details = [ + { type: "reasoning.text", text: "thinking", format: "anthropic-claude-v1", index: 0 }, + { type: "reasoning.text", signature: "signed", format: "anthropic-claude-v1", index: 0 }, + ] + const merged = [ + { + type: "reasoning.text", + text: "thinking", + signature: "signed", + format: "anthropic-claude-v1", + index: 0, + }, + ] + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { reasoning: "thinking", reasoning_details: [details[0]] } }] }, + { choices: [{ delta: { content: "Hello" } }] }, + { choices: [{ delta: { reasoning_details: [details[1]] } }] }, + { choices: [{ delta: {}, finish_reason: "stop" }] }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("thinking") + expect(response.message.content.filter((part) => part.type === "reasoning")).toHaveLength(1) + expect(response.message.content.find((part) => part.type === "reasoning")?.providerMetadata).toEqual({ + openai: { reasoningField: "reasoning", reasoningDetails: merged }, + }) + expect(response.events.filter(LLMEvent.is.reasoningStart)).toHaveLength(1) + expect(response.events.filter(LLMEvent.is.reasoningDelta)).toHaveLength(1) + expect(response.events.filter(LLMEvent.is.reasoningEnd)).toHaveLength(1) + expect(response.events.filter(LLMEvent.is.reasoningEnd).at(-1)?.providerMetadata).toEqual({ + openai: { reasoningField: "reasoning", reasoningDetails: merged }, + }) + expect(response.events.findIndex(LLMEvent.is.reasoningEnd)).toBeLessThan( + response.events.findIndex(LLMEvent.is.textStart), + ) + + const replay = yield* LLMClient.prepare( + LLM.request({ model, messages: [response.message] }), + ) + expect(replay.body.messages).toEqual([ + { role: "assistant", content: "Hello", reasoning: "thinking", reasoning_details: merged }, + ]) + }), + ) + + it.effect("preserves metadata-only reasoning when the stream ends", () => + Effect.gen(function* () { + const details = [{ type: "reasoning.encrypted", data: "opaque", format: "openai-responses-v1", index: 0 }] + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { reasoning_details: details } }] }, + { choices: [{ delta: {}, finish_reason: "stop" }] }, + ), + ), + ), + ) + + expect(response.message.content).toEqual([ + { type: "reasoning", text: "", providerMetadata: { openai: { reasoningDetails: details } } }, + ]) + expect(response.events.filter(LLMEvent.is.reasoningStart)).toHaveLength(1) + expect(response.events.filter(LLMEvent.is.reasoningEnd)).toHaveLength(1) + + const replay = yield* LLMClient.prepare( + LLM.request({ model, messages: [response.message] }), + ) + expect(replay.body.messages).toEqual([{ role: "assistant", content: null, reasoning_details: details }]) + }), + ) + + it.effect("flushes details-only display reasoning when the stream ends", () => + Effect.gen(function* () { + const details = [{ type: "reasoning.summary", summary: "summary", format: "openai-responses-v1", index: 0 }] + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { choices: [{ delta: { reasoning_details: details } }] }, + { choices: [{ delta: {}, finish_reason: "stop" }] }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("summary") + expect(response.message.content).toEqual([ + { type: "reasoning", text: "summary", providerMetadata: { openai: { reasoningDetails: details } } }, + ]) + }), + ) + + it.effect("replays details from multiple reasoning parts in order", () => + Effect.gen(function* () { + const first = { type: "reasoning.text", text: "first", signature: "signed-0", index: 0 } + const second = { type: "reasoning.text", text: "second", signature: "signed-1", index: 1 } + const replay = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ + { + type: "reasoning", + text: "first", + providerMetadata: { openai: { reasoningDetails: [first] } }, + }, + { + type: "reasoning", + text: "second", + providerMetadata: { openai: { reasoningField: "reasoning", reasoningDetails: [second] } }, + }, + ]), + ], + }), + ) + + expect(replay.body.messages).toEqual([ + { role: "assistant", content: null, reasoning: "firstsecond", reasoning_details: [first, second] }, + ]) + }), + ) + + it.effect("retains scalar replay for mixed structured reasoning parts", () => + Effect.gen(function* () { + const detail = { type: "reasoning.encrypted", data: "opaque", index: 0 } + const replay = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ + { + type: "reasoning", + text: "A", + providerMetadata: { openai: { reasoningDetails: [detail] } }, + }, + { type: "reasoning", text: "B" }, + ]), + ], + }), + ) + + expect(replay.body.messages).toEqual([ + { role: "assistant", content: null, reasoning_content: "AB", reasoning_details: [detail] }, + ]) + }), + ) + + it.effect("replays native scalar reasoning alongside native details", () => + Effect.gen(function* () { + const details = [{ type: "reasoning.encrypted", data: "opaque", index: 0 }] + const replay = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.make({ + role: "assistant", + content: [{ type: "reasoning", text: "thinking" }], + native: { openaiCompatible: { reasoning_content: "thinking", reasoning_details: details } }, + }), + ], + }), + ) + + expect(replay.body.messages).toEqual([ + { role: "assistant", content: null, reasoning_content: "thinking", reasoning_details: details }, + ]) + }), + ) + + it.effect("assembles streamed tool call input", () => + Effect.gen(function* () { + const body = sseEvents( + deltaChunk({ + role: "assistant", + tool_calls: [{ index: 0, id: "call_1", function: { name: "lookup", arguments: '{"query"' } }], + }), + deltaChunk({ tool_calls: [{ index: 0, function: { arguments: ':"weather"}' } }] }), + deltaChunk({}, "tool_calls"), + ) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedResponse(body))) + + expect(response.events).toEqual([ + { type: "step-start", index: 0 }, + { type: "tool-input-start", id: "call_1", name: "lookup", providerMetadata: undefined }, + { type: "tool-input-delta", id: "call_1", name: "lookup", text: '{"query"' }, + { type: "tool-input-delta", id: "call_1", name: "lookup", text: ':"weather"}' }, + { type: "tool-input-end", id: "call_1", name: "lookup", providerMetadata: undefined }, + { + type: "tool-call", + id: "call_1", + name: "lookup", + input: { query: "weather" }, + providerExecuted: undefined, + providerMetadata: undefined, + }, + { + type: "step-finish", + index: 0, + reason: { normalized: "tool-calls", raw: "tool_calls" }, + usage: undefined, + providerMetadata: undefined, + }, + { type: "finish", reason: { normalized: "tool-calls", raw: "tool_calls" }, usage: undefined }, + ]) + }), + ) + + it.effect("ignores empty identity fields on later tool call deltas", () => + Effect.gen(function* () { + const body = sseEvents( + deltaChunk({ + tool_calls: [{ index: 0, id: "call_1", function: { name: "lookup", arguments: "{" } }], + }), + deltaChunk({ + tool_calls: [{ index: 0, id: "", function: { name: "", arguments: '\"query\":\"weather\"}' } }], + }), + deltaChunk({}, "tool_calls"), + ) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedResponse(body))) + + expect(response.toolCalls).toMatchObject([{ id: "call_1", name: "lookup", input: { query: "weather" } }]) + }), + ) + + it.effect("buffers tool call deltas until the function name arrives", () => + Effect.gen(function* () { + const body = sseEvents( + deltaChunk({ + tool_calls: [{ index: 0, id: "call_1", function: { arguments: "{" } }], + }), + deltaChunk({ + tool_calls: [{ index: 0, function: { name: "lookup", arguments: '\"query\":' } }], + }), + deltaChunk({ tool_calls: [{ index: 0, function: { arguments: '\"weather\"}' } }] }), + deltaChunk({}, "tool_calls"), + ) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedResponse(body))) + + expect(response.toolCalls).toMatchObject([{ id: "call_1", name: "lookup", input: { query: "weather" } }]) + }), + ) + + it.effect("fails when a buffered tool call never receives a function name", () => + Effect.gen(function* () { + const body = sseEvents( + deltaChunk({ + tool_calls: [{ index: 0, id: "call_1", function: { arguments: "{}" } }], + }), + deltaChunk({}, "tool_calls"), + ) + const error = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedResponse(body)), Effect.flip) + + expect(error.message).toContain("OpenAI Chat tool call delta is missing id or name") + }), + ) + + it.effect("fails a streamed tool call when the provider ends without a finish reason", () => + Effect.gen(function* () { + const body = sseEvents( + deltaChunk({ + role: "assistant", + tool_calls: [{ index: 0, id: "call_1", function: { name: "lookup", arguments: '{"query"' } }], + }), + deltaChunk({ tool_calls: [{ index: 0, function: { arguments: ':"weather"}' } }] }), + ) + const input = LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }) + const events: LLMEvent[] = [] + const streamError = yield* LLMClient.stream(input).pipe( + Stream.runForEach((event) => Effect.sync(() => events.push(event))), + Effect.flip, + Effect.provide(fixedResponse(body)), + ) + const error = yield* LLMClient.generate(input).pipe(Effect.provide(fixedResponse(body)), Effect.flip) + + expect(events).toEqual([ + { type: "step-start", index: 0 }, + { type: "tool-input-start", id: "call_1", name: "lookup", providerMetadata: undefined }, + { type: "tool-input-delta", id: "call_1", name: "lookup", text: '{"query"' }, + { type: "tool-input-delta", id: "call_1", name: "lookup", text: ':"weather"}' }, + ]) + expect(events.filter(LLMEvent.is.toolCall)).toEqual([]) + expect(streamError.reason).toMatchObject({ _tag: "InvalidProviderOutput" }) + expect(streamError.message).toContain("Provider stream ended without a terminal finish event") + expect(error.message).toContain("Provider stream ended without a terminal finish event") + }), + ) + + it.effect("fails on malformed stream events", () => + Effect.gen(function* () { + const body = sseEvents(deltaChunk({ content: 123 })) + const error = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body)), Effect.flip) + + expect(error.message).toContain("Invalid openai/openai-chat stream event") + }), + ) + + it.effect("surfaces transport errors that occur mid-stream", () => + Effect.gen(function* () { + const layer = truncatedStream([ + `data: ${JSON.stringify(deltaChunk({ role: "assistant", content: "Hello" }))}\n\n`, + ]) + const error = yield* LLMClient.generate(request).pipe(Effect.provide(layer), Effect.flip) + + expect(error.message).toContain("Failed to read openai/openai-chat stream") + }), + ) + + it.effect("fails HTTP provider errors before stream parsing", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse('{"error":{"message":"Bad request","type":"invalid_request_error"}}', { + status: 400, + headers: { "content-type": "application/json" }, + }), + ), + Effect.flip, + ) + + expect(error).toBeInstanceOf(LLMError) + expect(error.reason).toMatchObject({ _tag: "InvalidRequest" }) + expect(error.message).toContain("HTTP 400") + }), + ) + + it.effect("short-circuits the upstream stream when the consumer takes a prefix", () => + Effect.gen(function* () { + // The body has more chunks than we'll consume. If `Stream.take(1)` did + // not interrupt the upstream HTTP body the test would hang waiting for + // the rest of the stream to drain. + const body = sseEvents( + deltaChunk({ role: "assistant", content: "Hello" }), + deltaChunk({ content: " world" }), + deltaChunk({}, "stop"), + ) + + const events = Array.from( + yield* LLMClient.stream(request).pipe(Stream.take(1), Stream.runCollect, Effect.provide(fixedResponse(body))), + ) + expect(events.map((event) => event.type)).toEqual(["step-start"]) + }), + ) +}) diff --git a/packages/llm/test/provider/openai-compatible-chat.test.ts b/packages/ai/test/provider/openai-compatible-chat.test.ts similarity index 94% rename from packages/llm/test/provider/openai-compatible-chat.test.ts rename to packages/ai/test/provider/openai-compatible-chat.test.ts index 43ae283e9f7c..6565820af899 100644 --- a/packages/llm/test/provider/openai-compatible-chat.test.ts +++ b/packages/ai/test/provider/openai-compatible-chat.test.ts @@ -1,7 +1,7 @@ import { describe, expect } from "bun:test" import { Effect, Schema } from "effect" import { HttpClientRequest } from "effect/unstable/http" -import { LLM, Message, ToolCallPart } from "../../src" +import { LLM, LLMRequest, Message, ToolCallPart, ToolChoice, ToolDefinition } from "../../src" import { Auth, LLMClient } from "../../src/route" import * as OpenAICompatible from "../../src/providers/openai-compatible" import * as OpenAICompatibleChat from "../../src/protocols/openai-compatible-chat" @@ -53,9 +53,9 @@ describe("OpenAI-compatible Chat route", () => { it.effect("prepares generic Chat target", () => Effect.gen(function* () { const prepared = yield* LLMClient.prepare( - LLM.updateRequest(request, { - tools: [{ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } }], - toolChoice: { type: "required" }, + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + toolChoice: ToolChoice.make({ type: "required" }), }), ) @@ -232,7 +232,10 @@ describe("OpenAI-compatible Chat route", () => { expect(response.text).toBe("Hello!") expect(response.usage).toMatchObject({ inputTokens: 5, outputTokens: 2, totalTokens: 7 }) - expect(response.events.at(-1)).toMatchObject({ type: "finish", reason: "stop" }) + expect(response.events.at(-1)).toMatchObject({ + type: "finish", + reason: { normalized: "stop", raw: "stop" }, + }) }), ) }) diff --git a/packages/ai/test/provider/openai-compatible-responses.test.ts b/packages/ai/test/provider/openai-compatible-responses.test.ts new file mode 100644 index 000000000000..f6591f50d2ce --- /dev/null +++ b/packages/ai/test/provider/openai-compatible-responses.test.ts @@ -0,0 +1,141 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { LLM, LLMEvent, Message } from "../../src" +import { configure } from "../../src/providers/openai-compatible-responses" +import { OpenAI } from "../../src/providers" +import { OpenResponses } from "../../src/protocols/open-responses" +import { OpenAICompatibleResponses } from "../../src/protocols/openai-compatible-responses" +import { OpenAIResponses } from "../../src/protocols/openai-responses" +import { LLMClient } from "../../src/route" +import { it } from "../lib/effect" +import { fixedResponse } from "../lib/http" +import { sseEvents } from "../lib/sse" + +describe("Open Responses-compatible route", () => { + it.effect("uses the Open Responses baseline for a configured deployment", () => + Effect.gen(function* () { + expect(OpenAICompatibleResponses.route.body).toBe(OpenResponses.protocol.body) + expect(OpenAICompatibleResponses.route.transport).toBe(OpenResponses.httpTransport) + expect(OpenAICompatibleResponses.route.body).not.toBe(OpenAIResponses.protocol.body) + + const model = configure({ + apiKey: "test-key", + baseURL: "https://responses.example.test/v1", + provider: "example", + }).model("example-model") + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + system: "You are concise.", + prompt: "Say hello.", + }), + ) + + expect(prepared.route).toBe("openai-compatible-responses") + expect(prepared.protocol).toBe("open-responses") + expect(prepared.model).toMatchObject({ + id: "example-model", + provider: "example", + route: { + id: "openai-compatible-responses", + endpoint: { + baseURL: "https://responses.example.test/v1", + path: "/responses", + }, + }, + }) + expect(prepared.body).toEqual({ + model: "example-model", + input: [ + { role: "system", content: "You are concise." }, + { role: "user", content: [{ type: "input_text", text: "Say hello." }] }, + ], + stream: true, + }) + }), + ) + + it.effect("rejects OpenAI-native tools", () => + Effect.gen(function* () { + const model = configure({ + apiKey: "test-key", + baseURL: "https://responses.example.test/v1", + }).model("example-model") + const error = yield* LLMClient.prepare( + LLM.request({ model, prompt: "Draw.", tools: [OpenAI.imageGeneration()] }), + ).pipe(Effect.flip) + + expect(error.reason._tag).toBe("InvalidRequest") + expect(error.message).toContain("Open Responses does not support provider-native tool image_generation") + }), + ) + + it.effect("omits OpenAI-only nullable phases from the Open Responses baseline", () => + Effect.gen(function* () { + const model = configure({ + apiKey: "test-key", + baseURL: "https://responses.example.test/v1", + }).model("example-model") + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant({ + type: "text", + text: "Unclassified.", + providerMetadata: { openresponses: { phase: null } }, + }), + ], + }), + ) + + expect(prepared.body).toMatchObject({ + input: [{ role: "assistant", content: [{ type: "output_text", text: "Unclassified." }] }], + }) + }), + ) + + it.effect("reads standard options from the Open Responses namespace", () => + Effect.gen(function* () { + const model = configure({ + apiKey: "test-key", + baseURL: "https://responses.example.test/v1", + providerOptions: { openresponses: { reasoningEffort: "low", store: true } }, + }).model("example-model") + const prepared = yield* LLMClient.prepare(LLM.request({ model, prompt: "Think." })) + + expect(prepared.body).toMatchObject({ + reasoning: { effort: "low" }, + store: true, + }) + }), + ) + + it.effect("does not interpret OpenAI hosted-tool items", () => + Effect.gen(function* () { + const model = configure({ + apiKey: "test-key", + baseURL: "https://responses.example.test/v1", + provider: "example", + }).model("example-model") + const response = yield* LLMClient.generate(LLM.request({ model, prompt: "Search." })).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { + type: "response.output_item.done", + item: { type: "web_search_call", id: "ws_1", status: "completed", action: { query: "news" } }, + }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + ), + ), + ) + + expect(response.toolCalls).toEqual([]) + expect(response.events.find(LLMEvent.is.finish)).toMatchObject({ + providerMetadata: { openresponses: { responseId: "resp_1" } }, + }) + }), + ) +}) diff --git a/packages/ai/test/provider/openai-images.recorded.test.ts b/packages/ai/test/provider/openai-images.recorded.test.ts new file mode 100644 index 000000000000..8fa2e7546ed8 --- /dev/null +++ b/packages/ai/test/provider/openai-images.recorded.test.ts @@ -0,0 +1,62 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { Image, ImageInput } from "../../src" +import { OpenAI } from "../../src/providers" +import { dimensions } from "../lib/image" +import { recordedTests } from "../recorded-test" + +const model = OpenAI.configure({ + apiKey: process.env.OPENAI_API_KEY ?? "fixture", +}).image("gpt-image-1-mini") + +const recorded = recordedTests({ + prefix: "openai-images", + provider: "openai", + protocol: "openai-images", + requires: ["OPENAI_API_KEY"], +}) + +describe("OpenAI Images recorded", () => { + recorded.effect("generates an image", () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model, + prompt: "A simple flat black circle centered on a plain white background.", + options: { quality: "low", outputFormat: "jpeg", outputCompression: 10, size: "1024x1024" }, + }) + + expect(response.images).toHaveLength(1) + expect(response.image?.mediaType).toBe("image/jpeg") + expect(response.image?.data).toBeInstanceOf(Uint8Array) + expect(response.image?.data.length).toBeGreaterThan(0) + }), + ) + + recorded.effect.with( + "edits an image", + { + options: { + match: (incoming, recorded) => incoming.method === recorded.method && incoming.url === recorded.url, + }, + }, + () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model, + prompt: "Keep the simple shape and change it from black to bright green.", + images: [ + ImageInput.bytes( + yield* Effect.promise(() => Bun.file("test/fixtures/images/edit-source.jpg").bytes()), + "image/jpeg", + ), + ], + options: { quality: "low", outputFormat: "jpeg", outputCompression: 10, size: "1024x1024" }, + }) + + expect(response.image?.mediaType).toBe("image/jpeg") + expect(response.image?.data).toBeInstanceOf(Uint8Array) + if (!(response.image?.data instanceof Uint8Array)) throw new Error("Expected owned OpenAI image bytes") + expect(dimensions(response.image.data)).toEqual({ width: 1024, height: 1024 }) + }), + ) +}) diff --git a/packages/llm/test/provider/openai-responses-cache.recorded.test.ts b/packages/ai/test/provider/openai-responses-cache.recorded.test.ts similarity index 100% rename from packages/llm/test/provider/openai-responses-cache.recorded.test.ts rename to packages/ai/test/provider/openai-responses-cache.recorded.test.ts diff --git a/packages/ai/test/provider/openai-responses-images.recorded.test.ts b/packages/ai/test/provider/openai-responses-images.recorded.test.ts new file mode 100644 index 000000000000..41b9ab84d416 --- /dev/null +++ b/packages/ai/test/provider/openai-responses-images.recorded.test.ts @@ -0,0 +1,66 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { LLM, LLMEvent, Message } from "../../src" +import { OpenAI } from "../../src/providers" +import { recordedTests } from "../recorded-test" + +const openai = OpenAI.configure({ + apiKey: process.env.OPENAI_API_KEY ?? "fixture", +}) + +const recorded = recordedTests({ + prefix: "openai-responses-images", + provider: "openai", + protocol: "openai-responses", + requires: ["OPENAI_API_KEY"], +}) + +describe("OpenAI Responses image generation recorded", () => { + recorded.effect("generates and edits an image with the hosted tool", () => + Effect.gen(function* () { + const initial = Message.user("Generate a simple flat black triangle centered on a plain white background.") + const tools = [ + OpenAI.imageGeneration({ + action: "auto", + quality: "low", + size: "1024x1024", + outputFormat: "jpeg", + outputCompression: 10, + partialImages: 0, + }), + ] + const response = yield* LLM.generate( + LLM.request({ + model: openai.responses("gpt-5-mini"), + messages: [initial], + tools, + toolChoice: "image_generation", + }), + ) + + const result = response.events.find(LLMEvent.is.toolResult) + expect(result).toBeDefined() + expect(result?.providerExecuted).toBe(true) + expect(result?.result.type).toBe("content") + if (result?.result.type !== "content") return + expect(result.result.value).toHaveLength(1) + expect(result.result.value[0]?.type).toBe("file") + if (result.result.value[0]?.type !== "file") return + expect(result.result.value[0].mime).toBe("image/jpeg") + expect(result.result.value[0].uri.startsWith("data:image/jpeg;base64,")).toBe(true) + + const edited = yield* LLM.generate( + LLM.request({ + model: openai.responses("gpt-5-mini"), + messages: [initial, response.message, Message.user("Now make the triangle blue.")], + tools, + toolChoice: "image_generation", + }), + ) + const editedResult = edited.events.find(LLMEvent.is.toolResult) + expect(editedResult?.result.type).toBe("content") + if (editedResult?.result.type !== "content") return + expect(editedResult.result.value[0]?.type).toBe("file") + }), + ) +}) diff --git a/packages/ai/test/provider/openai-responses.test.ts b/packages/ai/test/provider/openai-responses.test.ts new file mode 100644 index 000000000000..a3d75a7eebf0 --- /dev/null +++ b/packages/ai/test/provider/openai-responses.test.ts @@ -0,0 +1,2046 @@ +import { describe, expect } from "bun:test" +import { ConfigProvider, Effect, Layer, Stream } from "effect" +import { Headers, HttpClientRequest } from "effect/unstable/http" +import { + LLM, + LLMError, + LLMEvent, + LLMRequest, + Message, + Model, + ToolCallPart, + ToolDefinition, + ToolResultPart, + Usage, +} from "../../src" +import { Auth, LLMClient, RequestExecutor, WebSocketExecutor } from "../../src/route" +import * as Azure from "../../src/providers/azure" +import * as OpenAI from "../../src/providers/openai" +import * as XAI from "../../src/providers/xai" +import * as OpenAIResponses from "../../src/protocols/openai-responses" +import * as ProviderShared from "../../src/protocols/shared" +import { continuationRequest, nativeOpenAIResponsesContinuation } from "../continuation-scenarios" +import { it } from "../lib/effect" +import { dynamicResponse, fixedResponse } from "../lib/http" +import { sseEvents } from "../lib/sse" + +const model = OpenAIResponses.route + .with({ endpoint: { baseURL: "https://api.openai.test/v1/" }, auth: Auth.bearer("test") }) + .model({ id: "gpt-4.1-mini" }) + +const xaiModel = XAI.configure({ apiKey: "test", baseURL: "https://api.x.ai/v1" }).responses("grok-4.5") + +const request = LLM.request({ + id: "req_1", + model, + system: "You are concise.", + prompt: "Say hello.", + generation: { maxTokens: 20, temperature: 0 }, +}) + +const configEnv = (env: Record) => Effect.provide(ConfigProvider.layer(ConfigProvider.fromEnv({ env }))) + +type OpenAIToolOutput = Extract< + OpenAIResponses.OpenAIResponsesBody["input"][number], + { readonly type: "function_call_output" } +> + +const expectToolOutput = (body: OpenAIResponses.OpenAIResponsesBody): OpenAIToolOutput => { + const output = body.input.find( + (item): item is OpenAIToolOutput => "type" in item && item.type === "function_call_output", + ) + expect(output).toBeDefined() + return output! +} + +describe("OpenAI Responses route", () => { + it.effect("prepares OpenAI Responses target", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare(request) + + expect(prepared.body).toEqual({ + model: "gpt-4.1-mini", + input: [ + { role: "system", content: "You are concise." }, + { role: "user", content: [{ type: "input_text", text: "Say hello." }] }, + ], + store: false, + stream: true, + max_output_tokens: 20, + temperature: 0, + }) + }), + ) + + it.effect("lowers the hosted OpenAI image generation tool", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + prompt: "Show me a rooftop garden.", + tools: [OpenAI.imageGeneration({ action: "generate", quality: "high", size: "1024x1024" })], + toolChoice: "image_generation", + }), + ) + + expect(prepared.body.tools).toEqual([ + { type: "image_generation", action: "generate", quality: "high", size: "1024x1024" }, + ]) + expect(prepared.body.tool_choice).toEqual({ type: "image_generation" }) + }), + ) + + it.effect("rejects invalid hosted image generation options locally", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + model, + prompt: "Show me a rooftop garden.", + tools: [OpenAI.imageGeneration({ outputCompression: -1, partialImages: 4, size: "bogus" })], + }), + ).pipe(Effect.flip) + + expect(error.reason._tag).toBe("InvalidRequest") + expect(error.message).toContain("image generation tool options are invalid") + }), + ) + + it.effect("lowers semantic service tier options", () => + Effect.gen(function* () { + const input = LLMRequest.update(request, { providerOptions: { openai: { serviceTier: "priority" } } }) + expect(input.providerOptions).toEqual({ openai: { serviceTier: "priority" } }) + const prepared = yield* LLMClient.prepare(input) + + expect(prepared.body).toMatchObject({ service_tier: "priority" }) + expect(prepared.body).not.toHaveProperty("serviceTier") + }), + ) + + it.effect("passes through custom OpenAI reasoning effort strings", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLMRequest.update(request, { providerOptions: { openai: { reasoningEffort: "experimental" } } }), + ) + + expect(prepared.body.reasoning).toEqual({ effort: "experimental" }) + }), + ) + + it.effect("omits unsupported semantic service tiers", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLMRequest.update(request, { providerOptions: { openai: { serviceTier: "unsupported" } } }), + ) + + expect(prepared.body).not.toHaveProperty("service_tier") + }), + ) + + it.effect("flattens top-level object unions in function schemas", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLMRequest.update(request, { + tools: [ + ToolDefinition.make({ + name: "read", + description: "Read a path or resource.", + inputSchema: { + type: "object", + anyOf: [ + { + type: "object", + properties: { + path: { type: "string" }, + reference: { anyOf: [{ type: "string" }, { type: "null" }] }, + limit: { type: "integer", maximum: 2000 }, + }, + required: ["path"], + }, + { + type: "object", + properties: { resource: { type: "string" }, limit: { type: "integer", maximum: 51200 } }, + required: ["resource"], + }, + ], + }, + }), + ], + }), + ) + + expect(prepared.body.tools).toEqual([ + { + type: "function", + name: "read", + description: "Read a path or resource.", + strict: false, + parameters: { + type: "object", + properties: { + path: { type: "string" }, + reference: { type: "string" }, + limit: { type: "integer", maximum: 2000 }, + resource: { type: "string" }, + }, + additionalProperties: false, + }, + }, + ]) + }), + ) + + it.effect("lowers chronological system updates to escaped user wrappers in order", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.user("Before."), + Message.system("Treat literally."), + Message.assistant("After."), + ], + }), + ) + + expect(prepared.body.input).toEqual([ + { + role: "user", + content: [ + { type: "input_text", text: "Before." }, + { type: "input_text", text: "\nTreat </system-update> literally.\n" }, + ], + }, + { role: "assistant", content: [{ type: "output_text", text: "After." }] }, + ]) + }), + ) + + it.effect("prepares OpenAI Responses WebSocket target", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLMRequest.update(request, { + model: OpenAIResponses.webSocketRoute + .with({ endpoint: { baseURL: "https://api.openai.test/v1/" }, auth: Auth.bearer("test") }) + .model({ id: "gpt-4.1-mini" }), + }), + ) + + expect(prepared.route).toBe("openai-responses-websocket") + expect(prepared.protocol).toBe("openai-responses") + expect(prepared.metadata).toEqual({ transport: "websocket-json" }) + expect(prepared.body).toMatchObject({ model: "gpt-4.1-mini", store: false, stream: true }) + }), + ) + + it.effect("streams OpenAI Responses over WebSocket", () => + Effect.gen(function* () { + const sent: string[] = [] + const opened: Array<{ readonly url: string; readonly authorization: string | undefined }> = [] + let closed = false + const deps = Layer.mergeAll( + Layer.succeed( + RequestExecutor.Service, + RequestExecutor.Service.of({ + execute: () => Effect.die("unexpected HTTP request"), + }), + ), + Layer.succeed( + WebSocketExecutor.Service, + WebSocketExecutor.Service.of({ + open: (input) => + Effect.succeed({ + sendText: (message) => + Effect.sync(() => { + opened.push({ url: input.url, authorization: input.headers.authorization }) + sent.push(message) + }), + messages: Stream.fromArray([ + ProviderShared.encodeJson({ type: "response.output_text.delta", item_id: "msg_1", delta: "Hi" }), + ProviderShared.encodeJson({ type: "response.completed", response: { id: "resp_ws" } }), + ]), + close: Effect.sync(() => { + closed = true + }), + }), + }), + ), + ) + const response = yield* LLMClient.generate( + LLM.request({ + model: OpenAI.configure({ baseURL: "https://api.openai.test/v1/", apiKey: "test" }).responsesWebSocket( + "gpt-4.1-mini", + ), + prompt: "Say hello.", + }), + ).pipe(Effect.provide(LLMClient.layer.pipe(Layer.provide(deps)))) + + expect(response.text).toBe("Hi") + expect(opened).toEqual([{ url: "wss://api.openai.test/v1/responses", authorization: "Bearer test" }]) + expect(closed).toBe(true) + expect(sent).toHaveLength(1) + expect(JSON.parse(sent[0])).toEqual({ + type: "response.create", + model: "gpt-4.1-mini", + input: [{ role: "user", content: [{ type: "input_text", text: "Say hello." }] }], + store: false, + }) + }), + ) + + it.effect("fails immediately when WebSocket is already closed", () => + Effect.gen(function* () { + const error = yield* WebSocketExecutor.fromWebSocket( + // oxlint-disable-next-line typescript-eslint/no-unsafe-type-assertion -- fromWebSocket reads readyState before touching WebSocket methods on this branch. + { readyState: globalThis.WebSocket.CLOSED } as globalThis.WebSocket, + { url: "wss://api.openai.test/v1/responses", headers: Headers.empty }, + ).pipe(Effect.flip) + + expect(error.message).toContain("closed before opening") + }), + ) + + it.effect("adds native query params to the Responses URL", () => + Effect.gen(function* () { + yield* LLMClient.generate( + LLMRequest.update(request, { + model: Model.update(model, { route: model.route.with({ endpoint: { query: { "api-version": "v1" } } }) }), + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.url).toBe("https://api.openai.test/v1/responses?api-version=v1") + return input.respond(sseEvents({ type: "response.completed", response: {} }), { + headers: { "content-type": "text/event-stream" }, + }) + }), + ), + ), + ) + }), + ) + + it.effect("uses Azure api-key header for static OpenAI Responses keys", () => + Effect.gen(function* () { + yield* LLMClient.generate( + LLMRequest.update(request, { + model: Azure.configure({ + baseURL: "https://opencode-test.openai.azure.com/openai/v1/", + apiKey: "azure-key", + headers: { authorization: "Bearer stale" }, + }).responses("gpt-4.1-mini"), + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.url).toBe("https://opencode-test.openai.azure.com/openai/v1/responses?api-version=v1") + expect(web.headers.get("api-key")).toBe("azure-key") + expect(web.headers.get("authorization")).toBeNull() + return input.respond(sseEvents({ type: "response.completed", response: {} }), { + headers: { "content-type": "text/event-stream" }, + }) + }), + ), + ), + ) + }), + ) + + it.effect("loads OpenAI default auth from Effect Config", () => + LLMClient.generate( + LLMRequest.update(request, { + model: OpenAI.configure({ baseURL: "https://api.openai.test/v1/" }).responses("gpt-4.1-mini"), + }), + ).pipe( + configEnv({ OPENAI_API_KEY: "env-key" }), + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.headers.get("authorization")).toBe("Bearer env-key") + return input.respond(sseEvents({ type: "response.completed", response: {} }), { + headers: { "content-type": "text/event-stream" }, + }) + }), + ), + ), + ), + ) + + it.effect("lets explicit auth override OpenAI default API key auth", () => + LLMClient.generate( + LLMRequest.update(request, { + model: OpenAI.configure({ + baseURL: "https://api.openai.test/v1/", + auth: Auth.bearer("oauth-token"), + }).responses("gpt-4.1-mini"), + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(web.headers.get("authorization")).toBe("Bearer oauth-token") + return input.respond(sseEvents({ type: "response.completed", response: {} }), { + headers: { "content-type": "text/event-stream" }, + }) + }), + ), + ), + ), + ) + + it.effect("prepares function call and function output input items", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result", + model, + messages: [ + Message.user("What is the weather?"), + Message.assistant([ToolCallPart.make({ id: "call_1", name: "lookup", input: { query: "weather" } })]), + Message.tool({ id: "call_1", name: "lookup", result: { forecast: "sunny" } }), + ], + }), + ) + + expect(prepared.body).toEqual({ + model: "gpt-4.1-mini", + input: [ + { role: "user", content: [{ type: "input_text", text: "What is the weather?" }] }, + { type: "function_call", call_id: "call_1", name: "lookup", arguments: '{"query":"weather"}' }, + { type: "function_call_output", call_id: "call_1", output: '{"forecast":"sunny"}' }, + ], + store: false, + stream: true, + max_output_tokens: undefined, + temperature: undefined, + tool_choice: undefined, + tools: undefined, + top_p: undefined, + }) + }), + ) + + it.effect("preserves structured tool errors for the model", () => + Effect.gen(function* () { + const error = { + error: { type: "unknown", message: "Tool execution interrupted" }, + content: [], + structured: {}, + } + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "bash", input: { command: "sleep 10" } })]), + Message.tool({ + id: "call_1", + name: "bash", + resultType: "error", + result: error, + }), + ], + }), + ) + + expect(expectToolOutput(prepared.body).output).toBe(ProviderShared.encodeJson(error)) + }), + ) + + it.effect("keeps primitive tool errors as plain text", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "bash", input: {} })]), + Message.tool({ id: "call_1", name: "bash", resultType: "error", result: 503 }), + ], + }), + ) + + expect(expectToolOutput(prepared.body).output).toBe("503") + }), + ) + + it.effect("keeps non-JSON tool errors as plain text", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "bash", input: {} })]), + Message.tool({ id: "call_1", name: "bash", resultType: "error", result: new Error("boom") }), + ], + }), + ) + + expect(expectToolOutput(prepared.body).output).toBe("Error: boom") + }), + ) + + // Regression: screenshot/read tool results must stay structured so base64 + // image data is not JSON-stringified into `function_call_output.output`. + it.effect("lowers image tool-result content as structured input_image items", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result_image", + model, + messages: [ + Message.user("Show me the screenshot."), + Message.assistant([ToolCallPart.make({ id: "call_1", name: "read", input: { filePath: "shot.png" } })]), + Message.tool({ + id: "call_1", + name: "read", + resultType: "content", + result: [ + { type: "text", text: "Image read successfully" }, + { type: "file", uri: "data:image/png;base64,AAECAw==", mime: "image/png" }, + ], + }), + ], + }), + ) + + expect(expectToolOutput(prepared.body).output).toEqual([ + { type: "input_text", text: "Image read successfully" }, + { type: "input_image", image_url: "data:image/png;base64,AAECAw==" }, + ]) + }), + ) + + it.effect("lowers single-image tool-result content as structured input_image array", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result_image_only", + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "screenshot", input: {} })]), + Message.tool({ + id: "call_1", + name: "screenshot", + resultType: "content", + result: [{ type: "file", uri: "data:image/png;base64,AAECAw==", mime: "image/png" }], + }), + ], + }), + ) + + expect(expectToolOutput(prepared.body).output).toEqual([ + { type: "input_image", image_url: "data:image/png;base64,AAECAw==" }, + ]) + }), + ) + + it.effect("lowers PDF tool-result content as structured input_file array", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result_pdf", + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "read", input: {} })]), + Message.tool({ + id: "call_1", + name: "read", + resultType: "content", + result: [ + { + type: "file", + uri: "data:application/pdf;base64,JVBERi0xLjQ=", + mime: "application/pdf", + name: "report.pdf", + }, + ], + }), + ], + }), + ) + + expect(expectToolOutput(prepared.body).output).toEqual([ + { + type: "input_file", + filename: "report.pdf", + file_data: "data:application/pdf;base64,JVBERi0xLjQ=", + }, + ]) + }), + ) + + it.effect("uses xAI inline file encoding for PDF tool results", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: xaiModel, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "read", input: {} })]), + Message.tool({ + id: "call_1", + name: "read", + resultType: "content", + result: [ + { + type: "file", + uri: "data:application/pdf;base64,JVBERi0xLjQ=", + mime: "application/pdf", + name: "report.pdf", + }, + ], + }), + ], + }), + ) + + expect(expectToolOutput(prepared.body).output).toEqual([ + { + type: "input_file", + filename: "report.pdf", + file_data: "JVBERi0xLjQ=", + mime_type: "application/pdf", + }, + ]) + }), + ) + + it.effect("rejects unsupported media in tool-result content with a clear error", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + id: "req_tool_result_unsupported_media", + model, + messages: [ + Message.assistant([ToolCallPart.make({ id: "call_1", name: "fetch", input: {} })]), + Message.tool({ + id: "call_1", + name: "fetch", + resultType: "content", + result: [{ type: "file", uri: "data:audio/mpeg;base64,AAECAw==", mime: "audio/mpeg" }], + }), + ], + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("OpenAI Responses") + expect(error.message).toContain("audio/mpeg") + }), + ) + + it.effect("prepares the composed native continuation request", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + continuationRequest({ + id: "req_native_continuation_openai", + model, + features: nativeOpenAIResponsesContinuation, + }), + ) + + expect(prepared.body).toMatchObject({ + input: [ + { role: "system", content: "You are concise. Continue from the provided history." }, + { + role: "user", + content: [ + { type: "input_text", text: "What is shown here?" }, + { type: "input_image", image_url: "data:image/png;base64,AAECAw==" }, + ], + }, + { + type: "reasoning", + encrypted_content: "encrypted-continuation-state", + summary: [{ type: "summary_text", text: "I inspected the previous turn." }], + }, + { role: "assistant", content: [{ type: "output_text", text: "It shows a small test image." }] }, + { role: "user", content: [{ type: "input_text", text: "Check the weather in Paris before continuing." }] }, + { type: "function_call", call_id: "call_weather_1", name: "get_weather", arguments: '{"city":"Paris"}' }, + { type: "function_call_output", call_id: "call_weather_1", output: '{"temperature":22}' }, + { role: "assistant", content: [{ type: "output_text", text: "Paris is 22 degrees." }] }, + { + role: "user", + content: [{ type: "input_text", text: "Continue from this conversation in one short sentence." }], + }, + ], + include: ["reasoning.encrypted_content"], + store: false, + }) + expect(prepared.body.tools).toEqual([expect.objectContaining({ type: "function", name: "get_weather" })]) + }), + ) + + it.effect("maps OpenAI provider options to Responses options", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: OpenAI.configure({ baseURL: "https://api.openai.test/v1/", apiKey: "test" }).model("gpt-5.2"), + prompt: "think", + providerOptions: { + openai: { + promptCacheKey: "session_123", + reasoningEffort: "high", + reasoningSummary: "auto", + include: ["reasoning.encrypted_content"], + }, + }, + }), + ) + + expect(prepared.body.store).toBe(false) + expect(prepared.body.prompt_cache_key).toBe("session_123") + expect(prepared.body.include).toEqual(["reasoning.encrypted_content"]) + expect(prepared.body.reasoning).toEqual({ effort: "high", summary: "auto" }) + expect(prepared.body.text).toEqual({ verbosity: "low" }) + }), + ) + + it.effect("accepts the full ResponseIncludable union", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + prompt: "hi", + providerOptions: { + openai: { + include: ["reasoning.encrypted_content", "code_interpreter_call.outputs", "web_search_call.results"], + }, + }, + }), + ) + + expect(prepared.body.include).toEqual([ + "reasoning.encrypted_content", + "code_interpreter_call.outputs", + "web_search_call.results", + ]) + }), + ) + + it.effect("filters unknown includable values out of the include array", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + prompt: "hi", + // The user passed one invalid entry alongside a valid one. Keep the + // valid one so the request still succeeds rather than failing on a + // typo from upstream config. + providerOptions: { openai: { include: ["reasoning.encrypted_content", "bogus.thing"] } }, + }), + ) + + expect(prepared.body.include).toEqual(["reasoning.encrypted_content"]) + }), + ) + + it.effect("treats an explicit empty include as no include at all", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ model, prompt: "hi", providerOptions: { openai: { include: [] } } }), + ) + + expect(prepared.body.include).toBeUndefined() + }), + ) + + it.effect("treats an all-invalid include as no include at all", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ model, prompt: "hi", providerOptions: { openai: { include: ["bogus.thing"] } } }), + ) + + expect(prepared.body.include).toBeUndefined() + }), + ) + + it.effect("omits include when no include is set", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ model, prompt: "hi", providerOptions: { openai: { store: false } } }), + ) + + expect(prepared.body.include).toBeUndefined() + }), + ) + + it.effect("requests encrypted reasoning by default for GPT-5 reasoning models", () => + Effect.gen(function* () { + // The native OpenAI facade configures GPT-5 stateless (store: false) with + // reasoningSummary: "auto" by default. Without `include`, a follow-up + // turn cannot replay reasoning state, so the facade also opts into + // `reasoning.encrypted_content` automatically. + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: OpenAI.configure({ baseURL: "https://api.openai.test/v1/", apiKey: "test" }).responses("gpt-5.2"), + prompt: "hi", + }), + ) + + expect(prepared.body.store).toBe(false) + expect(prepared.body.include).toEqual(["reasoning.encrypted_content"]) + expect(prepared.body.reasoning).toEqual({ effort: "medium", summary: "auto" }) + }), + ) + + it.effect("lets callers opt out of the GPT-5 default include", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: OpenAI.configure({ baseURL: "https://api.openai.test/v1/", apiKey: "test" }).responses("gpt-5.2"), + prompt: "hi", + providerOptions: { openai: { include: [] } }, + }), + ) + + expect(prepared.body.include).toBeUndefined() + }), + ) + + it.effect("request OpenAI provider options override route defaults", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: OpenAI.configure({ + baseURL: "https://api.openai.test/v1/", + apiKey: "test", + providerOptions: { openai: { promptCacheKey: "model_cache" } }, + }).model("gpt-4.1-mini"), + prompt: "no cache", + providerOptions: { openai: { promptCacheKey: "request_cache" } }, + }), + ) + + expect(prepared.body.prompt_cache_key).toBe("request_cache") + }), + ) + + it.effect("parses text and usage stream fixtures", () => + Effect.gen(function* () { + const body = sseEvents( + { type: "response.output_text.delta", item_id: "msg_1", delta: "Hello" }, + { type: "response.output_text.delta", item_id: "msg_1", delta: "!" }, + { + type: "response.completed", + response: { + id: "resp_1", + service_tier: "default", + usage: { + input_tokens: 5, + output_tokens: 2, + total_tokens: 7, + input_tokens_details: { cached_tokens: 1, cache_write_tokens: 2 }, + output_tokens_details: { reasoning_tokens: 0 }, + }, + }, + }, + ) + const response = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body))) + const usage = new Usage({ + inputTokens: 5, + outputTokens: 2, + nonCachedInputTokens: 2, + cacheReadInputTokens: 1, + cacheWriteInputTokens: 2, + reasoningTokens: 0, + totalTokens: 7, + providerMetadata: { + openai: { + input_tokens: 5, + output_tokens: 2, + total_tokens: 7, + input_tokens_details: { cached_tokens: 1, cache_write_tokens: 2 }, + output_tokens_details: { reasoning_tokens: 0 }, + }, + }, + }) + + expect(response.text).toBe("Hello!") + expect(response.events).toEqual([ + { type: "step-start", index: 0 }, + { type: "text-start", id: "msg_1" }, + { type: "text-delta", id: "msg_1", text: "Hello" }, + { type: "text-delta", id: "msg_1", text: "!" }, + { type: "text-end", id: "msg_1" }, + { + type: "step-finish", + index: 0, + reason: { normalized: "stop", raw: undefined }, + providerMetadata: { openai: { responseId: "resp_1", serviceTier: "default" } }, + usage, + }, + { + type: "finish", + reason: { normalized: "stop", raw: undefined }, + providerMetadata: { openai: { responseId: "resp_1", serviceTier: "default" } }, + usage, + }, + ]) + }), + ) + + it.effect("preserves and replays assistant message phases", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { + type: "response.output_item.added", + item: { type: "message", id: "msg_commentary" }, + }, + { type: "response.output_text.delta", item_id: "msg_commentary", delta: "Checking." }, + { type: "response.output_text.done", item_id: "msg_commentary" }, + { + type: "response.output_item.done", + item: { type: "message", id: "msg_commentary", phase: "commentary" }, + }, + { + type: "response.output_item.added", + item: { type: "message", id: "msg_final", phase: "final_answer" }, + }, + { type: "response.output_text.done", item_id: "msg_final", text: "Finished." }, + { + type: "response.output_item.done", + item: { type: "message", id: "msg_final", phase: "final_answer" }, + }, + { type: "response.output_item.added", item: { type: "message", id: "msg_null", phase: null } }, + { type: "response.output_text.delta", item_id: "msg_null", delta: "Unclassified." }, + { type: "response.output_item.done", item: { type: "message", id: "msg_null", phase: null } }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + ), + ), + ) + + expect(response.message.content).toEqual([ + { + type: "text", + text: "Checking.", + providerMetadata: { openai: { phase: "commentary" } }, + }, + { + type: "text", + text: "Finished.", + providerMetadata: { openai: { phase: "final_answer" } }, + }, + { + type: "text", + text: "Unclassified.", + providerMetadata: { openai: { phase: null } }, + }, + ]) + + const prepared = yield* LLMClient.prepare( + LLM.request({ model, messages: [response.message] }), + ) + expect(prepared.body.input).toEqual([ + { + role: "assistant", + content: [{ type: "output_text", text: "Checking." }], + phase: "commentary", + }, + { + role: "assistant", + content: [{ type: "output_text", text: "Finished." }], + phase: "final_answer", + }, + { + role: "assistant", + content: [{ type: "output_text", text: "Unclassified." }], + phase: null, + }, + ]) + }), + ) + + it.effect("rejects output text events without the spec-required item id", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "response.output_text.delta", delta: "orphaned" }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + ), + ), + Effect.flip, + ) + + expect(error.reason._tag).toBe("InvalidProviderOutput") + expect(error.message).toContain("response.output_text.delta is missing item_id") + }), + ) + + it.effect("rejects reasoning events without the spec-required item id", () => + Effect.gen(function* () { + const events = [ + { type: "response.reasoning_summary_part.added", summary_index: 0 }, + { type: "response.reasoning_summary_part.done", summary_index: 0 }, + { type: "response.reasoning_text.done" }, + ] + + for (const event of events) { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse(sseEvents(event, { type: "response.completed", response: { id: "resp_1" } })), + ), + Effect.flip, + ) + expect(error.reason._tag).toBe("InvalidProviderOutput") + expect(error.message).toContain(`${event.type} is missing item_id`) + } + }), + ) + + it.effect("maps incomplete response reasons", () => + Effect.gen(function* () { + const generate = (incompleteDetails: object) => + LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents({ + type: "response.incomplete", + response: { id: "resp_incomplete", incomplete_details: incompleteDetails }, + }), + ), + ), + ) + + const length = yield* generate({ reason: "max_output_tokens" }) + const contentFilter = yield* generate({ reason: "content_filter" }) + const unknown = yield* generate({}) + const custom = yield* generate({ reason: "provider_limit" }) + + expect([length.finishReason, contentFilter.finishReason, unknown.finishReason, custom.finishReason]).toEqual([ + { normalized: "length", raw: "max_output_tokens" }, + { normalized: "content-filter", raw: "content_filter" }, + { normalized: "unknown", raw: undefined }, + { normalized: "unknown", raw: "provider_limit" }, + ]) + }), + ) + + // OpenAI's documented stream orders output text within one message item; no + // provider-valid same-kind overlap is evidenced, so done boundaries close it. + it.effect("closes sequential output messages before starting the next", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "response.output_text.delta", item_id: "msg_1", delta: "First" }, + { type: "response.output_text.done", item_id: "msg_1" }, + { type: "response.output_text.delta", item_id: "msg_2", delta: "Second" }, + { type: "response.output_item.done", item: { type: "message", id: "msg_2" } }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + ), + ), + ) + + expect(response.events.filter((event) => event.type.startsWith("text-"))).toEqual([ + { type: "text-start", id: "msg_1" }, + { type: "text-delta", id: "msg_1", text: "First" }, + { type: "text-end", id: "msg_1" }, + { type: "text-start", id: "msg_2" }, + { type: "text-delta", id: "msg_2", text: "Second" }, + { type: "text-end", id: "msg_2" }, + ]) + }), + ) + + it.effect("parses reasoning summary stream fixtures", () => + Effect.gen(function* () { + const body = sseEvents( + { type: "response.reasoning_summary_text.delta", item_id: "rs_1", delta: "thinking" }, + { type: "response.output_text.delta", item_id: "msg_1", delta: "Hello" }, + { type: "response.reasoning_summary_text.done", item_id: "rs_1" }, + { type: "response.completed", response: { id: "resp_1" } }, + ) + + const response = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body))) + + expect(response.reasoning).toBe("thinking") + expect(response.text).toBe("Hello") + expect(response.events).toMatchObject([ + { type: "step-start", index: 0 }, + { type: "reasoning-start", id: "rs_1" }, + { type: "reasoning-delta", id: "rs_1", text: "thinking" }, + { type: "text-start", id: "msg_1" }, + { type: "text-delta", id: "msg_1", text: "Hello" }, + { type: "reasoning-end", id: "rs_1" }, + { type: "text-end", id: "msg_1" }, + { type: "step-finish", index: 0, reason: { normalized: "stop", raw: undefined } }, + { type: "finish", reason: { normalized: "stop", raw: undefined } }, + ]) + expect(response.events.filter((event) => event.type === "finish")).toHaveLength(1) + expect(response.message.content).toEqual([ + { type: "reasoning", text: "thinking" }, + { type: "text", text: "Hello" }, + ]) + }), + ) + + it.effect("preserves encrypted reasoning metadata for continuation", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "response.reasoning_summary_text.delta", item_id: "rs_1", delta: "thinking" }, + { + type: "response.output_item.done", + item: { + type: "reasoning", + id: "rs_1", + encrypted_content: "encrypted-state", + summary: [{ type: "summary_text", text: "thinking" }], + }, + }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + ), + ), + ) + + expect(response.events).toContainEqual( + expect.objectContaining({ + type: "reasoning-end", + id: "rs_1", + providerMetadata: { openai: { itemId: "rs_1", reasoningEncryptedContent: "encrypted-state" } }, + }), + ) + }), + ) + + it.effect("streams each reasoning summary part as a separate block", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLMRequest.update(request, { providerOptions: { openai: { store: false } } }), + ).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { + type: "response.output_item.added", + item: { type: "reasoning", id: "rs_1", encrypted_content: null }, + }, + { type: "response.reasoning_summary_part.added", item_id: "rs_1", summary_index: 0 }, + { type: "response.reasoning_summary_text.delta", item_id: "rs_1", summary_index: 0, delta: "First" }, + { type: "response.reasoning_summary_part.done", item_id: "rs_1", summary_index: 0 }, + { type: "response.reasoning_summary_part.added", item_id: "rs_1", summary_index: 1 }, + { type: "response.reasoning_summary_text.delta", item_id: "rs_1", summary_index: 1, delta: "Second" }, + { type: "response.reasoning_summary_part.done", item_id: "rs_1", summary_index: 1 }, + { + type: "response.output_item.done", + item: { type: "reasoning", id: "rs_1", encrypted_content: "encrypted-state" }, + }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + ), + ), + ) + + expect(response.reasoning).toBe("FirstSecond") + expect(response.events).toMatchObject([ + { type: "step-start", index: 0 }, + { + type: "reasoning-start", + id: "rs_1:0", + providerMetadata: { openai: { itemId: "rs_1", reasoningEncryptedContent: null } }, + }, + { type: "reasoning-delta", id: "rs_1:0", text: "First" }, + { type: "reasoning-end", id: "rs_1:0", providerMetadata: { openai: { itemId: "rs_1" } } }, + { + type: "reasoning-start", + id: "rs_1:1", + providerMetadata: { openai: { itemId: "rs_1", reasoningEncryptedContent: null } }, + }, + { type: "reasoning-delta", id: "rs_1:1", text: "Second" }, + { + type: "reasoning-end", + id: "rs_1:1", + providerMetadata: { openai: { itemId: "rs_1", reasoningEncryptedContent: "encrypted-state" } }, + }, + { type: "step-finish", index: 0, reason: { normalized: "stop", raw: undefined } }, + { type: "finish", reason: { normalized: "stop", raw: undefined } }, + ]) + }), + ) + + it.effect("closes reasoning summary parts when storage is not disabled", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLMRequest.update(request, { providerOptions: { openai: { store: true } } }), + ).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { + type: "response.output_item.added", + item: { type: "reasoning", id: "rs_1", encrypted_content: null }, + }, + { type: "response.reasoning_summary_part.added", item_id: "rs_1", summary_index: 0 }, + { type: "response.reasoning_summary_text.delta", item_id: "rs_1", summary_index: 0, delta: "First" }, + { type: "response.reasoning_summary_part.done", item_id: "rs_1", summary_index: 0 }, + { type: "response.reasoning_summary_part.added", item_id: "rs_1", summary_index: 1 }, + { type: "response.reasoning_summary_text.delta", item_id: "rs_1", summary_index: 1, delta: "Second" }, + { type: "response.reasoning_summary_part.done", item_id: "rs_1", summary_index: 1 }, + { + type: "response.output_item.done", + item: { type: "reasoning", id: "rs_1", encrypted_content: null }, + }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + ), + ), + ) + + expect(response.events.filter((event) => event.type === "reasoning-end")).toEqual([ + { type: "reasoning-end", id: "rs_1:0", providerMetadata: { openai: { itemId: "rs_1" } } }, + { type: "reasoning-end", id: "rs_1:1", providerMetadata: { openai: { itemId: "rs_1" } } }, + ]) + }), + ) + + it.effect("continues a stateless reasoning conversation", () => + Effect.gen(function* () { + const response = yield* LLMClient.generate( + LLM.request({ + id: "req_reasoning_continue", + model, + messages: [ + Message.user("What changed?"), + Message.assistant([ + { + type: "reasoning", + text: "Checked the previous diff.", + providerMetadata: { + openai: { + itemId: "rs_1", + reasoningEncryptedContent: "encrypted-state", + }, + }, + }, + { type: "text", text: "The parser changed." }, + ]), + Message.user("Summarize it."), + ], + providerOptions: { openai: { store: false } }, + }), + ).pipe( + Effect.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const web = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + const body = yield* Effect.promise(() => web.json()) + expect(body).toMatchObject({ + input: [ + { role: "user", content: [{ type: "input_text", text: "What changed?" }] }, + { + type: "reasoning", + encrypted_content: "encrypted-state", + summary: [{ type: "summary_text", text: "Checked the previous diff." }], + }, + { role: "assistant", content: [{ type: "output_text", text: "The parser changed." }] }, + { role: "user", content: [{ type: "input_text", text: "Summarize it." }] }, + ], + }) + expect(body.input[1]).not.toHaveProperty("id") + return input.respond( + sseEvents( + { type: "response.output_text.delta", item_id: "msg_1", delta: "Parser now round-trips reasoning." }, + { type: "response.completed", response: { id: "resp_1" } }, + ), + { headers: { "content-type": "text/event-stream" } }, + ) + }), + ), + ), + ) + + expect(response.text).toBe("Parser now round-trips reasoning.") + }), + ) + + it.effect("preserves assistant content order around reasoning items", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_reasoning_order", + model, + messages: [ + Message.assistant([ + { type: "text", text: "Before." }, + { + type: "reasoning", + text: "Checked order.", + providerMetadata: { + openai: { + itemId: "rs_1", + reasoningEncryptedContent: "encrypted-state", + }, + }, + }, + { type: "text", text: "After." }, + ]), + ], + providerOptions: { openai: { store: false } }, + }), + ) + + expect(prepared.body.input).toEqual([ + { role: "assistant", content: [{ type: "output_text", text: "Before." }] }, + { + type: "reasoning", + encrypted_content: "encrypted-state", + summary: [{ type: "summary_text", text: "Checked order." }], + }, + { role: "assistant", content: [{ type: "output_text", text: "After." }] }, + ]) + }), + ) + + it.effect("references stored reasoning items by id", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ + { + type: "reasoning", + text: "Checked the previous diff.", + providerMetadata: { openai: { itemId: "rs_1" } }, + }, + ]), + ], + providerOptions: { openai: { store: true } }, + }), + ) + + expect(prepared.body.input).toEqual([{ type: "item_reference", id: "rs_1" }]) + }), + ) + + it.effect("references stored provider-executed hosted tool results by id", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.assistant([ + ToolCallPart.make({ + id: "ws_1", + name: "web_search", + input: { query: "effect 4" }, + providerExecuted: true, + providerMetadata: { openai: { itemId: "ws_1" } }, + }), + { + type: "tool-result", + id: "ws_1", + name: "web_search", + result: { type: "json", value: { type: "web_search_call", id: "ws_1", status: "completed" } }, + providerExecuted: true, + providerMetadata: { openai: { itemId: "ws_1" } }, + }, + ]), + Message.user("Continue."), + ], + providerOptions: { openai: { store: true } }, + }), + ) + + expect(prepared.body.input).toEqual([ + { type: "item_reference", id: "ws_1" }, + { role: "user", content: [{ type: "input_text", text: "Continue." }] }, + ]) + }), + ) + + it.effect("continues stateless hosted image generation with the generated image", () => + Effect.gen(function* () { + const imageTool = OpenAI.imageGeneration({ action: "edit" }) + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + messages: [ + Message.user("Generate a black triangle."), + Message.assistant([ + ToolCallPart.make({ + id: "ig_1", + name: "image_generation", + input: {}, + providerExecuted: true, + providerMetadata: { openai: { itemId: "ig_1" } }, + }), + ToolResultPart.make({ + id: "ig_1", + name: "image_generation", + result: { + type: "content", + value: [{ type: "file", uri: "data:image/png;base64,AQID", mime: "image/png" }], + }, + providerExecuted: true, + providerMetadata: { openai: { itemId: "ig_1" } }, + }), + ]), + Message.user("Make it blue."), + ], + tools: [imageTool], + }), + ) + + expect(prepared.body.store).toBe(false) + expect(prepared.body.input).toEqual([ + { role: "user", content: [{ type: "input_text", text: "Generate a black triangle." }] }, + { role: "user", content: [{ type: "input_image", image_url: "data:image/png;base64,AQID" }] }, + { role: "user", content: [{ type: "input_text", text: "Make it blue." }] }, + ]) + }), + ) + + it.effect("joins streamed summary blocks into one continuation reasoning item", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_multi_summary_continuation", + model, + messages: [ + Message.assistant([ + { + type: "reasoning", + text: "First", + providerMetadata: { openai: { itemId: "rs_1" } }, + }, + { + type: "reasoning", + text: "Second", + providerMetadata: { openai: { itemId: "rs_1", reasoningEncryptedContent: "encrypted-state" } }, + }, + ]), + ], + providerOptions: { openai: { store: false } }, + }), + ) + + expect(prepared.body.input).toEqual([ + { + type: "reasoning", + encrypted_content: "encrypted-state", + summary: [ + { type: "summary_text", text: "First" }, + { type: "summary_text", text: "Second" }, + ], + }, + ]) + }), + ) + + it.effect("skips non-persisted reasoning ids without encrypted state", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_reasoning_without_encrypted_state", + model, + messages: [ + Message.user("What changed?"), + Message.assistant([ + { + type: "reasoning", + text: "Checked the previous diff.", + providerMetadata: { + openai: { + itemId: "rs_1", + reasoningEncryptedContent: null, + }, + }, + }, + { type: "text", text: "The parser changed." }, + ]), + Message.user("Summarize it."), + ], + providerOptions: { openai: { store: false } }, + }), + ) + + expect(prepared.body).toMatchObject({ + input: [ + { role: "user", content: [{ type: "input_text", text: "What changed?" }] }, + { role: "assistant", content: [{ type: "output_text", text: "The parser changed." }] }, + { role: "user", content: [{ type: "input_text", text: "Summarize it." }] }, + ], + store: false, + }) + }), + ) + + it.effect("assembles streamed function call input", () => + Effect.gen(function* () { + const body = sseEvents( + { + type: "response.output_item.added", + item: { type: "function_call", id: "item_1", call_id: "call_1", name: "lookup", arguments: "" }, + }, + { type: "response.function_call_arguments.delta", item_id: "item_1", delta: '{"query"' }, + { type: "response.function_call_arguments.delta", item_id: "item_1", delta: ':"weather"}' }, + { + type: "response.output_item.done", + item: { + type: "function_call", + id: "item_1", + call_id: "call_1", + name: "lookup", + arguments: '{"query":"weather"}', + }, + }, + { type: "response.completed", response: { usage: { input_tokens: 5, output_tokens: 1 } } }, + ) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedResponse(body))) + const usage = new Usage({ + inputTokens: 5, + outputTokens: 1, + nonCachedInputTokens: 5, + cacheReadInputTokens: undefined, + reasoningTokens: undefined, + totalTokens: 6, + providerMetadata: { openai: { input_tokens: 5, output_tokens: 1 } }, + }) + + expect(response.events).toEqual([ + { type: "step-start", index: 0 }, + { + type: "tool-input-start", + id: "call_1", + name: "lookup", + providerMetadata: { openai: { itemId: "item_1" } }, + }, + { + type: "tool-input-delta", + id: "call_1", + name: "lookup", + text: '{"query"', + }, + { + type: "tool-input-delta", + id: "call_1", + name: "lookup", + text: ':"weather"}', + }, + { + type: "tool-input-end", + id: "call_1", + name: "lookup", + providerMetadata: { openai: { itemId: "item_1" } }, + }, + { + type: "tool-call", + id: "call_1", + name: "lookup", + input: { query: "weather" }, + providerExecuted: undefined, + providerMetadata: { openai: { itemId: "item_1" } }, + }, + { + type: "step-finish", + index: 0, + reason: { normalized: "tool-calls", raw: undefined }, + usage, + providerMetadata: undefined, + }, + { + type: "finish", + reason: { normalized: "tool-calls", raw: undefined }, + providerMetadata: undefined, + usage, + }, + ]) + }), + ) + + it.effect("emits malformed final function arguments as an unexecuted tool error", () => + Effect.gen(function* () { + const body = sseEvents( + { + type: "response.output_item.added", + item: { type: "function_call", id: "item_1", call_id: "call_1", name: "lookup", arguments: "" }, + }, + { type: "response.function_call_arguments.delta", item_id: "item_1", delta: '{"query":"streamed"}' }, + { + type: "response.output_item.done", + item: { + type: "function_call", + id: "item_1", + call_id: "call_1", + name: "lookup", + arguments: '{"query":"partial', + }, + }, + { type: "response.completed", response: { usage: { input_tokens: 5, output_tokens: 1 } } }, + ) + const response = yield* LLMClient.generate( + LLMRequest.update(request, { + tools: [ToolDefinition.make({ name: "lookup", description: "Lookup data", inputSchema: { type: "object" } })], + }), + ).pipe(Effect.provide(fixedResponse(body))) + + expect(response.events.find(LLMEvent.is.toolInputError)).toEqual({ + type: "tool-input-error", + id: "call_1", + name: "lookup", + raw: '{"query":"partial', + }) + expect(response.finishReason.normalized).toBe("tool-calls") + expect(response.events.some(LLMEvent.is.toolCall)).toBeFalse() + }), + ) + + it.effect("settles malformed function arguments when output_item.added is absent", () => + Effect.gen(function* () { + const body = sseEvents( + { + type: "response.output_item.done", + item: { + type: "function_call", + id: "item_1", + call_id: "call_1", + name: "lookup", + arguments: '{"query":"partial', + }, + }, + { type: "response.completed", response: { usage: { input_tokens: 5, output_tokens: 1 } } }, + ) + const response = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body))) + + expect(response.events.find(LLMEvent.is.toolInputError)).toMatchObject({ + id: "call_1", + name: "lookup", + raw: '{"query":"partial', + }) + expect(response.finishReason.normalized).toBe("tool-calls") + }), + ) + + it.effect("decodes web_search_call as provider-executed tool-call + tool-result", () => + Effect.gen(function* () { + const item = { + type: "web_search_call", + id: "ws_1", + status: "completed", + action: { type: "search", query: "effect 4" }, + } + const body = sseEvents( + { type: "response.output_item.added", item }, + { type: "response.output_item.done", item }, + { type: "response.completed", response: { usage: { input_tokens: 5, output_tokens: 1 } } }, + ) + const response = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body))) + + const callsAndResults = response.events.filter( + (event) => event.type === "tool-call" || event.type === "tool-result", + ) + expect(callsAndResults).toEqual([ + { + type: "tool-call", + id: "ws_1", + name: "web_search", + input: { type: "search", query: "effect 4" }, + providerExecuted: true, + providerMetadata: { openai: { itemId: "ws_1" } }, + }, + { + type: "tool-result", + id: "ws_1", + name: "web_search", + result: { type: "json", value: item }, + providerExecuted: true, + providerMetadata: { openai: { itemId: "ws_1" } }, + }, + ]) + }), + ) + + it.effect("decodes image generation output as image content", () => + Effect.gen(function* () { + const item = { + type: "image_generation_call", + id: "ig_1", + status: "completed", + result: "AQID", + } + const response = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { type: "response.output_item.done", item }, + { type: "response.completed", response: { usage: { input_tokens: 5, output_tokens: 1 } } }, + ), + ), + ), + ) + + expect(response.events.find(LLMEvent.is.toolResult)).toMatchObject({ + id: "ig_1", + name: "image_generation", + providerExecuted: true, + result: { + type: "content", + value: [{ type: "file", uri: "data:image/png;base64,AQID", mime: "image/png" }], + }, + }) + }), + ) + + it.effect("rejects malformed image generation base64", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents( + { + type: "response.output_item.done", + item: { type: "image_generation_call", id: "ig_bad", status: "completed", result: "%%%" }, + }, + { type: "response.completed", response: {} }, + ), + ), + ), + Effect.flip, + ) + + expect(error.reason._tag).toBe("InvalidProviderOutput") + expect(error.message).toContain("invalid image base64") + }), + ) + + it.effect("decodes code_interpreter_call as provider-executed events with code input", () => + Effect.gen(function* () { + const item = { + type: "code_interpreter_call", + id: "ci_1", + status: "completed", + code: "print(1+1)", + container_id: "cnt_xyz", + outputs: [{ type: "logs", logs: "2\n" }], + } + const body = sseEvents( + { type: "response.output_item.done", item }, + { type: "response.completed", response: { usage: { input_tokens: 5, output_tokens: 1 } } }, + ) + const response = yield* LLMClient.generate(request).pipe(Effect.provide(fixedResponse(body))) + + const toolCall = response.events.find((event) => event.type === "tool-call") + expect(toolCall).toEqual({ + type: "tool-call", + id: "ci_1", + name: "code_interpreter", + input: { code: "print(1+1)", container_id: "cnt_xyz" }, + providerExecuted: true, + providerMetadata: { openai: { itemId: "ci_1" } }, + }) + const toolResult = response.events.find((event) => event.type === "tool-result") + expect(toolResult).toEqual({ + type: "tool-result", + id: "ci_1", + name: "code_interpreter", + result: { type: "json", value: item }, + providerExecuted: true, + providerMetadata: { openai: { itemId: "ci_1" } }, + }) + }), + ) + + it.effect("lowers user image and PDF content", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + id: "req_media", + model, + messages: [ + Message.user([ + { type: "media", mediaType: "image/png", data: "AAECAw==" }, + { type: "media", mediaType: "application/pdf", data: "JVBERi0xLjQ=", filename: "report.pdf" }, + ]), + ], + }), + ) + + expect(prepared.body.input).toEqual([ + { + role: "user", + content: [ + { type: "input_image", image_url: "data:image/png;base64,AAECAw==" }, + { + type: "input_file", + filename: "report.pdf", + file_data: "data:application/pdf;base64,JVBERi0xLjQ=", + }, + ], + }, + ]) + }), + ) + + it.effect("uses xAI inline file encoding for user PDFs", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: xaiModel, + messages: [ + Message.user({ + type: "media", + mediaType: "application/pdf", + data: "data:application/pdf;base64,JVBERi0xLjQ=", + filename: "report.pdf", + }), + ], + }), + ) + + expect(prepared.body.input).toEqual([ + { + role: "user", + content: [ + { + type: "input_file", + filename: "report.pdf", + file_data: "JVBERi0xLjQ=", + mime_type: "application/pdf", + }, + ], + }, + ]) + }), + ) + + it.effect("rejects unsupported user media content", () => + Effect.gen(function* () { + const error = yield* LLMClient.prepare( + LLM.request({ + id: "req_media", + model, + messages: [Message.user({ type: "media", mediaType: "application/x-tar", data: "AAECAw==" })], + }), + ).pipe(Effect.flip) + + expect(error.message).toContain("OpenAI Responses does not support media type application/x-tar") + }), + ) + + it.effect("fails with a typed rate limit for provider error frames", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide(fixedResponse(sseEvents({ type: "error", code: "rate_limit_exceeded", message: "Slow down" }))), + Effect.flip, + ) + + expect(error).toBeInstanceOf(LLMError) + expect(error.reason).toMatchObject({ _tag: "RateLimit", message: "rate_limit_exceeded: Slow down" }) + }), + ) + + it.effect("falls back to error code when no message is present", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide(fixedResponse(sseEvents({ type: "error", code: "internal_error" }))), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "ProviderInternal", message: "internal_error" }) + }), + ) + + it.effect("falls back to error code when message is empty", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide(fixedResponse(sseEvents({ type: "error", code: "internal_error", message: "" }))), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "ProviderInternal", message: "internal_error" }) + }), + ) + + // Regression: `response.failed` carries the failure details under + // `response.error`, not at the top level. The previous handler only + // checked top-level `message`/`code` and so always emitted the bare + // "OpenAI Responses response failed" string, hiding the real cause. + it.effect("surfaces response.failed details from response.error", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents({ + type: "response.failed", + response: { + id: "resp_failed_1", + error: { code: "server_error", message: "Upstream model unavailable" }, + }, + }), + ), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ + _tag: "ProviderInternal", + message: "server_error: Upstream model unavailable", + }) + }), + ) + + it.effect("surfaces response.failed code when no nested message is present", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents({ + type: "response.failed", + response: { id: "resp_failed_2", error: { code: "invalid_prompt" } }, + }), + ), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "InvalidRequest", message: "invalid_prompt" }) + }), + ) + + it.effect("surfaces error event details nested under response.error", () => + Effect.gen(function* () { + // Some OpenAI-compatible proxies and older SDK versions wrap the + // top-level error fields into a nested `response.error` payload + // when they bubble up an HTTP error as an SSE `error` event. Honour + // both shapes so the user still sees the underlying cause instead + // of the catch-all string. + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents({ + type: "error", + response: { error: { code: "context_length_exceeded", message: "prompt too long" } }, + }), + ), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ + _tag: "InvalidRequest", + message: "context_length_exceeded: prompt too long", + classification: "context-overflow", + }) + }), + ) + + it.effect("surfaces error event details nested under error", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents({ + type: "error", + sequence_number: 2, + error: { + type: "invalid_request_error", + code: "context_length_exceeded", + message: "prompt too long", + param: "input", + }, + }), + ), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ + _tag: "InvalidRequest", + message: "context_length_exceeded: prompt too long", + classification: "context-overflow", + }) + }), + ) + + it.effect("accepts nullable fields in spec-compliant error events", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse( + sseEvents({ + type: "error", + code: null, + message: "Something went wrong", + param: null, + sequence_number: 1, + }), + ), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "UnknownProvider", message: "Something went wrong" }) + }), + ) + + it.effect("falls back to a stable default when error is null", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide(fixedResponse(sseEvents({ type: "error", error: null }))), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "UnknownProvider", message: "OpenAI Responses stream error" }) + }), + ) + + it.effect("falls back to a stable default when both error and response are absent", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide(fixedResponse(sseEvents({ type: "error" }))), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "UnknownProvider", message: "OpenAI Responses stream error" }) + }), + ) + + it.effect("falls back to a stable default when response.failed has no error payload", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide(fixedResponse(sseEvents({ type: "response.failed", response: { id: "resp_failed_3" } }))), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "UnknownProvider", message: "OpenAI Responses response failed" }) + }), + ) + + it.effect("fails HTTP provider errors before stream parsing", () => + Effect.gen(function* () { + const error = yield* LLMClient.generate(request).pipe( + Effect.provide( + fixedResponse('{"error":{"type":"invalid_request_error","message":"Bad request"}}', { + status: 400, + headers: { "content-type": "application/json" }, + }), + ), + Effect.flip, + ) + + expect(error).toBeInstanceOf(LLMError) + expect(error.reason).toMatchObject({ _tag: "InvalidRequest" }) + expect(error.message).toContain("HTTP 400") + }), + ) +}) diff --git a/packages/ai/test/provider/openrouter.test.ts b/packages/ai/test/provider/openrouter.test.ts new file mode 100644 index 000000000000..b4ac2fe2e526 --- /dev/null +++ b/packages/ai/test/provider/openrouter.test.ts @@ -0,0 +1,192 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { LLM, Message } from "../../src" +import { LLMClient } from "../../src/route" +import * as OpenRouter from "../../src/providers/openrouter" +import { it } from "../lib/effect" +import { fixedResponse } from "../lib/http" +import { sseEvents } from "../lib/sse" + +describe("OpenRouter", () => { + it.effect("prepares OpenRouter models through the OpenAI-compatible Chat route", () => + Effect.gen(function* () { + const model = OpenRouter.configure({ apiKey: "test-key" }).model("openai/gpt-4o-mini") + + expect(model).toMatchObject({ + id: "openai/gpt-4o-mini", + provider: "openrouter", + route: { id: "openrouter" }, + }) + expect(model.route.endpoint.baseURL).toBe("https://openrouter.ai/api/v1") + + const prepared = yield* LLMClient.prepare(LLM.request({ model, prompt: "Say hello." })) + + expect(prepared.route).toBe("openrouter") + expect(prepared.body).toMatchObject({ + model: "openai/gpt-4o-mini", + messages: [{ role: "user", content: "Say hello." }], + stream: true, + }) + }), + ) + + it.effect("applies OpenRouter payload options from the model helper", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: OpenRouter.configure({ + apiKey: "test-key", + providerOptions: { + openrouter: { + usage: true, + reasoning: { effort: "high" }, + promptCacheKey: "session_123", + }, + }, + }).model("anthropic/claude-3.7-sonnet:thinking"), + prompt: "Think briefly.", + }), + ) + + expect(prepared.body).toMatchObject({ + usage: { include: true }, + reasoning: { effort: "high" }, + prompt_cache_key: "session_123", + }) + }), + ) + + it.effect("preserves the upstream provider finish reason", () => + Effect.gen(function* () { + const model = OpenRouter.configure({ apiKey: "test-key" }).model("anthropic/claude-sonnet-4.6") + const response = yield* LLMClient.generate(LLM.request({ model, prompt: "Say hello." })).pipe( + Effect.provide( + fixedResponse( + sseEvents({ + choices: [{ delta: { content: "Hello" }, finish_reason: "stop", native_finish_reason: "end_turn" }], + }), + ), + ), + ) + + expect(response.finishReason).toEqual({ normalized: "stop", raw: "end_turn" }) + }), + ) + + it.effect("fails on a mid-stream provider error", () => + Effect.gen(function* () { + const model = OpenRouter.configure({ apiKey: "test-key" }).model("openai/gpt-4o-mini") + const error = yield* LLMClient.generate(LLM.request({ model, prompt: "Say hello." })).pipe( + Effect.provide( + fixedResponse( + sseEvents({ + error: { code: 502, message: "Provider disconnected" }, + }), + ), + ), + Effect.flip, + ) + + expect(error.reason).toMatchObject({ _tag: "ProviderInternal" }) + expect(error.message).toContain("Provider disconnected") + }), + ) + + it.effect("preserves manually supplied reasoning details", () => + Effect.gen(function* () { + const details = [ + { type: "reasoning.text", text: "Think", format: "anthropic-claude-v1", index: 0 }, + { type: "reasoning.text", text: "ing", format: "anthropic-claude-v1", index: 0 }, + { type: "reasoning.text", signature: "signed", format: "anthropic-claude-v1", index: 0 }, + { type: "reasoning.encrypted", data: "opaque", format: "openai-responses-v1", index: 1 }, + ] + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: OpenRouter.configure({ apiKey: "test-key" }).model("anthropic/claude-sonnet-4.6"), + messages: [ + Message.assistant([ + { + type: "reasoning", + text: "Thinking", + providerMetadata: { openai: { reasoningField: "reasoning", reasoningDetails: details } }, + }, + ]), + ], + }), + ) + + expect(prepared.body.messages).toEqual([ + { + role: "assistant", + content: null, + reasoning: "Thinking", + reasoning_details: details, + }, + ]) + }), + ) + + it.effect("preserves opaque and duplicate continuation details", () => + Effect.gen(function* () { + const details = [ + { type: "reasoning.future", format: "provider-v2", state: { opaque: true } }, + { type: "reasoning.encrypted", id: "state", data: "opaque" }, + { type: "reasoning.encrypted", id: "state", data: "opaque" }, + ] + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: OpenRouter.configure({ apiKey: "test-key" }).model("anthropic/claude-sonnet-4.6"), + messages: [ + Message.assistant({ + type: "reasoning", + text: "Thinking", + providerMetadata: { openai: { reasoningField: "reasoning", reasoningDetails: details } }, + }), + ], + }), + ) + + expect(prepared.body.messages).toEqual([ + { role: "assistant", content: null, reasoning: "Thinking", reasoning_details: details }, + ]) + }), + ) + + it.effect("does not merge distinct adjacent reasoning text blocks", () => + Effect.gen(function* () { + const details = [ + { type: "reasoning.text", id: "first", index: 0, text: "A", opaque: "first" }, + { type: "reasoning.text", id: "second", index: 1, text: "B", opaque: "second" }, + ] + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: OpenRouter.configure({ apiKey: "test-key" }).model("anthropic/claude-sonnet-4.6"), + messages: [ + Message.assistant({ + type: "reasoning", + text: "AB", + providerMetadata: { openai: { reasoningField: "reasoning", reasoningDetails: details } }, + }), + ], + }), + ) + + expect(prepared.body.messages).toEqual([ + { role: "assistant", content: null, reasoning: "AB", reasoning_details: details }, + ]) + }), + ) + + it.effect("omits scalar reasoning without continuation details", () => + Effect.gen(function* () { + const prepared = yield* LLMClient.prepare( + LLM.request({ + model: OpenRouter.configure({ apiKey: "test-key" }).model("anthropic/claude-sonnet-4.6"), + messages: [Message.assistant({ type: "reasoning", text: "Thinking" })], + }), + ) + + expect(prepared.body.messages).toEqual([{ role: "assistant", content: null }]) + }), + ) +}) diff --git a/packages/ai/test/provider/pdf.recorded.test.ts b/packages/ai/test/provider/pdf.recorded.test.ts new file mode 100644 index 000000000000..1a4c65b73562 --- /dev/null +++ b/packages/ai/test/provider/pdf.recorded.test.ts @@ -0,0 +1,207 @@ +import { describe, expect } from "bun:test" +import { Effect, Schema, Stream } from "effect" +import { LLM, LLMResponse, Message, ToolDefinition, type Model } from "../../src" +import { AmazonBedrock, Anthropic, Google, OpenAI, XAI } from "../../src/providers" +import { LLMClient } from "../../src/route" +import { Tool } from "../../src/tool" +import { runTools } from "../lib/tool-runtime" +import { recordedTests } from "../recorded-test" + +const CODE = "ORCHID-7391" +const PDF = + "JVBERi0xLjQKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZyAvUGFnZXMgMiAwIFIgPj4KZW5kb2JqCjIgMCBvYmoKPDwgL1R5cGUgL1BhZ2VzIC9LaWRzIFszIDAgUl0gL0NvdW50IDEgPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2UgL1BhcmVudCAyIDAgUiAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXSAvUmVzb3VyY2VzIDw8IC9Gb250IDw8IC9GMSA1IDAgUiA+PiA+PiAvQ29udGVudHMgNCAwIFIgPj4KZW5kb2JqCjQgMCBvYmoKPDwgL0xlbmd0aCA3NSA+PgpzdHJlYW0KQlQKL0YxIDE4IFRmCjcyIDcyMCBUZAooUERGIGNhc3NldHRlIHZlcmlmaWNhdGlvbiBjb2RlOiBPUkNISUQtNzM5MSkgVGoKRVQKZW5kc3RyZWFtCmVuZG9iago1IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMSAvQmFzZUZvbnQgL0hlbHZldGljYSA+PgplbmRvYmoKeHJlZgowIDYKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDA5IDAwMDAwIG4gCjAwMDAwMDAwNTggMDAwMDAgbiAKMDAwMDAwMDExNSAwMDAwMCBuIAowMDAwMDAwMjQxIDAwMDAwIG4gCjAwMDAwMDAzNjUgMDAwMDAgbiAKdHJhaWxlcgo8PCAvU2l6ZSA2IC9Sb290IDEgMCBSID4+CnN0YXJ0eHJlZgo0MzUKJSVFT0YK" + +const openai = OpenAI.configure({ apiKey: process.env.OPENAI_API_KEY ?? "fixture" }) +const anthropic = Anthropic.configure({ apiKey: process.env.ANTHROPIC_API_KEY ?? "fixture" }) +const google = Google.configure({ apiKey: process.env.GOOGLE_API_KEY ?? "fixture" }) +const xai = XAI.configure({ apiKey: process.env.XAI_API_KEY ?? "fixture" }) +const bedrock = AmazonBedrock.configure({ + apiKey: process.env.AWS_BEDROCK_API_KEY ?? "fixture", + region: process.env.AWS_REGION ?? "us-east-1", +}) + +const targets: ReadonlyArray<{ + readonly id: string + readonly name: string + readonly provider: string + readonly protocol: string + readonly requires: string + readonly filename: string + readonly maxTokens: number + readonly model: Model +}> = [ + { + id: "openai", + name: "OpenAI Responses gpt-4o-mini", + provider: "openai", + protocol: "openai-responses", + requires: "OPENAI_API_KEY", + filename: "verification.pdf", + maxTokens: 40, + model: openai.responses("gpt-4o-mini"), + }, + { + id: "anthropic", + name: "Anthropic Haiku 4.5", + provider: "anthropic", + protocol: "anthropic-messages", + requires: "ANTHROPIC_API_KEY", + filename: "verification.pdf", + maxTokens: 40, + model: anthropic.model("claude-haiku-4-5-20251001"), + }, + { + id: "gemini", + name: "Gemini 3.5 Flash", + provider: "google", + protocol: "gemini", + requires: "GOOGLE_API_KEY", + filename: "verification.pdf", + maxTokens: 256, + model: google.model("gemini-3.5-flash"), + }, + { + id: "xai", + name: "xAI Grok 4.5", + provider: "xai", + protocol: "openai-responses", + requires: "XAI_API_KEY", + filename: "verification.pdf", + maxTokens: 40, + model: xai.responses("grok-4.5"), + }, + { + id: "bedrock", + name: "Bedrock Claude Haiku 4.5", + provider: "amazon-bedrock", + protocol: "bedrock-converse", + requires: "AWS_BEDROCK_API_KEY", + filename: "verification", + maxTokens: 40, + model: bedrock.model("us.anthropic.claude-haiku-4-5-20251001-v1:0"), + }, +] + +const recorded = recordedTests({ prefix: "pdf", tags: ["pdf"] }) +const prompt = "Return only the verification code from the PDF." +const readPdf = ToolDefinition.make({ + name: "read_pdf", + description: "Read the attached PDF.", + inputSchema: { type: "object", properties: {}, additionalProperties: false }, +}) +const readPdfRuntime = Tool.make({ + description: readPdf.description, + parameters: Schema.Struct({ path: Schema.String }), + success: Schema.String, + execute: () => Effect.succeed("PDF read successfully"), + toModelOutput: () => [ + { type: "text", text: "PDF read successfully" }, + { + type: "file", + uri: `data:application/pdf;base64,${PDF}`, + mime: "application/pdf", + name: "verification.pdf", + }, + ], +}) + +const expectCode = (response: LLMResponse) => { + expect(response.finishReason.normalized).toBe("stop") + expect(response.text.toUpperCase()).toContain(CODE) +} + +describe("PDF recorded", () => { + for (const target of targets) { + recorded.effect.with( + `reads a user PDF with ${target.name}`, + { + id: `${target.id}-user-input`, + provider: target.provider, + protocol: target.protocol, + requires: [target.requires], + tags: ["user-input"], + }, + Effect.gen(function* () { + expectCode( + yield* LLMClient.generate( + LLM.request({ + id: `recorded_pdf_${target.id}_user_input`, + model: target.model, + cache: "none", + generation: { maxTokens: target.maxTokens, temperature: 0 }, + messages: [ + Message.user([ + { type: "media", mediaType: "application/pdf", data: PDF, filename: target.filename }, + { type: "text", text: prompt }, + ]), + ], + }), + ), + ) + }), + ) + + recorded.effect.with( + `reads a PDF tool result with ${target.name}`, + { + id: `${target.id}-tool-result`, + provider: target.provider, + protocol: target.protocol, + requires: [target.requires], + tags: ["tool", "tool-result"], + }, + Effect.gen(function* () { + if (target.id === "gemini") { + const events = Array.from( + yield* runTools({ + request: LLM.request({ + id: "recorded_pdf_gemini_tool_result", + model: target.model, + system: + "Call read_pdf exactly once with path verification.pdf, then reply only with the verification code from its PDF.", + prompt: "Use read_pdf with path verification.pdf and return the verification code.", + cache: "none", + generation: { maxTokens: target.maxTokens, temperature: 0 }, + }), + tools: { read_pdf: readPdfRuntime }, + }).pipe(Stream.runCollect), + ) + expect(events.at(-1)).toMatchObject({ type: "finish", reason: { normalized: "stop" } }) + expect(LLMResponse.text({ events }).toUpperCase()).toContain(CODE) + return + } + + expectCode( + yield* LLMClient.generate( + LLM.request({ + id: `recorded_pdf_${target.id}_tool_result`, + model: target.model, + system: "Read the PDF returned by the tool and follow the user's response format exactly.", + cache: "none", + generation: { maxTokens: target.maxTokens, temperature: 0 }, + messages: [ + Message.user(prompt), + Message.assistant([{ type: "tool-call", id: "call_pdf_1", name: readPdf.name, input: {} }]), + Message.tool({ + id: "call_pdf_1", + name: readPdf.name, + resultType: "content", + result: [ + { type: "text", text: "PDF read successfully" }, + { + type: "file", + uri: `data:application/pdf;base64,${PDF}`, + mime: "application/pdf", + name: target.filename, + }, + ], + }), + ], + tools: [readPdf], + }), + ), + ) + }), + ) + } +}) diff --git a/packages/ai/test/provider/xai-images.recorded.test.ts b/packages/ai/test/provider/xai-images.recorded.test.ts new file mode 100644 index 000000000000..e856e83cc082 --- /dev/null +++ b/packages/ai/test/provider/xai-images.recorded.test.ts @@ -0,0 +1,55 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { Image, ImageInput } from "../../src" +import { XAI } from "../../src/providers" +import { dimensions } from "../lib/image" +import { recordedTests } from "../recorded-test" + +const model = XAI.configure({ + apiKey: process.env.XAI_API_KEY ?? "fixture", +}).image("grok-imagine-image") + +const recorded = recordedTests({ + prefix: "xai-images", + provider: "xai", + protocol: "xai-images", + requires: ["XAI_API_KEY"], +}) + +describe("xAI Images recorded", () => { + recorded.effect("generates an image", () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model, + prompt: "A simple flat black diamond centered on a plain white background.", + options: { aspectRatio: "1:1", resolution: "1k", responseFormat: "b64_json" }, + }) + + expect(response.images).toHaveLength(1) + expect(response.image?.mediaType.startsWith("image/")).toBe(true) + expect(response.image?.data).toBeInstanceOf(Uint8Array) + expect(response.image?.data.length).toBeGreaterThan(0) + }), + ) + + recorded.effect("edits an image", () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model, + prompt: "Keep the simple shape and change it from black to bright purple.", + images: [ + ImageInput.bytes( + yield* Effect.promise(() => Bun.file("test/fixtures/images/edit-source.jpg").bytes()), + "image/jpeg", + ), + ], + options: { aspectRatio: "1:1", resolution: "1k", responseFormat: "b64_json" }, + }) + + expect(response.image?.mediaType).toMatch(/^image\/(jpeg|png)$/) + expect(response.image?.data).toBeInstanceOf(Uint8Array) + if (!(response.image?.data instanceof Uint8Array)) throw new Error("Expected owned xAI image bytes") + expect(dimensions(response.image.data)).toEqual({ width: 1024, height: 1024 }) + }), + ) +}) diff --git a/packages/ai/test/provider/xai-images.test.ts b/packages/ai/test/provider/xai-images.test.ts new file mode 100644 index 000000000000..ce801f2f9153 --- /dev/null +++ b/packages/ai/test/provider/xai-images.test.ts @@ -0,0 +1,109 @@ +import { describe, expect } from "bun:test" +import { Effect, Layer } from "effect" +import { Headers, HttpClientRequest } from "effect/unstable/http" +import { Image, ImageClient } from "../../src" +import { XAI } from "../../src/providers" +import { Auth } from "../../src/route" +import { it } from "../lib/effect" +import { dynamicResponse } from "../lib/http" + +describe("xAI Images", () => { + it.effect("generates through the OpenAI-compatible Images API", () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model: XAI.configure({ + apiKey: "test", + baseURL: "https://api.xai.test/v1", + http: { body: { configured: true }, headers: { "x-default": "yes" } }, + }).image("grok-imagine-image"), + prompt: "A robot tending a rooftop garden", + options: { + n: 2, + aspectRatio: "16:9", + aspect_ratio: "4:3", + resolution: "1k", + responseFormat: "url", + response_format: "b64_json", + future_option: true, + }, + http: { + body: { resolution: "2k", future_option: "http" }, + headers: { "x-request": "yes" }, + query: { trace: "1" }, + }, + }) + + expect(response.images).toHaveLength(2) + expect(response.image?.mediaType).toBe("image/jpeg") + expect(response.image?.data).toEqual(Uint8Array.from([1, 2, 3])) + expect(response.images[1]?.mediaType).toBe("application/octet-stream") + expect(response.images[1]?.data).toBe("https://api.xai.test/image.jpg") + expect(response.usage?.providerMetadata).toEqual({ xai: { num_images: 2 } }) + expect(response.providerMetadata).toEqual({ xai: { usage: { num_images: 2 } } }) + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.url).toBe("https://api.xai.test/v1/images/generations?trace=1") + expect(request.headers.get("authorization")).toBe("Bearer test") + expect(request.headers.get("x-default")).toBe("yes") + expect(request.headers.get("x-request")).toBe("yes") + expect(JSON.parse(input.text)).toEqual({ + model: "grok-imagine-image", + prompt: "A robot tending a rooftop garden", + n: 2, + aspect_ratio: "4:3", + resolution: "2k", + response_format: "b64_json", + future_option: "http", + configured: true, + }) + return input.respond( + JSON.stringify({ + data: [ + { b64_json: "AQID", url: null, mime_type: "image/jpeg" }, + { b64_json: null, url: "https://api.xai.test/image.jpg", mime_type: null }, + ], + usage: { num_images: 2 }, + }), + { headers: { "content-type": "application/json" } }, + ) + }), + ), + ), + ), + ), + ), + ) + + it.effect("supports request-level custom auth", () => + Image.generate({ + model: XAI.configure({ + baseURL: "https://api.xai.test/v1", + auth: Auth.custom((input) => + Effect.succeed(Headers.set(input.headers, "x-custom-auth", new URL(input.url).hostname)), + ), + }).image("grok-imagine-image"), + prompt: "A robot tending a rooftop garden", + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.headers.get("x-custom-auth")).toBe("api.xai.test") + return input.respond(JSON.stringify({ data: [{ b64_json: "AQID", mime_type: "image/png" }] }), { + headers: { "content-type": "application/json" }, + }) + }), + ), + ), + ), + ), + ), + ) +}) diff --git a/packages/ai/test/provider/zai-images.recorded.test.ts b/packages/ai/test/provider/zai-images.recorded.test.ts new file mode 100644 index 000000000000..a1395d1bcb25 --- /dev/null +++ b/packages/ai/test/provider/zai-images.recorded.test.ts @@ -0,0 +1,32 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { Image } from "../../src" +import { ZAI } from "../../src/providers" +import { recordedTests } from "../recorded-test" + +const model = ZAI.configure({ apiKey: process.env.ZAI_API_KEY ?? "fixture" }).image("cogview-4-250304") + +const recorded = recordedTests({ + prefix: "zai-images", + provider: "zai", + protocol: "zai-images", + requires: ["ZAI_API_KEY"], +}) + +describe("Z.ai Images recorded", () => { + recorded.effect("generates an image", () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model, + prompt: "A simple flat red circle centered on a plain white background.", + options: { size: "1024x1024", quality: "standard", userID: "opencode-image-test" }, + }) + + expect(response.images).toHaveLength(1) + expect(response.image?.mediaType).toBe("application/octet-stream") + expect(response.image?.data).toBeString() + expect(response.image?.data).toStartWith("https://") + expect(response.providerMetadata?.zai).toBeDefined() + }), + ) +}) diff --git a/packages/ai/test/provider/zai-images.test.ts b/packages/ai/test/provider/zai-images.test.ts new file mode 100644 index 000000000000..bea8cd3e4889 --- /dev/null +++ b/packages/ai/test/provider/zai-images.test.ts @@ -0,0 +1,130 @@ +import { describe, expect } from "bun:test" +import { Effect, Layer } from "effect" +import { HttpClientRequest } from "effect/unstable/http" +import { Image, ImageClient } from "../../src" +import { ZAI } from "../../src/providers" +import { it } from "../lib/effect" +import { dynamicResponse, fixedResponse } from "../lib/http" + +describe("Z.ai Images", () => { + it.effect("generates through the Z.ai Images API", () => + Effect.gen(function* () { + const response = yield* Image.generate({ + model: ZAI.configure({ + apiKey: "test", + baseURL: "https://api.z.ai.test/api/paas/v4", + headers: { "x-default": "yes" }, + http: { body: { configured: true, quality: "configured" }, query: { trace: "default" } }, + }).image("glm-image"), + prompt: "A red circle on a white background", + options: { + quality: "hd", + userID: "alias-user", + user_id: "raw-user", + future_option: true, + }, + http: { + headers: { "x-request": "yes" }, + query: { trace: "request" }, + body: { quality: "final", user_id: "final-user" }, + }, + }) + + expect(response.images).toHaveLength(1) + expect(response.image?.mediaType).toBe("application/octet-stream") + expect(response.image?.data).toBe("https://cdn.z.ai/generated.png") + expect(response.providerMetadata).toEqual({ + zai: { + created: 1_760_335_349, + id: "generation-1", + requestID: "request-1", + contentFilter: [{ role: "future-role", level: 4.5 }], + }, + }) + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => + Effect.gen(function* () { + const request = yield* HttpClientRequest.toWeb(input.request).pipe(Effect.orDie) + expect(request.url).toBe("https://api.z.ai.test/api/paas/v4/images/generations?trace=request") + expect(request.headers.get("authorization")).toBe("Bearer test") + expect(request.headers.get("x-default")).toBe("yes") + expect(request.headers.get("x-request")).toBe("yes") + expect(JSON.parse(input.text)).toEqual({ + model: "glm-image", + prompt: "A red circle on a white background", + quality: "final", + user_id: "final-user", + future_option: true, + configured: true, + }) + return input.respond( + JSON.stringify({ + created: 1_760_335_349, + id: "generation-1", + request_id: "request-1", + data: [{ url: "https://cdn.z.ai/generated.png" }], + content_filter: [{ role: "future-role", level: 4.5 }], + }), + { headers: { "content-type": "application/json" } }, + ) + }), + ), + ), + ), + ), + ), + ) + + it.effect("lets raw native options override aliases", () => + Image.generate({ + model: ZAI.configure({ apiKey: "test" }).image("model"), + prompt: "test", + options: { quality: "future-quality", userID: "x", user_id: "raw-user" }, + }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + dynamicResponse((input) => { + expect(JSON.parse(input.text)).toMatchObject({ quality: "future-quality", user_id: "raw-user" }) + return Effect.succeed( + input.respond(JSON.stringify({ data: [{ url: "https://example.test/image.jpg" }] }), { + headers: { "content-type": "application/json" }, + }), + ) + }), + ), + ), + ), + ), + ) + + it.effect("rejects invalid response structures", () => + Effect.gen(function* () { + const model = ZAI.configure({ apiKey: "test" }).image("model") + const payloads = [ + {}, + { data: [] }, + { data: [{ b64_json: "image" }] }, + { data: [{ url: 1 }] }, + { data: [{ url: "https://example.test/image.jpg" }], content_filter: [{ role: 1, level: "high" }] }, + ] + + yield* Effect.forEach(payloads, (payload) => + Image.generate({ model, prompt: "test" }).pipe( + Effect.provide( + ImageClient.layer.pipe( + Layer.provide( + fixedResponse(JSON.stringify(payload), { headers: { "content-type": "application/json" } }), + ), + ), + ), + Effect.flip, + Effect.tap((error) => Effect.sync(() => expect(error.reason._tag).toBe("InvalidProviderOutput"))), + ), + ) + }), + ) +}) diff --git a/packages/llm/test/recorded-golden.ts b/packages/ai/test/recorded-golden.ts similarity index 96% rename from packages/llm/test/recorded-golden.ts rename to packages/ai/test/recorded-golden.ts index 540662b2993e..404a5028b2a6 100644 --- a/packages/llm/test/recorded-golden.ts +++ b/packages/ai/test/recorded-golden.ts @@ -28,7 +28,7 @@ type TargetInput = { readonly transport?: Transport readonly prefix?: string readonly tags?: ReadonlyArray - readonly metadata?: Record + readonly metadata?: HttpRecorder.CassetteMetadata readonly options?: HttpRecorder.RecorderOptions readonly scenarios: ReadonlyArray } @@ -43,7 +43,7 @@ const defaultPrefix = (target: TargetInput) => { const metadata = (target: TargetInput) => ({ provider: target.model.provider, - protocol: target.protocol, + ...(target.protocol ? { protocol: target.protocol } : {}), route: target.model.route.id, transport: target.transport ?? "http", model: target.model.id, diff --git a/packages/llm/test/recorded-runner.ts b/packages/ai/test/recorded-runner.ts similarity index 93% rename from packages/llm/test/recorded-runner.ts rename to packages/ai/test/recorded-runner.ts index 97d9b03f5462..904a9366acaf 100644 --- a/packages/llm/test/recorded-runner.ts +++ b/packages/ai/test/recorded-runner.ts @@ -1,3 +1,4 @@ +import type { HttpRecorder } from "@opencode-ai/http-recorder" import { test, type TestOptions } from "bun:test" import { Effect, type Layer } from "effect" import { testEffect } from "./lib/effect" @@ -11,7 +12,7 @@ export type RecordedGroupOptions = { readonly protocol?: string readonly requires?: ReadonlyArray readonly tags?: ReadonlyArray - readonly metadata?: Record + readonly metadata?: HttpRecorder.CassetteMetadata } export type RecordedCaseOptions = { @@ -21,7 +22,7 @@ export type RecordedCaseOptions = { readonly protocol?: string readonly requires?: ReadonlyArray readonly tags?: ReadonlyArray - readonly metadata?: Record + readonly metadata?: HttpRecorder.CassetteMetadata } export const recordedEffectGroup = < @@ -36,7 +37,7 @@ export const recordedEffectGroup = < readonly layer: (input: { readonly cassette: string readonly tags: ReadonlyArray - readonly metadata: Record + readonly metadata: HttpRecorder.CassetteMetadata readonly recording: boolean readonly options: Options readonly caseOptions: CaseOptions diff --git a/packages/llm/test/recorded-scenarios.ts b/packages/ai/test/recorded-scenarios.ts similarity index 92% rename from packages/llm/test/recorded-scenarios.ts rename to packages/ai/test/recorded-scenarios.ts index cac348da6590..d0f043cca74c 100644 --- a/packages/llm/test/recorded-scenarios.ts +++ b/packages/ai/test/recorded-scenarios.ts @@ -3,6 +3,7 @@ import { Effect, Schema } from "effect" import { LLM, LLMEvent, + LLMRequest, LLMResponse, Message, ToolRuntime, @@ -11,7 +12,6 @@ import { toDefinitions, type ContentPart, type FinishReason, - type LLMRequest, type Model, } from "../src" import { LLMClient } from "../src/route" @@ -91,7 +91,7 @@ const restroomImage = () => export const runWeatherToolLoop = (request: LLMRequest) => Effect.gen(function* () { const tools = { [weatherToolName]: weatherRuntimeTool } - let next = LLM.updateRequest(request, { tools: toDefinitions(tools) }) + let next = LLMRequest.update(request, { tools: toDefinitions(tools) }) const events: LLMEvent[] = [] for (let step = 0; step < 10; step++) { @@ -108,7 +108,7 @@ export const runWeatherToolLoop = (request: LLMRequest) => ToolRuntime.dispatch(tools, call).pipe(Effect.map((result) => [call, result] as const)), ) events.push(...dispatched.flatMap(([, result]) => result.events)) - next = LLM.updateRequest(next, { + next = LLMRequest.update(next, { messages: [ ...next.messages, Message.assistant(assistantContent(response.events)), @@ -120,34 +120,11 @@ export const runWeatherToolLoop = (request: LLMRequest) => throw new Error("Weather tool loop exceeded 10 steps") }) -const assistantContent = (events: ReadonlyArray) => { - const content: ContentPart[] = [] - for (const event of events) { - if (event.type === "text-delta" || event.type === "reasoning-delta") { - const type = event.type === "text-delta" ? "text" : "reasoning" - const last = content.at(-1) - if (last?.type === type) { - content[content.length - 1] = { ...last, text: `${last.text}${event.text}` } - } else { - content.push({ type, text: event.text }) - } - continue - } - if (event.type === "text-end" || event.type === "reasoning-end") { - const type = event.type === "text-end" ? "text" : "reasoning" - const last = content.at(-1) - if (last?.type === type) content[content.length - 1] = { ...last, providerMetadata: event.providerMetadata } - continue - } - if (event.type === "tool-call") content.push(event) - } - return content -} +const assistantContent = (events: ReadonlyArray) => + events.reduce(LLMResponse.reduce, LLMResponse.empty()).message.content -export const expectFinish = ( - events: ReadonlyArray, - reason: Extract["reason"], -) => expect(events.at(-1)).toMatchObject({ type: "finish", reason }) +export const expectFinish = (events: ReadonlyArray, reason: FinishReason) => + expect(events.at(-1)).toMatchObject({ type: "finish", reason: { normalized: reason } }) export const expectWeatherToolCall = (response: LLMResponse) => expect(response.toolCalls).toMatchObject([ @@ -157,10 +134,10 @@ export const expectWeatherToolCall = (response: LLMResponse) => export const expectWeatherToolLoop = (events: ReadonlyArray) => { const finishes = events.filter(LLMEvent.is.finish) expect(finishes).toHaveLength(1) - expect(finishes[0]?.reason).toBe("stop") + expect(finishes[0]?.reason.normalized).toBe("stop") const stepFinishes = events.filter(LLMEvent.is.stepFinish) - expect(stepFinishes.map((event) => event.reason)).toEqual(["tool-calls", "stop"]) + expect(stepFinishes.map((event) => event.reason.normalized)).toEqual(["tool-calls", "stop"]) const toolCalls = events.filter(LLMEvent.is.toolCall) expect(toolCalls).toHaveLength(1) @@ -524,7 +501,7 @@ export const eventSummary = (events: ReadonlyArray) => { continue } if (event.type === "finish") { - summary.push({ type: "finish", reason: event.reason, usage: usageSummary(event.usage) }) + summary.push({ type: "finish", reason: event.reason.normalized, usage: usageSummary(event.usage) }) } } return summary.map((item) => Object.fromEntries(Object.entries(item).filter((entry) => entry[1] !== undefined))) diff --git a/packages/ai/test/recorded-test.ts b/packages/ai/test/recorded-test.ts new file mode 100644 index 000000000000..a0df87d9ca28 --- /dev/null +++ b/packages/ai/test/recorded-test.ts @@ -0,0 +1,92 @@ +import { HttpRecorder } from "@opencode-ai/http-recorder" +import { Layer } from "effect" +import * as path from "node:path" +import { fileURLToPath } from "node:url" +import { LLMClient, RequestExecutor, WebSocketExecutor } from "../src/route" +import { ImageClient } from "../src/image-client" +import type { Service as ImageClientService } from "../src/image-client" +import type { Service as LLMClientService } from "../src/route/client" +import type { Service as RequestExecutorService } from "../src/route/executor" +import type { Service as WebSocketExecutorService } from "../src/route/transport/websocket" +import { + recordedEffectGroup, + type RecordedCaseOptions as RunnerCaseOptions, + type RecordedGroupOptions, +} from "./recorded-runner" + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const FIXTURES_DIR = path.resolve(__dirname, "fixtures", "recordings") + +type RecordedEnv = RequestExecutorService | WebSocketExecutorService | LLMClientService | ImageClientService + +type RecordedTestsOptions = RecordedGroupOptions & { + readonly options?: HttpRecorder.RecorderOptions +} + +type RecordedCaseOptions = RunnerCaseOptions & { + readonly options?: HttpRecorder.RecorderOptions +} + +const mergeOptions = ( + base: HttpRecorder.RecorderOptions | undefined, + override: HttpRecorder.RecorderOptions | undefined, +) => { + if (!base) return override + if (!override) return base + return { + ...base, + ...override, + metadata: base.metadata || override.metadata ? { ...base.metadata, ...override.metadata } : undefined, + redact: + base.redact || override.redact + ? { + ...base.redact, + ...override.redact, + headers: [...(base.redact?.headers ?? []), ...(override.redact?.headers ?? [])], + allowRequestHeaders: [ + ...(base.redact?.allowRequestHeaders ?? []), + ...(override.redact?.allowRequestHeaders ?? []), + ], + allowResponseHeaders: [ + ...(base.redact?.allowResponseHeaders ?? []), + ...(override.redact?.allowResponseHeaders ?? []), + ], + queryParameters: [...(base.redact?.queryParameters ?? []), ...(override.redact?.queryParameters ?? [])], + jsonFields: [...(base.redact?.jsonFields ?? []), ...(override.redact?.jsonFields ?? [])], + } + : undefined, + } +} + +export const recordedTests = (options: RecordedTestsOptions) => + recordedEffectGroup({ + duplicateLabel: "recorded cassette", + options, + cassetteExists: (cassette) => HttpRecorder.hasCassetteSync(cassette, { directory: FIXTURES_DIR }), + layer: ({ cassette, metadata, options, caseOptions, recording }) => { + const recorderOptions = mergeOptions(options.options, caseOptions.options) + const recorderMetadata = { + ...recorderOptions?.metadata, + ...metadata, + } + if (recording) { + if (process.env.CI !== undefined) throw new Error("Unset CI before recording HTTP cassettes") + HttpRecorder.removeCassetteSync(cassette, { directory: FIXTURES_DIR }) + } + const requestExecutor = RequestExecutor.layer.pipe( + Layer.provide( + HttpRecorder.layerFetch(cassette, { + ...recorderOptions, + directory: FIXTURES_DIR, + metadata: recorderMetadata, + }), + ), + ) + const deps = Layer.mergeAll(requestExecutor, WebSocketExecutor.layer) + return Layer.mergeAll( + deps, + LLMClient.layer.pipe(Layer.provide(deps)), + ImageClient.layer.pipe(Layer.provide(deps)), + ) + }, + }) diff --git a/packages/llm/test/recorded-utils.ts b/packages/ai/test/recorded-utils.ts similarity index 100% rename from packages/llm/test/recorded-utils.ts rename to packages/ai/test/recorded-utils.ts diff --git a/packages/ai/test/response.test.ts b/packages/ai/test/response.test.ts new file mode 100644 index 000000000000..f05f8e167e58 --- /dev/null +++ b/packages/ai/test/response.test.ts @@ -0,0 +1,121 @@ +import { describe, expect, test } from "bun:test" +import { LLMEvent, LLMResponse } from "../src" + +const reduce = (events: ReadonlyArray) => events.reduce(LLMResponse.reduce, LLMResponse.empty()) +const finishEvents = (events: ReadonlyArray) => events.filter(LLMEvent.is.finish) + +describe("LLMResponse reducer", () => { + test("assembles interleaved reasoning and text with end metadata", () => { + const events = [ + LLMEvent.reasoningStart({ id: "r1" }), + LLMEvent.reasoningDelta({ id: "r1", text: "I should " }), + LLMEvent.textStart({ id: "t1" }), + LLMEvent.reasoningDelta({ id: "r1", text: "compare..." }), + LLMEvent.reasoningEnd({ id: "r1", providerMetadata: { anthropic: { signature: "sig" } } }), + LLMEvent.textDelta({ id: "t1", text: "Answer" }), + LLMEvent.textEnd({ id: "t1" }), + LLMEvent.finish({ reason: { normalized: "stop" }, usage: { outputTokens: 5 } }), + ] + const response = LLMResponse.fromEvents(events) + + expect(response?.finishReason).toEqual({ normalized: "stop" }) + expect(response?.usage).toMatchObject({ outputTokens: 5 }) + expect(response?.events).toEqual(events) + expect(response?.events.map((event) => event.type)).toEqual([ + "reasoning-start", + "reasoning-delta", + "text-start", + "reasoning-delta", + "reasoning-end", + "text-delta", + "text-end", + "finish", + ]) + expect(finishEvents(response?.events ?? [])).toHaveLength(1) + expect(response?.message.content).toEqual([ + { + type: "reasoning", + text: "I should compare...", + providerMetadata: { anthropic: { signature: "sig" } }, + }, + { type: "text", text: "Answer" }, + ]) + }) + + test("preserves partial content without completing a failed stream", () => { + const state = reduce([LLMEvent.textStart({ id: "t1" }), LLMEvent.textDelta({ id: "t1", text: "partial" })]) + + expect(LLMResponse.complete(state)).toBeUndefined() + expect(state.message.content).toEqual([{ type: "text", text: "partial" }]) + }) + + test("does not complete ended content without a terminal finish", () => { + const state = reduce([ + LLMEvent.textStart({ id: "t1" }), + LLMEvent.textDelta({ id: "t1", text: "partial" }), + LLMEvent.textEnd({ id: "t1" }), + ]) + + expect(LLMResponse.complete(state)).toBeUndefined() + expect(state.message.content).toEqual([{ type: "text", text: "partial" }]) + }) + + test("uses terminal usage when present and keeps prior usage when finish omits it", () => { + const withFinishUsage = LLMResponse.fromEvents([ + LLMEvent.stepFinish({ index: 0, reason: { normalized: "stop" }, usage: { inputTokens: 3 } }), + LLMEvent.finish({ reason: { normalized: "stop" }, usage: { outputTokens: 2 } }), + ]) + const withoutFinishUsage = LLMResponse.fromEvents([ + LLMEvent.stepFinish({ index: 0, reason: { normalized: "stop" }, usage: { inputTokens: 3 } }), + LLMEvent.finish({ reason: { normalized: "stop" } }), + ]) + + expect(withFinishUsage?.usage).toMatchObject({ outputTokens: 2 }) + expect(withoutFinishUsage?.usage).toMatchObject({ inputTokens: 3 }) + }) + + test("preserves the raw finish reason", () => { + const response = LLMResponse.fromEvents([ + LLMEvent.finish({ reason: { normalized: "unknown", raw: "provider_limit" } }), + ]) + + expect(response?.finishReason).toEqual({ normalized: "unknown", raw: "provider_limit" }) + }) + + test("assembles tool-call content only after the completed tool call event", () => { + const pending = reduce([ + LLMEvent.toolInputStart({ id: "call_1", name: "lookup" }), + LLMEvent.toolInputDelta({ id: "call_1", name: "lookup", text: '{"query"' }), + ]) + + expect(pending.message.content).toEqual([]) + expect(pending.toolInputs.call_1?.text).toBe('{"query"') + + const response = LLMResponse.fromEvents([ + ...pending.events, + LLMEvent.toolInputDelta({ id: "call_1", name: "lookup", text: ':"weather"}' }), + LLMEvent.toolInputEnd({ id: "call_1", name: "lookup" }), + LLMEvent.toolCall({ id: "call_1", name: "lookup", input: { query: "weather" } }), + LLMEvent.finish({ reason: { normalized: "tool-calls" } }), + ]) + + expect(response?.message.content).toEqual([ + { type: "tool-call", id: "call_1", name: "lookup", input: { query: "weather" } }, + ]) + }) + + test("clears malformed tool input without appending an executable call", () => { + const state = reduce([ + LLMEvent.toolInputStart({ id: "call_1", name: "lookup" }), + LLMEvent.toolInputDelta({ id: "call_1", name: "lookup", text: '{"query":"partial' }), + LLMEvent.toolInputError({ + id: "call_1", + name: "lookup", + raw: '{"query":"partial', + }), + ]) + + expect(state.toolInputs).toEqual({}) + expect(state.message.content).toEqual([]) + }) +}) diff --git a/packages/llm/test/route.test.ts b/packages/ai/test/route.test.ts similarity index 100% rename from packages/llm/test/route.test.ts rename to packages/ai/test/route.test.ts diff --git a/packages/llm/test/schema.test.ts b/packages/ai/test/schema.test.ts similarity index 92% rename from packages/llm/test/schema.test.ts rename to packages/ai/test/schema.test.ts index 3c6628c2e511..4fdada7d1438 100644 --- a/packages/llm/test/schema.test.ts +++ b/packages/ai/test/schema.test.ts @@ -48,8 +48,12 @@ describe("llm schema", () => { }) test("finish constructors accept usage input", () => { - expect(LLMEvent.stepFinish({ index: 0, reason: "stop", usage: { inputTokens: 1 } }).usage).toBeInstanceOf(Usage) - expect(LLMEvent.finish({ reason: "stop", usage: { outputTokens: 2 } }).usage).toBeInstanceOf(Usage) + expect( + LLMEvent.stepFinish({ index: 0, reason: { normalized: "stop" }, usage: { inputTokens: 1 } }).usage, + ).toBeInstanceOf(Usage) + expect(LLMEvent.finish({ reason: { normalized: "stop" }, usage: { outputTokens: 2 } }).usage).toBeInstanceOf( + Usage, + ) }) test("content part tagged union exposes guards", () => { diff --git a/packages/llm/test/tool-runtime.test.ts b/packages/ai/test/tool-runtime.test.ts similarity index 94% rename from packages/llm/test/tool-runtime.test.ts rename to packages/ai/test/tool-runtime.test.ts index c03a18bd8aa2..227f07fc245f 100644 --- a/packages/llm/test/tool-runtime.test.ts +++ b/packages/ai/test/tool-runtime.test.ts @@ -1,4 +1,5 @@ import { describe, expect } from "bun:test" +import { Content } from "@opencode-ai/schema/tool" import { Effect, Schema, Stream } from "effect" import { GenerationOptions, @@ -7,7 +8,6 @@ import { LLMRequest, LLMResponse, ToolChoice, - ToolContent, ToolOutput, toDefinitions, } from "../src" @@ -183,6 +183,51 @@ describe("LLMClient tools", () => { }), ) + it.effect("preserves provider metadata on dispatched tool results", () => + Effect.gen(function* () { + const tool = Tool.make({ + description: "Return text.", + parameters: Schema.Struct({}), + success: Schema.String, + execute: () => Effect.succeed("hello"), + }) + const providerMetadata = { google: { functionCallId: "provider_call" } } + const dispatched = yield* ToolRuntime.dispatch( + { tool }, + LLMEvent.toolCall({ id: "call_1", name: "tool", input: {}, providerMetadata }), + ) + + expect(dispatched.events).toEqual([ + LLMEvent.toolResult({ + id: "call_1", + name: "tool", + result: { type: "text", value: "hello" }, + output: { structured: "hello", content: [{ type: "text", text: "hello" }] }, + providerMetadata, + }), + ]) + + const failed = yield* ToolRuntime.dispatch( + {}, + LLMEvent.toolCall({ id: "call_2", name: "missing", input: {}, providerMetadata }), + ) + expect(failed.events).toEqual([ + LLMEvent.toolError({ + id: "call_2", + name: "missing", + message: "Unknown tool: missing", + providerMetadata, + }), + LLMEvent.toolResult({ + id: "call_2", + name: "missing", + result: { type: "error", value: "Unknown tool: missing" }, + providerMetadata, + }), + ]) + }), + ) + it.effect("uses the narrow default projection for encoded typed success", () => Effect.gen(function* () { const text = Tool.make({ @@ -234,7 +279,7 @@ describe("LLMClient tools", () => { it.effect("models canonical tool files with URIs", () => Effect.sync(() => { - const decode = Schema.decodeUnknownSync(ToolContent) + const decode = Schema.decodeUnknownSync(Content) expect(decode({ type: "file", uri: "data:image/png;base64,AAAA", mime: "image/png" })).toEqual({ type: "file", @@ -494,6 +539,7 @@ describe("LLMClient tools", () => { }, { type: "content_block_stop", index: 1 }, { type: "message_delta", delta: { stop_reason: "tool_use" }, usage: { output_tokens: 5 } }, + { type: "message_stop" }, ) : sseEvents( { type: "message_start", message: { usage: { input_tokens: 5 } } }, @@ -501,6 +547,7 @@ describe("LLMClient tools", () => { { type: "content_block_delta", index: 0, delta: { type: "text_delta", text: "Done." } }, { type: "content_block_stop", index: 0 }, { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 1 } }, + { type: "message_stop" }, ), { headers: { "content-type": "text/event-stream" } }, ) @@ -508,7 +555,7 @@ describe("LLMClient tools", () => { ) yield* TestToolRuntime.runTools({ - request: LLM.updateRequest(baseRequest, { + request: LLMRequest.update(baseRequest, { model: AnthropicMessages.route .with({ auth: Auth.header("x-api-key", "test") }) .model({ id: "claude-sonnet-4-5" }), @@ -756,6 +803,7 @@ describe("LLMClient tools", () => { { type: "content_block_delta", index: 2, delta: { type: "text_delta", text: "Done." } }, { type: "content_block_stop", index: 2 }, { type: "message_delta", delta: { stop_reason: "end_turn" }, usage: { output_tokens: 8 } }, + { type: "message_stop" }, ), { headers: { "content-type": "text/event-stream" } }, ) @@ -763,7 +811,7 @@ describe("LLMClient tools", () => { ) const events = Array.from( yield* TestToolRuntime.runTools({ - request: LLM.updateRequest(baseRequest, { + request: LLMRequest.update(baseRequest, { model: AnthropicMessages.route .with({ auth: Auth.header("x-api-key", "test") }) .model({ id: "claude-sonnet-4-5" }), diff --git a/packages/ai/test/tool-schema-projection.test.ts b/packages/ai/test/tool-schema-projection.test.ts new file mode 100644 index 000000000000..a9df815dafab --- /dev/null +++ b/packages/ai/test/tool-schema-projection.test.ts @@ -0,0 +1,117 @@ +import { describe, expect, test } from "bun:test" +import { Effect } from "effect" +import { LLM } from "../src" +import { OpenAIChat } from "../src/protocols" +import { ToolSchemaProjection } from "../src/protocols/utils/tool-schema" +import { Auth, LLMClient } from "../src/route" +import { it } from "./lib/effect" + +describe("tool schema projections", () => { + test("moonshot strips $ref siblings and converts tuple arrays to a schema object", () => { + expect( + ToolSchemaProjection.moonshot({ + type: "object", + properties: { + linked: { $ref: "#/$defs/Linked", description: "drop me" }, + tuple: { type: "array", items: [{ type: "string" }, { type: "number" }] }, + prefixTuple: { type: "array", prefixItems: [{ type: "boolean" }, { type: "string" }] }, + }, + }), + ).toEqual({ + type: "object", + properties: { + linked: { $ref: "#/$defs/Linked" }, + tuple: { type: "array", items: { anyOf: [{ type: "string" }, { type: "number" }] } }, + prefixTuple: { type: "array", items: { anyOf: [{ type: "boolean" }, { type: "string" }] } }, + }, + }) + }) + + test("gemini handles numeric enums, dangling required fields, untyped arrays, and scalar object keys", () => { + expect( + ToolSchemaProjection.gemini({ + type: "object", + required: ["status", "missing"], + properties: { + status: { type: "integer", enum: [1, 2] }, + tags: { type: "array" }, + name: { type: "string", properties: { ignored: { type: "string" } }, required: ["ignored"] }, + }, + }), + ).toEqual({ + type: "object", + required: ["status"], + properties: { + status: { type: "string", enum: ["1", "2"] }, + tags: { type: "array", items: { type: "string" } }, + name: { type: "string" }, + }, + }) + }) + + test("openai keeps one flat object top-level schema", () => { + expect( + ToolSchemaProjection.openAI({ + anyOf: [ + { + type: "object", + properties: { + path: { type: "string" }, + maybe: { anyOf: [{ type: "string" }, { type: "null" }] }, + }, + }, + { type: "object", properties: { resource: { type: "string" } } }, + ], + }), + ).toEqual({ + type: "object", + properties: { + path: { type: "string" }, + maybe: { type: "string" }, + resource: { type: "string" }, + }, + additionalProperties: false, + }) + }) + + it.effect("applies model compatibility before protocol projection", () => + Effect.gen(function* () { + const model = OpenAIChat.route + .with({ endpoint: { baseURL: "https://api.openai.test/v1/" }, auth: Auth.bearer("test") }) + .model({ id: "kimi-k2", compatibility: { toolSchema: "moonshot" } }) + const prepared = yield* LLMClient.prepare( + LLM.request({ + model, + prompt: "Use the tool.", + tools: [ + { + name: "lookup", + description: "Lookup data.", + inputSchema: { + type: "object", + anyOf: [ + { + type: "object", + properties: { + tuple: { type: "array", items: [{ type: "string" }, { type: "number" }] }, + linked: { $ref: "#/$defs/Linked", description: "drop me" }, + }, + }, + ], + }, + }, + ], + }), + ) + + expect(prepared.body.tools?.[0]?.function.parameters).toEqual({ + type: "object", + properties: { + tuple: { type: "array", items: { anyOf: [{ type: "string" }, { type: "number" }] } }, + linked: { $ref: "#/$defs/Linked" }, + }, + additionalProperties: false, + }) + }), + ) +}) diff --git a/packages/ai/test/tool-stream.test.ts b/packages/ai/test/tool-stream.test.ts new file mode 100644 index 000000000000..72160ed22941 --- /dev/null +++ b/packages/ai/test/tool-stream.test.ts @@ -0,0 +1,193 @@ +import { describe, expect } from "bun:test" +import { Effect } from "effect" +import { LLMError } from "../src/schema" +import { ToolStream } from "../src/protocols/utils/tool-stream" +import { it } from "./lib/effect" + +const ADAPTER = "test-route" + +describe("ToolStream", () => { + it.effect("starts from OpenAI-style deltas and finalizes parsed input", () => + Effect.gen(function* () { + const first = ToolStream.appendOrStart( + ADAPTER, + ToolStream.empty(), + 0, + { id: "call_1", name: "lookup", text: '{"query"' }, + "missing tool", + ) + if (ToolStream.isError(first)) return yield* first + const second = ToolStream.appendOrStart(ADAPTER, first.tools, 0, { text: ':"weather"}' }, "missing tool") + if (ToolStream.isError(second)) return yield* second + const finished = yield* ToolStream.finish(ADAPTER, second.tools, 0) + + expect(first.events).toEqual([ + { type: "tool-input-start", id: "call_1", name: "lookup" }, + { type: "tool-input-delta", id: "call_1", name: "lookup", text: '{"query"' }, + ]) + expect(second.events).toEqual([{ type: "tool-input-delta", id: "call_1", name: "lookup", text: ':"weather"}' }]) + expect(finished).toEqual({ + tools: {}, + events: [ + { type: "tool-input-end", id: "call_1", name: "lookup" }, + { type: "tool-call", id: "call_1", name: "lookup", input: { query: "weather" } }, + ], + }) + }), + ) + + it.effect("keeps accumulated identity when later deltas contain empty strings", () => + Effect.gen(function* () { + const first = ToolStream.appendOrStart( + ADAPTER, + ToolStream.empty(), + 0, + { id: "call_1", name: "lookup", text: '{"query"' }, + "missing tool", + ) + if (ToolStream.isError(first)) return yield* first + const second = ToolStream.appendOrStart( + ADAPTER, + first.tools, + 0, + { id: "", name: "", text: ':"weather"}' }, + "missing tool", + ) + if (ToolStream.isError(second)) return yield* second + const finished = yield* ToolStream.finish(ADAPTER, second.tools, 0) + + expect(finished.events).toEqual([ + { type: "tool-input-end", id: "call_1", name: "lookup" }, + { type: "tool-call", id: "call_1", name: "lookup", input: { query: "weather" } }, + ]) + }), + ) + + it.effect("fails appendExisting when the provider skipped the tool start", () => + Effect.gen(function* () { + const error = ToolStream.appendExisting(ADAPTER, ToolStream.empty(), 0, "{}", "missing tool") + + expect(error).toBeInstanceOf(LLMError) + if (ToolStream.isError(error)) expect(error.reason.message).toBe("missing tool") + }), + ) + + it.effect("uses final input override without losing accumulated deltas", () => + Effect.gen(function* () { + const tools = ToolStream.start(ToolStream.empty(), "item_1", { + id: "call_1", + name: "lookup", + input: '{"query":"partial"}', + }) + const finished = yield* ToolStream.finishWithInput(ADAPTER, tools, "item_1", '{"query":"final"}') + + expect(finished).toEqual({ + tools: {}, + events: [ + { type: "tool-input-end", id: "call_1", name: "lookup" }, + { type: "tool-call", id: "call_1", name: "lookup", input: { query: "final" } }, + ], + }) + }), + ) + + it.effect("finalizes malformed local input as a non-executable tool error", () => + Effect.gen(function* () { + const tools = ToolStream.start(ToolStream.empty(), "item_1", { + id: "call_1", + name: "lookup", + input: '{"query":"partial', + }) + const finished = yield* ToolStream.finish(ADAPTER, tools, "item_1") + + expect(finished).toEqual({ + tools: {}, + events: [ + { + type: "tool-input-error", + id: "call_1", + name: "lookup", + raw: '{"query":"partial', + }, + ], + }) + }), + ) + + it.effect("preserves valid siblings when one parallel input is malformed", () => + Effect.gen(function* () { + const valid = ToolStream.start(ToolStream.empty(), 0, { + id: "call_valid", + name: "lookup", + input: '{"query":"weather"}', + }) + const tools = ToolStream.start(valid, 1, { + id: "call_invalid", + name: "lookup", + input: '{"query":"partial', + }) + const finished = yield* ToolStream.finishAll(ADAPTER, tools) + + expect(finished).toEqual({ + tools: {}, + events: [ + { type: "tool-input-end", id: "call_valid", name: "lookup" }, + { type: "tool-call", id: "call_valid", name: "lookup", input: { query: "weather" } }, + { + type: "tool-input-error", + id: "call_invalid", + name: "lookup", + raw: '{"query":"partial', + }, + ], + }) + }), + ) + + it.effect("keeps malformed provider-executed input terminal", () => + Effect.gen(function* () { + const tools = ToolStream.start(ToolStream.empty(), "item_1", { + id: "call_1", + name: "web_search", + input: '{"query":"partial', + providerExecuted: true, + }) + const result = yield* Effect.exit(ToolStream.finish(ADAPTER, tools, "item_1")) + + expect(result._tag).toBe("Failure") + }), + ) + + it.effect("preserves providerExecuted and clears all tools", () => + Effect.gen(function* () { + const first: ToolStream.State = ToolStream.start(ToolStream.empty(), 0, { + id: "call_1", + name: "lookup", + input: "{}", + }) + const tools = ToolStream.start(first, 1, { + id: "call_2", + name: "web_search", + input: '{"query":"docs"}', + providerExecuted: true, + }) + const finished = yield* ToolStream.finishAll(ADAPTER, tools) + + expect(finished).toEqual({ + tools: {}, + events: [ + { type: "tool-input-end", id: "call_1", name: "lookup" }, + { type: "tool-call", id: "call_1", name: "lookup", input: {} }, + { type: "tool-input-end", id: "call_2", name: "web_search" }, + { + type: "tool-call", + id: "call_2", + name: "web_search", + input: { query: "docs" }, + providerExecuted: true, + }, + ], + }) + }), + ) +}) diff --git a/packages/llm/test/tool.types.ts b/packages/ai/test/tool.types.ts similarity index 100% rename from packages/llm/test/tool.types.ts rename to packages/ai/test/tool.types.ts diff --git a/packages/ai/tsconfig.build.json b/packages/ai/tsconfig.build.json new file mode 100644 index 000000000000..2e9770e8d3a8 --- /dev/null +++ b/packages/ai/tsconfig.build.json @@ -0,0 +1,8 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "compilerOptions": { + "allowImportingTsExtensions": false, + "noEmit": false + } +} diff --git a/packages/ai/tsconfig.json b/packages/ai/tsconfig.json new file mode 100644 index 000000000000..dfd9a832c791 --- /dev/null +++ b/packages/ai/tsconfig.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig.json", + "extends": "@tsconfig/bun/tsconfig.json", + "compilerOptions": { + "rootDir": "src", + "outDir": "dist", + "declaration": true, + "lib": ["ESNext", "DOM", "DOM.Iterable"], + "noUncheckedIndexedAccess": false + }, + "include": ["src"] +} diff --git a/packages/ai/tsconfig.types.json b/packages/ai/tsconfig.types.json new file mode 100644 index 000000000000..473bdc222a8c --- /dev/null +++ b/packages/ai/tsconfig.types.json @@ -0,0 +1,9 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./tsconfig.json", + "compilerOptions": { + "noEmit": true, + "rootDir": "." + }, + "include": ["test/**/*.types.ts"] +} diff --git a/packages/app/e2e/performance/timeline-stability/README.md b/packages/app/e2e/performance/timeline-stability/README.md new file mode 100644 index 000000000000..3e9def275730 --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/README.md @@ -0,0 +1,61 @@ +# Timeline Layout Continuity + +Run from `packages/app`: + +```sh +bun run test:stability +``` + +The suite runs a production build in one Chromium worker. Selected scenarios use deterministic 4x CPU stress after application readiness. This is a stress profile, not emulation of a specific device. + +## What It Proves + +The continuity probe samples DOM-derived layout and visibility state across browser render opportunities. Tests declare explicit contracts such as: + +- Preserve a visible semantic anchor while the user is away from the bottom. +- Preserve end anchoring while active content grows or new content appears. +- Keep adjacent visible rows ordered without material overlap. +- Keep user-selected disclosure state through updates and virtualization. +- Avoid a sampled blank interval while one visible surface replaces another. +- Preserve logical row and control identity where local state or focus depends on it. +- Keep keyboard, wheel, and nested-scroll ownership consistent during remeasurement. + +The suite exercises real browser reducer, projection, component, virtualizer, layout, focus, and interaction code. The backend and event producer are controlled fixtures. + +## What It Does Not Prove + +The pass/fail oracle does not inspect every compositor-presented pixel. A sample taken after `requestAnimationFrame` is a DOM/layout observation, not proof that every sampled state was displayed or that every displayed frame was sampled. + +The suite does not provide complete coverage for: + +- Compositor-only or raster-only glitches. +- Color, contrast, canvas, WebGL, masks, irregular clips, or arbitrary occlusion. +- Physical display refresh rates, native OS scaling, or a named low-end device. +- TCP packetization, proxy buffering, or the complete real server/provider pipeline. + +Playwright video, trace, screenshots, and observation JSON are diagnostic evidence. They are not pixel baselines and do not participate in normal pass/fail decisions. + +For optional before/violation/after screenshots, set `OPENCODE_STABILITY_CAPTURE=1`. Capture is opt-in because compositor readback can perturb timing. + +## Test Layers + +- **Projection:** admitted rows, grouping, labels, and final visible states. +- **Local state:** disclosure state, identity, duplicate delivery, and virtualization restoration. +- **Interaction:** wheel, keyboard, nested scrolling, actionability, and focus behavior. +- **Layout continuity:** anchoring, adjacency, responsive reflow, and visible surface handoffs. +- **Reducer hardening:** validly shaped but intentionally reordered, duplicated, removed, or replaced events. +- **Oracle contract:** pure analyzer and browser sampler calibration tests. + +Production-lifecycle fixtures should model states emitted by the current producer. Impossible or reordered sequences belong in reducer-hardening tests and must not be described as normal provider behavior. + +## Diagnostics + +Failures retain: + +- `video.webm` +- `trace.zip` +- failure screenshot +- sampled DOM/layout trace JSON +- event markers and summarized violations + +The analyzer records both unclipped layout bounds and ancestor-clipped visible intersections. Scrollbar and raw `scrollTop` changes alone do not fail continuity checks; user-visible semantic anchor movement does. diff --git a/packages/app/e2e/performance/timeline-stability/adverse.spec.ts b/packages/app/e2e/performance/timeline-stability/adverse.spec.ts new file mode 100644 index 000000000000..7ce1be906459 --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/adverse.spec.ts @@ -0,0 +1,250 @@ +import { expect, test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantMessage, + partUpdated, + setupTimeline, + shell, + textPart, + toolPart, + userMessage, + waitForVisualSettle, + type TimelineMessage, +} from "./fixture" + +test.describe("timeline adverse visual stability", () => { + test("does not pull a scrolled-away user while an active shell grows", async ({ page }, testInfo) => { + const activeShellID = "prt_adverse_01_shell" + const messages = [ + ...history(24), + userMessage(), + assistantMessage([shell(activeShellID, "running")], { completed: false }), + ] + const timeline = await setupTimeline(page, { + messages, + settings: { shellToolPartsExpanded: true }, + cpuRate: 4, + eventRetry: 30, + }) + const scroller = page.locator(".scroll-view__viewport", { + has: page.locator('[data-timeline-row="AssistantPart"]'), + }) + await scroller.evaluate((element) => { + element.dispatchEvent(new WheelEvent("wheel", { bubbles: true, cancelable: true, deltaY: -450 })) + element.scrollTop = Math.max(0, element.scrollHeight - element.clientHeight - 450) + }) + await page.waitForTimeout(150) + await expect + .poll(() => scroller.evaluate((element) => element.scrollHeight - element.clientHeight - element.scrollTop)) + .toBeGreaterThan(100) + const anchor = await scroller.evaluate((element) => { + const view = element.getBoundingClientRect() + return [...element.querySelectorAll("[data-timeline-key]")].find((row) => { + const rect = row.getBoundingClientRect() + return rect.top >= view.top + 40 && rect.bottom <= view.bottom - 40 + })?.dataset.timelineKey + }) + expect(anchor).toBeTruthy() + await waitForVisualSettle(page, [`[data-timeline-key="${anchor}"]`]) + + const regions = defineVisualRegions({ + anchor: { selector: `[data-timeline-key="${anchor}"]` }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(shell(activeShellID, "running", lines(1))), 180) + await timeline.send(partUpdated(shell(activeShellID, "running", lines(10))), 90) + await timeline.send(partUpdated(shell(activeShellID, "running", lines(50))), 350) + await timeline.send(partUpdated(shell(activeShellID, "completed", lines(50))), 500) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "scrolled-away-shell", + trace, + visualPlan(regions, [ + { type: "required", regions: ["anchor"] }, + { type: "unique", regions: ["anchor"] }, + { type: "stable", regions: ["anchor"] }, + { type: "fixed", regions: ["anchor"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + ]), + ) + }) + + test("preserves an explicit shell state across virtualization", async ({ page }) => { + const targetID = "prt_virtual_shell" + const messages = [ + userMessage(undefined, { id: "msg_0000_virtual_user", created: 1700000000000 }), + assistantMessage([shell(targetID, "completed", lines(20))], { + id: "msg_0001_virtual_assistant", + parentID: "msg_0000_virtual_user", + created: 1700000001000, + }), + ...history(35, 10), + ] + await setupTimeline(page, { messages, settings: { shellToolPartsExpanded: false } }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + await scroller.evaluate((element) => { + element.dispatchEvent(new WheelEvent("wheel", { bubbles: true, cancelable: true, deltaY: -1_000 })) + element.scrollTop = 0 + }) + await page.waitForTimeout(300) + const trigger = page.locator(`[data-timeline-part-id="${targetID}"] [data-slot="collapsible-trigger"]`) + await expect(trigger).toBeVisible() + await trigger.click() + await expect(trigger).toHaveAttribute("aria-expanded", "true") + + await scroller.evaluate((element) => (element.scrollTop = element.scrollHeight)) + await expect(page.locator(`[data-timeline-part-id="${targetID}"]`)).toHaveCount(0) + await scroller.evaluate((element) => (element.scrollTop = 0)) + await expect(trigger).toBeVisible() + await expect(trigger).toHaveAttribute("aria-expanded", "true") + }) + + test("keeps narrow viewport rows ordered during long shell growth", async ({ page }, testInfo) => { + const shellID = "prt_narrow_01_shell" + const followingID = "prt_narrow_02_following" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage( + [shell(shellID, "running"), textPart(followingID, "A narrow following row that wraps across lines.")], + { + completed: false, + }, + ), + ], + settings: { shellToolPartsExpanded: true }, + viewport: { width: 430, height: 800 }, + cpuRate: 4, + }) + await waitForVisualSettle(page, [ + `[data-timeline-part-id="${shellID}"]`, + `[data-timeline-part-id="${followingID}"]`, + ]) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { + selector: `[data-timeline-part-id="${followingID}"]`, + closest: '[data-timeline-row="AssistantPart"]', + }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(shell(shellID, "running", wideLines(10))), 100) + await timeline.send(partUpdated(shell(shellID, "running", wideLines(50))), 300) + await timeline.send(partUpdated(shell(shellID, "completed", wideLines(50))), 500) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "narrow-shell", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["shell", "following"] }, + { type: "unique", regions: ["shell", "following"] }, + { type: "stable", regions: ["shell", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["shell", "following"] }, + ], + { perMarker: true }, + ), + ) + }) + + test("keeps visible rows ordered while resizing desktop to narrow and back", async ({ page }, testInfo) => { + const shellID = "prt_resize_01_shell" + const contextIDs = ["prt_resize_02_read", "prt_resize_03_glob"] + const followingID = "prt_resize_04_following" + await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + shell(shellID, "completed", wideLines(15)), + toolPart(contextIDs[0]!, "read", "completed", { filePath: "src/a.ts" }), + toolPart(contextIDs[1]!, "glob", "completed", { path: ".", pattern: "**/*.ts" }), + textPart(followingID, "Following responsive timeline content that wraps on narrow screens."), + ]), + ], + settings: { shellToolPartsExpanded: true }, + cpuRate: 4, + seedHistory: true, + }) + const group = `[data-timeline-part-ids="${contextIDs.join(",")}"]` + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + context: { selector: group, closest: '[data-timeline-row="AssistantPart"]' }, + following: { + selector: `[data-timeline-part-id="${followingID}"]`, + closest: '[data-timeline-row="AssistantPart"]', + }, + }) + await startVisualProbe(page, regions) + await page.setViewportSize({ width: 430, height: 800 }) + await page.waitForTimeout(500) + await page.setViewportSize({ width: 900, height: 800 }) + await page.waitForTimeout(500) + await page.setViewportSize({ width: 1400, height: 900 }) + await page.waitForTimeout(500) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "responsive-resize", + trace, + visualPlan(regions, [ + { type: "required", regions: ["shell", "context", "following"] }, + { type: "unique", regions: ["shell", "context", "following"] }, + { type: "stable", regions: ["shell", "context", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 4, maxReversals: 4 }, + { type: "label-stability", regions: "all" }, + { type: "flow", regions: ["shell", "context", "following"] }, + ]), + ) + }) +}) + +function history(count: number, offset = 0): TimelineMessage[] { + return Array.from({ length: count }, (_, index) => { + const value = index + offset + const prefix = `msg_0${String(value).padStart(3, "0")}_history` + const userID = `${prefix}_a_user` + return [ + userMessage(undefined, { id: userID, created: 1699990000000 + value * 10_000 }), + assistantMessage( + [ + textPart( + `prt_history_${String(value).padStart(3, "0")}`, + `Historical response ${value}. ${"Stable history content. ".repeat(8)}`, + ), + ], + { + id: `${prefix}_b_assistant`, + parentID: userID, + created: 1699990001000 + value * 10_000, + }, + ), + ] + }).flat() +} + +function lines(count: number) { + return Array.from({ length: count }, (_, index) => `line ${index + 1}`).join("\n") +} + +function wideLines(count: number) { + return Array.from({ length: count }, (_, index) => `line ${index + 1} ${"wide-output-".repeat(20)}`).join("\n") +} diff --git a/packages/app/e2e/performance/timeline-stability/context-matrix.spec.ts b/packages/app/e2e/performance/timeline-stability/context-matrix.spec.ts new file mode 100644 index 000000000000..b3438b77c06b --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/context-matrix.spec.ts @@ -0,0 +1,192 @@ +import { expect, test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantID, + assistantMessage, + event, + partUpdated, + setupTimeline, + textPart, + toolPart, + userMessage, + waitForVisualSettle, +} from "./fixture" + +const inputs = { + read: { filePath: "src/a.ts", offset: 0, limit: 120 }, + glob: { path: ".", pattern: "**/*.ts" }, + grep: { path: ".", pattern: "stable", include: "*.ts" }, + list: { path: "src" }, +} + +test("appends context operations while the group is expanded", async ({ page }, testInfo) => { + const firstID = "prt_append_01_read" + const followingID = "prt_append_99_following" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([toolPart(firstID, "read", "running", inputs.read), textPart(followingID, "Following append")], { + completed: false, + }), + ], + cpuRate: 4, + }) + const initialGroup = `[data-timeline-part-ids="${firstID}"]` + await page.locator(`${initialGroup} [data-slot="collapsible-trigger"]`).click() + await waitForVisualSettle(page, [initialGroup, `[data-timeline-part-id="${followingID}"]`]) + const regions = defineVisualRegions({ + context: { + selector: '[data-timeline-part-ids^="prt_append_01_read"]', + closest: '[data-timeline-row="AssistantPart"]', + }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(toolPart("prt_append_02_glob", "glob", "running", inputs.glob)), 180) + await timeline.send(partUpdated(toolPart("prt_append_03_grep", "grep", "completed", inputs.grep)), 240) + await timeline.send(partUpdated(toolPart("prt_append_04_list", "list", "completed", inputs.list)), 500) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "context-append", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["context", "following"] }, + { type: "unique", regions: ["context", "following"] }, + { type: "stable", regions: ["context", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: ["following"], maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["context", "following"] }, + ], + { perMarker: true }, + ), + ) + await expect( + page.locator( + '[data-timeline-part-ids="prt_append_01_read,prt_append_02_glob,prt_append_03_grep,prt_append_04_list"]', + ), + ).toBeVisible() + await expect( + page.locator('[data-timeline-part-ids^="prt_append_01_read"] [data-slot="collapsible-trigger"]'), + ).toHaveAttribute("aria-expanded", "true") +}) + +test("splits and merges context groups when a middle text part changes", async ({ page }, testInfo) => { + const textID = "prt_split_02_text" + const followingID = "prt_split_99_following" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + toolPart("prt_split_01_read", "read", "completed", inputs.read), + textPart(textID, "Boundary"), + toolPart("prt_split_03_glob", "glob", "completed", inputs.glob), + textPart(followingID, "Following split groups"), + ]), + ], + cpuRate: 4, + }) + const regions = defineVisualRegions({ + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send( + event("message.part.removed", { sessionID: "ses_timeline_stability", messageID: assistantID, partID: textID }), + 500, + ) + await expect(page.locator('[data-timeline-part-ids="prt_split_01_read,prt_split_03_glob"]')).toBeVisible() + await timeline.send(partUpdated(textPart(textID, "Boundary restored")), 500) + await expect(page.locator('[data-timeline-part-ids="prt_split_01_read"]')).toBeVisible() + await expect(page.locator('[data-timeline-part-ids="prt_split_03_glob"]')).toBeVisible() + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "context-split-merge", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["following"] }, + { type: "unique", regions: ["following"] }, + { type: "stable", regions: ["following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 1 }, + { type: "label-stability", regions: "all" }, + ], + { perMarker: true }, + ), + ) +}) + +test("removing the first context member replaces the group once without overlapping following content", async ({ + page, +}, testInfo) => { + const ids = ["prt_key_01_read", "prt_key_02_glob", "prt_key_03_grep"] + const followingID = "prt_key_99_following" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + toolPart(ids[0]!, "read", "completed", inputs.read), + toolPart(ids[1]!, "glob", "completed", inputs.glob), + toolPart(ids[2]!, "grep", "completed", inputs.grep), + textPart(followingID, "Following replaced group"), + ]), + ], + cpuRate: 4, + }) + const original = page.locator(`[data-timeline-part-ids="${ids.join(",")}"]`) + const originalRowKey = await original.evaluate((element) => + element.closest("[data-timeline-key]")?.getAttribute("data-timeline-key"), + ) + await original.locator('[data-slot="collapsible-trigger"]').click() + await expect(original.locator('[data-slot="collapsible-trigger"]')).toHaveAttribute("aria-expanded", "true") + const regions = defineVisualRegions({ + context: { + selector: '[data-timeline-part-ids*="prt_key_02_glob"]', + closest: '[data-timeline-row="AssistantPart"]', + }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send( + event("message.part.removed", { sessionID: "ses_timeline_stability", messageID: assistantID, partID: ids[0] }), + 500, + ) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "context-first-remove", + trace, + visualPlan(regions, [ + { type: "required", regions: ["context", "following"] }, + { type: "unique", regions: ["context", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "flow", regions: ["context", "following"] }, + ]), + ) + await expect(page.locator(`[data-timeline-part-ids="${ids.slice(1).join(",")}"]`)).toBeVisible() + expect( + await page + .locator(`[data-timeline-part-ids="${ids.slice(1).join(",")}"]`) + .evaluate((element) => element.closest("[data-timeline-key]")?.getAttribute("data-timeline-key")), + ).toBe(originalRowKey) + await expect( + page.locator(`[data-timeline-part-ids="${ids.slice(1).join(",")}"] [data-slot="collapsible-trigger"]`), + ).toHaveAttribute("aria-expanded", "true") +}) diff --git a/packages/app/e2e/performance/timeline-stability/environment-matrix.spec.ts b/packages/app/e2e/performance/timeline-stability/environment-matrix.spec.ts new file mode 100644 index 000000000000..3455438a7365 --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/environment-matrix.spec.ts @@ -0,0 +1,113 @@ +import { test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantMessage, + partUpdated, + setupTimeline, + shell, + textPart, + userMessage, + waitForVisualSettle, +} from "./fixture" + +// Fractional scaling exercises different browser rounding than the baseline. +for (const deviceScaleFactor of [1, 1.25]) { + test(`keeps shell growth ordered at device scale ${deviceScaleFactor}`, async ({ page }, testInfo) => { + const shellID = `prt_dpr_${String(deviceScaleFactor).replace(".", "_")}_01_shell` + const followingID = `prt_dpr_${String(deviceScaleFactor).replace(".", "_")}_02_following` + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([shell(shellID, "running"), textPart(followingID, "Following scaled shell")], { + completed: false, + }), + ], + settings: { shellToolPartsExpanded: true }, + cpuRate: 4, + deviceScaleFactor, + seedHistory: true, + }) + await waitForVisualSettle(page, [ + `[data-timeline-part-id="${shellID}"]`, + `[data-timeline-part-id="${followingID}"]`, + ]) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { + selector: `[data-timeline-part-id="${followingID}"]`, + closest: '[data-timeline-row="AssistantPart"]', + }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(shell(shellID, "running", lines(20))), 180) + await timeline.send(partUpdated(shell(shellID, "completed", lines(20))), 500) + const trace = await stopVisualProbe(page) + await reportVisualStability(testInfo, `dpr-${deviceScaleFactor}`, trace, shellPlan(regions)) + }) +} + +for (const reducedMotion of [true]) { + test(`keeps shell and status transitions ordered with reduced motion ${reducedMotion}`, async ({ + page, + }, testInfo) => { + const shellID = `prt_motion_${reducedMotion}_01_shell` + const followingID = `prt_motion_${reducedMotion}_02_following` + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([shell(shellID, "running"), textPart(followingID, "Following motion profile")], { + completed: false, + }), + ], + settings: { shellToolPartsExpanded: true }, + reducedMotion, + cpuRate: 4, + seedHistory: true, + }) + await waitForVisualSettle(page, [ + `[data-timeline-part-id="${shellID}"]`, + `[data-timeline-part-id="${followingID}"]`, + ]) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { + selector: `[data-timeline-part-id="${followingID}"]`, + closest: '[data-timeline-row="AssistantPart"]', + }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(shell(shellID, "completed", lines(10))), 500) + const trace = await stopVisualProbe(page) + await reportVisualStability(testInfo, `reduced-motion-${reducedMotion}`, trace, shellPlan(regions)) + }) +} + +function lines(count: number) { + return Array.from({ length: count }, (_, index) => `line ${index + 1}`).join("\n") +} + +function shellPlan>( + regions: Regions & Record<"shell" | "following", { selector: string }>, +) { + return visualPlan( + regions, + [ + { type: "required", regions: ["shell", "following"] }, + { type: "unique", regions: ["shell", "following"] }, + { type: "stable", regions: ["shell", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["shell", "following"] }, + ], + { perMarker: true }, + ) +} diff --git a/packages/app/e2e/performance/timeline-stability/file-matrix.spec.ts b/packages/app/e2e/performance/timeline-stability/file-matrix.spec.ts new file mode 100644 index 000000000000..0690f02706fc --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/file-matrix.spec.ts @@ -0,0 +1,121 @@ +import { test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantMessage, + partUpdated, + setupTimeline, + textPart, + toolPart, + userMessage, + waitForVisualSettle, +} from "./fixture" + +const profiles = [ + { name: "edit", tool: "edit", input: { filePath: "src/edit.ts" } }, + { + name: "multi patch", + tool: "patch", + input: { files: ["src/a.ts", "src/b.ts", "src/old.ts", "src/moved.ts"] }, + }, +] as const + +for (const profile of profiles) { + test(`stabilizes ${profile.name} pending to completed`, async ({ page }, testInfo) => { + const partID = `prt_file_matrix_${profiles.indexOf(profile)}` + const followingID = `prt_file_matrix_following_${profiles.indexOf(profile)}` + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage( + [ + toolPart(partID, profile.tool, "pending", profile.input), + textPart(followingID, `Following ${profile.name}`), + ], + { completed: false }, + ), + ], + settings: { editToolPartsExpanded: true }, + cpuRate: 4, + }) + await waitForVisualSettle(page, [`[data-timeline-part-id="${partID}"]`, `[data-timeline-part-id="${followingID}"]`]) + const regions = defineVisualRegions({ + tool: { selector: `[data-timeline-part-id="${partID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { + selector: `[data-timeline-part-id="${followingID}"]`, + closest: '[data-timeline-row="AssistantPart"]', + }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(toolPart(partID, profile.tool, "running", profile.input)), 180) + await timeline.send(partUpdated(completedPart(partID, profile)), 900) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + `file-${profile.name}`, + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["tool", "following"] }, + { type: "unique", regions: ["tool", "following"] }, + { type: "stable", regions: ["tool", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0, maxReversals: 1 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["tool", "following"] }, + ], + { perMarker: true }, + ), + ) + }) +} + +function completedPart(partID: string, profile: (typeof profiles)[number]) { + if (profile.tool === "edit") { + return toolPart(partID, profile.tool, "completed", profile.input, { + metadata: { + filediff: { + file: "src/edit.ts", + additions: 50, + deletions: 50, + before: source(50, false), + after: source(50, true), + }, + }, + }) + } + const files = [ + patchFile("src/a.ts", "update"), + patchFile("src/b.ts", "add"), + patchFile("src/old.ts", "delete"), + { ...patchFile("src/moved.ts", "move"), move: "src/new-place.ts" }, + ] + return toolPart(partID, profile.tool, "completed", profile.input, { metadata: { files } }) +} + +function patchFile(filePath: string, type: "add" | "update" | "delete" | "move") { + return { + filePath, + relativePath: filePath, + type, + additions: type === "delete" ? 0 : 20, + deletions: type === "add" ? 0 : 20, + before: type === "add" ? undefined : source(20, false), + after: type === "delete" ? undefined : source(20, true), + } +} + +function source(count: number, changed: boolean) { + return Array.from( + { length: count }, + (_, index) => `export const value${index} = ${changed ? index + 1 : index}\n`, + ).join("") +} diff --git a/packages/app/e2e/performance/timeline-stability/file-mutation.spec.ts b/packages/app/e2e/performance/timeline-stability/file-mutation.spec.ts new file mode 100644 index 000000000000..f411339adbec --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/file-mutation.spec.ts @@ -0,0 +1,113 @@ +import { expect, test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantMessage, + partUpdated, + setupTimeline, + textPart, + toolPart, + userMessage, + waitForVisualSettle, +} from "./fixture" + +test("adds patch files incrementally without resetting outer expansion", async ({ page }, testInfo) => { + const patchID = "prt_incremental_01_patch" + const followingID = "prt_incremental_02_following" + const first = patchFile("src/a.ts", "update") + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage( + [ + toolPart(patchID, "patch", "running", { files: [first.filePath] }, { metadata: { files: [first] } }), + textPart(followingID, "Following incremental patch"), + ], + { completed: false }, + ), + ], + settings: { editToolPartsExpanded: true }, + cpuRate: 4, + seedHistory: true, + }) + const trigger = page.locator(`[data-timeline-part-id="${patchID}"] [data-slot="collapsible-trigger"]`).first() + await expect(trigger).toHaveAttribute("aria-expanded", "true") + await waitForVisualSettle(page, [`[data-timeline-part-id="${patchID}"]`, `[data-timeline-part-id="${followingID}"]`]) + const regions = defineVisualRegions({ + patch: { selector: `[data-timeline-part-id="${patchID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + const second = patchFile("src/b.ts", "add") + const third = patchFile("src/old.ts", "delete") + await timeline.send( + partUpdated( + toolPart( + patchID, + "patch", + "running", + { files: [first.filePath, second.filePath] }, + { metadata: { files: [first, second] } }, + ), + ), + 240, + ) + await timeline.send( + partUpdated( + toolPart( + patchID, + "patch", + "completed", + { files: [first.filePath, second.filePath, third.filePath] }, + { metadata: { files: [first, second, third] } }, + ), + ), + 800, + ) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "incremental-patch", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["patch", "following"] }, + { type: "unique", regions: ["patch", "following"] }, + { type: "stable", regions: ["patch", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: ["following"], maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["patch", "following"] }, + ], + { perMarker: true }, + ), + ) + await expect(trigger).toHaveAttribute("aria-expanded", "true") + await expect(page.locator('[data-scope="apply-patch"] [data-type="delete"]')).toBeVisible() +}) + +function patchFile(filePath: string, type: "add" | "update" | "delete") { + return { + filePath, + relativePath: filePath, + type, + additions: type === "delete" ? 0 : 4, + deletions: type === "add" ? 0 : 3, + before: type === "add" ? undefined : source(false), + after: type === "delete" ? undefined : source(true), + } +} + +function source(changed: boolean) { + return Array.from({ length: 12 }, (_, index) => `export const value${index} = ${changed ? index + 1 : index}\n`).join( + "", + ) +} diff --git a/packages/app/e2e/performance/timeline-stability/fixture.test.ts b/packages/app/e2e/performance/timeline-stability/fixture.test.ts new file mode 100644 index 000000000000..b003645e640c --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/fixture.test.ts @@ -0,0 +1,68 @@ +import { describe, expect, test } from "bun:test" +import { + assistantMessage, + event, + toolPart, + userMessage, + validateTimelineEvent, + validateTimelineMessages, + type PartSeed, +} from "./fixture" + +describe("timeline fixture validation", () => { + test("accepts a valid timeline", () => { + expect(validateTimelineMessages([userMessage(), assistantMessage()])).toHaveLength(2) + }) + + test("rejects malformed SDK values at runtime", () => { + expect(() => + assistantMessage([], { + error: { name: "APIError", data: { message: "failed" } } as never, + }), + ).toThrow() + expect(() => + validateTimelineEvent({ + directory: "C:/OpenCode/TimelineStability", + payload: { + id: "evt_invalid_status", + type: "session.status", + properties: { sessionID: "ses_timeline_stability", status: { type: "retry", attempt: 1 } }, + }, + }), + ).toThrow() + }) + + test("rejects duplicate IDs and orphan assistants", () => { + expect(() => validateTimelineMessages([userMessage(), userMessage()])).toThrow(/duplicate message ID/) + expect(() => + validateTimelineMessages([userMessage(), assistantMessage([], { parentID: "msg_missing_parent" })]), + ).toThrow(/parent user/) + }) + + test("assigns deterministic event IDs", () => { + const first = event("session.status", { sessionID: "ses_timeline_stability", status: { type: "busy" } }) + const second = event("session.status", { sessionID: "ses_timeline_stability", status: { type: "idle" } }) + expect(first.payload.id).toMatch(/^evt_timeline_\d{4}$/) + expect(Number(second.payload.id.slice(-4))).toBe(Number(first.payload.id.slice(-4)) + 1) + }) +}) + +if (false) { + const userSeed = { id: "prt_type_user", type: "text", text: "typed" } satisfies PartSeed<"user"> + userMessage([userSeed]) + + // @ts-expect-error Tool completion fields are not valid while pending. + toolPart("prt_invalid_pending", "bash", "pending", {}, { output: "impossible" }) + // @ts-expect-error Tool completion fields are not valid while running. + toolPart("prt_invalid_running", "bash", "running", {}, { output: "impossible" }) + // @ts-expect-error Tool error fields are not valid after completion. + toolPart("prt_invalid_completed", "bash", "completed", {}, { error: "impossible" }) + + assistantMessage([ + // @ts-expect-error Agent references belong to user messages, not assistant messages. + { id: "prt_invalid_owner", type: "agent", name: "explore", source: { value: "@explore", start: 0, end: 8 } }, + ]) + + // @ts-expect-error Retry status events require message and next. + event("session.status", { sessionID: "ses_timeline_stability", status: { type: "retry", attempt: 1 } }) +} diff --git a/packages/app/e2e/performance/timeline-stability/fixture.ts b/packages/app/e2e/performance/timeline-stability/fixture.ts new file mode 100644 index 000000000000..df67da5a6621 --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/fixture.ts @@ -0,0 +1,566 @@ +import { base64Encode } from "@opencode-ai/core/util/encode" +import { Event } from "@opencode-ai/schema/event" +import { SessionStatusEvent } from "@opencode-ai/schema/session-status-event" +import { SessionV1 } from "@opencode-ai/schema/session-v1" +import type { + AssistantMessage, + GlobalEvent, + Message, + Part, + Session, + SessionStatus, + ToolPart, + ToolState, + UserMessage, +} from "@opencode-ai/sdk/v2/client" +import { expect, type Page } from "@playwright/test" +import { Schema } from "effect" +import { mockOpenCodeServer } from "../../utils/mock-server" +import { installSseTransport } from "../../utils/sse-transport" +import { expectSessionTitle } from "../../utils/waits" + +export const directory = "C:/OpenCode/TimelineStability" +export const projectID = "proj_timeline_stability" +export const sessionID = "ses_timeline_stability" +export const userID = "msg_1000_timeline_user" +export const assistantID = "msg_1001_timeline_assistant" +export const title = "Timeline visual stability" +export const model = { providerID: "opencode", modelID: "claude-opus-4-6", variant: "max" } + +type TimelinePayload = Extract< + GlobalEvent["payload"], + { + type: + | "message.updated" + | "message.removed" + | "message.part.updated" + | "message.part.removed" + | "message.part.delta" + | "session.status" + } +> + +type DeepReadonly = Value extends readonly unknown[] + ? { readonly [Key in keyof Value]: DeepReadonly } + : Value extends object + ? { readonly [Key in keyof Value]: DeepReadonly } + : Value + +export type TimelineEvent = DeepReadonly & { payload: TimelinePayload }> +export type EventPayload = TimelineEvent +export type ToolStatus = ToolState["status"] +export type TimelineMessage = { info: UserMessage; parts: Part[] } | { info: AssistantMessage; parts: Part[] } + +type UserPart = Extract +type AssistantPart = Exclude +type OwnedPart = Owner extends "user" ? UserPart : AssistantPart +export type PartSeed = + OwnedPart extends infer Candidate + ? Candidate extends Part + ? Omit + : never + : never + +type ToolOptions = State extends "pending" + ? { output?: never; title?: never; metadata?: never; error?: never } + : State extends "running" + ? { title?: string; metadata?: Record; output?: never; error?: never } + : State extends "error" + ? { error?: string; metadata?: Record; output?: never; title?: never } + : { output?: string; title?: string; metadata?: Record; error?: never } + +const decodeOptions = { errors: "all", onExcessProperty: "error" } as const +const decodeMessage = Schema.decodeUnknownSync(SessionV1.WithParts) +const decodePart = Schema.decodeUnknownSync(SessionV1.Part) +const decodeStatus = Schema.decodeUnknownSync(SessionStatusEvent.Info) +const timelineEventSchema = Schema.Union([ + eventSchema("message.updated", SessionV1.Event.MessageUpdated.data), + eventSchema("message.removed", SessionV1.Event.MessageRemoved.data), + eventSchema("message.part.updated", SessionV1.Event.PartUpdated.data), + eventSchema("message.part.removed", SessionV1.Event.PartRemoved.data), + eventSchema("message.part.delta", SessionV1.Event.PartDelta.data), + eventSchema("session.status", SessionStatusEvent.Status.data), +]) +const decodeEvent = Schema.decodeUnknownSync(timelineEventSchema) +let eventSequence = 0 + +export async function setupTimeline( + page: Page, + input: { + messages?: TimelineMessage[] + settings?: Record + sessions?: Session[] + cpuRate?: number + viewport?: { width: number; height: number } + eventRetry?: number + reducedMotion?: boolean + locale?: string + deviceScaleFactor?: number + seedHistory?: boolean + protocol?: "v1" | "v2" + } = {}, +) { + const sessions = input.sessions ?? [session()] + const messages = validateTimelineMessages([ + ...(input.seedHistory ? historyMessages(18) : []), + ...(input.messages ?? [userMessage(), assistantMessage()]), + ]) + const active = messages.findLast((message) => message.info.role === "assistant") + const initialStatus = decodeStatus( + active?.info.role === "assistant" && active.info.time.completed === undefined ? { type: "busy" } : { type: "idle" }, + decodeOptions, + ) + const transport = await installSseTransport(page, { + server: `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}`, + retry: input.eventRetry ?? 20, + }) + await mockOpenCodeServer(page, { + protocol: input.protocol, + directory, + project: project(), + provider: provider(), + sessions, + sessionStatus: { [sessionID]: initialStatus }, + pageMessages: () => ({ + items: messages, + }), + }) + await page.addInitScript((settings) => { + localStorage.setItem( + "settings.v3", + JSON.stringify({ + general: { + editToolPartsExpanded: false, + shellToolPartsExpanded: false, + showReasoningSummaries: false, + showSessionProgressBar: true, + ...settings, + }, + }), + ) + if (settings.newLayoutDesigns === false) { + localStorage.setItem("app-version.v1", JSON.stringify({ version: "1.17.20" })) + } + }, input.settings ?? {}) + if (input.locale) { + await page.addInitScript((locale) => { + localStorage.setItem("opencode.global.dat:language", JSON.stringify({ locale })) + }, input.locale) + } + if (input.reducedMotion) await page.emulateMedia({ reducedMotion: "reduce" }) + await page.setViewportSize(input.viewport ?? { width: 1400, height: 900 }) + if (input.deviceScaleFactor) { + const devtools = await page.context().newCDPSession(page) + const viewport = input.viewport ?? { width: 1400, height: 900 } + await devtools.send("Emulation.setDeviceMetricsOverride", { + width: viewport.width, + height: viewport.height, + deviceScaleFactor: input.deviceScaleFactor, + mobile: false, + }) + } + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) + await transport.waitForConnection() + await expectSessionTitle(page, title) + if (input.cpuRate && input.cpuRate > 1) { + const devtools = await page.context().newCDPSession(page) + await devtools.send("Emulation.setCPUThrottlingRate", { rate: input.cpuRate }) + } + + return { + transport, + async send(event: TimelineEvent, delay = 0) { + const valid = validateTimelineEvent(event) + await transport.send(valid, { marker: describeEvent(valid) }) + if (delay) await page.waitForTimeout(delay) + }, + async sendAll(sequence: { event: TimelineEvent; delay: number }[]) { + for (const item of sequence) { + const valid = validateTimelineEvent(item.event) + await transport.send(valid, { marker: describeEvent(valid) }) + await page.waitForTimeout(item.delay) + } + }, + async settle(frames = 3) { + await page.evaluate( + (frames) => + new Promise((resolve) => { + let remaining = frames + const tick = () => { + remaining-- + if (remaining <= 0) return resolve() + requestAnimationFrame(tick) + } + requestAnimationFrame(tick) + }), + frames, + ) + }, + async waitForPart(partID: string) { + await expect(page.locator(`[data-timeline-part-id="${partID}"]`).first()).toBeVisible() + }, + } +} + +function describeEvent(event: EventPayload) { + if (event.payload.type === "message.part.updated") { + const part = event.payload.properties.part + return [ + event.payload.type, + part.id, + part.type === "tool" ? part.tool : part.type, + part.type === "tool" ? part.state.status : undefined, + ] + .filter(Boolean) + .join(":") + } + if (event.payload.type === "session.status") { + const status = event.payload.properties.status + return [event.payload.type, status.type, status.type === "retry" ? status.attempt : undefined] + .filter((value) => value !== undefined) + .join(":") + } + return event.payload.type +} + +export function event( + type: Type, + properties: Extract["properties"], +): TimelineEvent +export function event(type: TimelinePayload["type"], properties: TimelinePayload["properties"]): TimelineEvent { + return validateTimelineEvent({ + directory, + payload: { id: `evt_timeline_${String(++eventSequence).padStart(4, "0")}`, type, properties }, + }) +} + +export function validateTimelineEvent(input: unknown): TimelineEvent { + return decodeEvent(input, decodeOptions) +} + +export function validateTimelineMessages(input: readonly TimelineMessage[]): TimelineMessage[] { + input.forEach((message) => decodeMessage(message, decodeOptions)) + const messages = [...input] + const messageIDs = new Set() + const partIDs = new Set() + const users = new Set(messages.filter((message) => message.info.role === "user").map((message) => message.info.id)) + + messages.forEach((message) => { + if (messageIDs.has(message.info.id)) + throw new Error(`Timeline fixture has duplicate message ID: ${message.info.id}`) + messageIDs.add(message.info.id) + if (message.info.role === "assistant" && !users.has(message.info.parentID)) + throw new Error(`Timeline assistant ${message.info.id} must reference a parent user in the fixture`) + message.parts.forEach((part) => { + if (part.sessionID !== message.info.sessionID || part.messageID !== message.info.id) + throw new Error(`Timeline part ${part.id} ownership does not match message ${message.info.id}`) + if (message.info.role === "user" && !["text", "file", "agent", "subtask"].includes(part.type)) + throw new Error(`Timeline user message ${message.info.id} cannot own ${part.type} part ${part.id}`) + if (message.info.role === "assistant" && ["agent", "subtask"].includes(part.type)) + throw new Error(`Timeline assistant message ${message.info.id} cannot own ${part.type} part ${part.id}`) + if (partIDs.has(part.id)) throw new Error(`Timeline fixture has duplicate part ID: ${part.id}`) + partIDs.add(part.id) + }) + }) + return messages +} + +export async function waitForVisualSettle(page: Page, selectors: string[], stableFrames = 3) { + await page.waitForFunction( + ({ selectors, stableFrames }) => { + const elements = selectors.map((selector) => document.querySelector(selector)) + if (elements.some((element) => !element)) return false + return new Promise((resolve) => { + let stable = 0 + let previous = "" + const sample = () => { + const signature = JSON.stringify( + elements.map((element) => { + const rect = element!.getBoundingClientRect() + return [Math.round(rect.top * 10), Math.round(rect.bottom * 10), Math.round(rect.height * 10)] + }), + ) + stable = signature === previous ? stable + 1 : 0 + previous = signature + const ordered = elements + .slice(1) + .every( + (element, index) => + elements[index]!.getBoundingClientRect().bottom <= element!.getBoundingClientRect().top + 0.5, + ) + if (stable >= stableFrames && ordered) return resolve(true) + requestAnimationFrame(sample) + } + requestAnimationFrame(sample) + }) + }, + { selectors, stableFrames }, + ) +} + +export function historyMessages(count: number): TimelineMessage[] { + return Array.from({ length: count }, (_, index) => { + const value = String(index).padStart(4, "0") + const historyUserID = `msg_0${value}_history_a_user` + return [ + userMessage(undefined, { id: historyUserID, created: 1690000000000 + index * 10_000 }), + assistantMessage( + [ + { + id: `prt_0${value}_history_text`, + type: "text", + text: `Historical response ${index}. ${"Existing session content keeps the virtual timeline realistic. ".repeat(5)}`, + }, + ], + { + id: `msg_0${value}_history_b_assistant`, + parentID: historyUserID, + created: 1690000001000 + index * 10_000, + }, + ), + ] + }).flat() +} + +export function partUpdated(part: Part | PartSeed<"assistant">) { + const owned = "messageID" in part ? part : { ...part, sessionID, messageID: assistantID } + decodePart(owned, decodeOptions) + return event("message.part.updated", { + sessionID, + part: owned, + time: 1700000002000, + }) +} + +export function partDelta(partID: string, delta: string, messageID = assistantID) { + return event("message.part.delta", { sessionID, messageID, partID, field: "text", delta }) +} + +export function messageUpdated(info: Message) { + return event("message.updated", { sessionID, info }) +} + +export function status(type: SessionStatus["type"], attempt = 1) { + return event("session.status", { + sessionID, + status: type === "retry" ? { type, attempt, message: "Rate limited", next: 1700000010000 } : { type }, + }) +} + +export function userMessage( + parts?: PartSeed<"user">[], + input: { id?: string; summary?: UserMessage["summary"]; created?: number } = {}, +): Extract { + const id = input.id ?? userID + const seeds = parts ?? [userText("Build the timeline stability matrix.", { id: `prt_${id}_text` })] + const message = { + info: { + id, + sessionID, + role: "user", + time: { created: input.created ?? 1700000000000 }, + summary: input.summary ?? { diffs: [] }, + agent: "build", + model, + }, + parts: seeds.map((part) => ({ + ...part, + sessionID, + messageID: id, + })), + } satisfies Extract + decodeMessage(message, decodeOptions) + return message +} + +export function assistantMessage( + parts: PartSeed<"assistant">[] = [], + input: { + id?: string + parentID?: string + completed?: boolean + error?: AssistantMessage["error"] + created?: number + } = {}, +): Extract { + const id = input.id ?? assistantID + const message = { + info: { + id, + sessionID, + role: "assistant", + time: { + created: input.created ?? 1700000001000, + ...(input.completed === false ? {} : { completed: (input.created ?? 1700000001000) + 1_000 }), + }, + parentID: input.parentID ?? userID, + modelID: model.modelID, + providerID: model.providerID, + mode: "build", + agent: "build", + path: { cwd: directory, root: directory }, + cost: 0.01, + tokens: { input: 100, output: 200, reasoning: 0, cache: { read: 0, write: 0 } }, + variant: "max", + ...(input.error ? { error: input.error } : {}), + }, + parts: parts.map((part) => ({ ...part, sessionID, messageID: id })), + } satisfies Extract + decodeMessage(message, decodeOptions) + return message +} + +export function userText( + text: string, + input: Partial, { type: "text" }>, "type" | "text">> = {}, +): Extract, { type: "text" }> { + return { id: "prt_user_text", type: "text", text, ...input } +} + +export function textPart(id: string, text: string): Extract, { type: "text" }> { + return { id, type: "text", text } +} + +export function reasoningPart(id: string, text: string): Extract, { type: "reasoning" }> { + return { id, type: "reasoning", text, time: { start: 1700000001000 } } +} + +export function toolPart( + id: string, + tool: string, + state: "pending", + input: Record, + options?: ToolOptions<"pending">, +): Omit +export function toolPart( + id: string, + tool: string, + state: "running", + input: Record, + options?: ToolOptions<"running">, +): Omit +export function toolPart( + id: string, + tool: string, + state: "completed", + input: Record, + options?: ToolOptions<"completed">, +): Omit +export function toolPart( + id: string, + tool: string, + state: "error", + input: Record, + options?: ToolOptions<"error">, +): Omit +export function toolPart( + id: string, + tool: string, + state: ToolStatus, + input: Record, + options: ToolOptions = {}, +): Omit { + const base = { id, type: "tool" as const, callID: `call_${id}`, tool } + if (state === "pending") return { ...base, state: { status: state, input, raw: "" } } + if (state === "running") + return { + ...base, + state: { + status: state, + input, + title: options.title, + metadata: options.metadata ?? {}, + time: { start: 1700000001000 }, + }, + } + if (state === "error") + return { + ...base, + state: { + status: state, + input, + error: options.error ?? "Tool failed", + metadata: options.metadata ?? {}, + time: { start: 1700000001000, end: 1700000002000 }, + }, + } + return { + ...base, + state: { + status: state, + input, + output: options.output ?? "Completed", + title: options.title ?? tool, + metadata: options.metadata ?? {}, + time: { start: 1700000001000, end: 1700000002000 }, + }, + } +} + +export function shell( + id: string, + state: ToolStatus, + output = "", + command = `echo ${id}`, +): Omit { + if (state === "pending") return toolPart(id, "bash", state, { command }) + if (state === "running") + return toolPart(id, "bash", state, { command }, { title: command, metadata: { command, output } }) + if (state === "error") + return toolPart(id, "bash", state, { command }, { error: output || undefined, metadata: { command, output } }) + return toolPart(id, "bash", state, { command }, { title: command, output, metadata: { command, output } }) +} + +export function completedAssistantInfo(info: AssistantMessage): AssistantMessage { + return { ...info, time: { ...info.time, completed: 1700000003000 } } +} + +export function project() { + return { + id: projectID, + worktree: directory, + vcs: "git", + name: "timeline-stability", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + } +} + +export function session(input: Partial = {}): Session { + return { + id: sessionID, + slug: "timeline-stability", + projectID, + directory, + title, + version: "dev", + time: { created: 1700000000000, updated: 1700000000000 }, + ...input, + } +} + +function eventSchema< + const Type extends TimelinePayload["type"], + const Properties extends Schema.Codec, +>(type: Type, properties: Properties) { + return Schema.Struct({ + directory: Schema.String, + project: Schema.optional(Schema.String), + workspace: Schema.optional(Schema.String), + payload: Schema.Struct({ id: Event.ID, type: Schema.Literal(type), properties }), + }) +} + +function provider() { + return { + all: [ + { + id: "opencode", + name: "OpenCode", + models: { "claude-opus-4-6": { id: "claude-opus-4-6", name: "Claude Opus 4.6", limit: { context: 200_000 } } }, + }, + ], + connected: ["opencode"], + default: { providerID: "opencode", modelID: "claude-opus-4-6" }, + } +} diff --git a/packages/app/e2e/performance/timeline-stability/interaction.spec.ts b/packages/app/e2e/performance/timeline-stability/interaction.spec.ts new file mode 100644 index 000000000000..8cdf4fa8cfa8 --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/interaction.spec.ts @@ -0,0 +1,242 @@ +import { expect, test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { assistantMessage, setupTimeline, shell, textPart, toolPart, userMessage, waitForVisualSettle } from "./fixture" + +test("expands and collapses a long completed shell without overlap", async ({ page }, testInfo) => { + const shellID = "prt_interaction_01_shell" + const followingID = "prt_interaction_02_following" + await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([shell(shellID, "completed", lines(50)), textPart(followingID, "Following shell expansion")]), + ], + settings: { shellToolPartsExpanded: false }, + cpuRate: 4, + seedHistory: true, + }) + const trigger = page.locator(`[data-timeline-part-id="${shellID}"] [data-slot="collapsible-trigger"]`) + await waitForVisualSettle(page, [`[data-timeline-part-id="${shellID}"]`, `[data-timeline-part-id="${followingID}"]`]) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + const plan = visualPlan(regions, [ + { type: "required", regions: ["shell", "following"] }, + { type: "unique", regions: ["shell", "following"] }, + { type: "stable", regions: ["shell", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["shell", "following"] }, + ]) + await startVisualProbe(page, regions) + await trigger.click() + await expect(trigger).toHaveAttribute("aria-expanded", "true") + await page.waitForTimeout(500) + const expanded = await stopVisualProbe(page) + await reportVisualStability(testInfo, "shell-expand", expanded, plan) + + await startVisualProbe(page, regions) + await trigger.click() + await expect(trigger).toHaveAttribute("aria-expanded", "false") + await page.waitForTimeout(500) + const collapsed = await stopVisualProbe(page) + await reportVisualStability(testInfo, "shell-collapse", collapsed, plan) +}) + +test("expands and collapses a completed context group without overlap", async ({ page }, testInfo) => { + const ids = [ + "prt_interaction_01_read", + "prt_interaction_02_glob", + "prt_interaction_03_grep", + "prt_interaction_04_list", + ] + const group = `[data-timeline-part-ids="${ids.join(",")}"]` + const followingID = "prt_interaction_context_following" + await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + toolPart(ids[0]!, "read", "completed", { filePath: "src/a.ts" }), + toolPart(ids[1]!, "glob", "completed", { path: ".", pattern: "**/*.ts" }), + toolPart(ids[2]!, "grep", "completed", { path: ".", pattern: "stable" }), + toolPart(ids[3]!, "list", "completed", { path: "src" }), + textPart(followingID, "Following context expansion"), + ]), + ], + cpuRate: 4, + seedHistory: true, + }) + const trigger = page.locator(`${group} [data-slot="collapsible-trigger"]`) + await waitForVisualSettle(page, [group, `[data-timeline-part-id="${followingID}"]`]) + for (const [name, expanded] of [ + ["context-expand", true], + ["context-collapse", false], + ["context-reexpand", true], + ] as const) { + const regions = defineVisualRegions({ + context: { selector: group, closest: '[data-timeline-row="AssistantPart"]' }, + following: { + selector: `[data-timeline-part-id="${followingID}"]`, + closest: '[data-timeline-row="AssistantPart"]', + }, + }) + await startVisualProbe(page, regions) + await trigger.click() + await expect(trigger).toHaveAttribute("aria-expanded", String(expanded)) + await page.waitForTimeout(500) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + name, + trace, + visualPlan(regions, [ + { type: "required", regions: ["context", "following"] }, + { type: "unique", regions: ["context", "following"] }, + { type: "stable", regions: ["context", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["context", "following"] }, + ]), + ) + } +}) + +test("expands and collapses an edit diff without moving twice", async ({ page }, testInfo) => { + const editID = "prt_interaction_edit" + const followingID = "prt_interaction_edit_following" + await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + toolPart( + editID, + "edit", + "completed", + { filePath: "src/edit.ts" }, + { + metadata: { + filediff: { + file: "src/edit.ts", + additions: 40, + deletions: 40, + before: source(40, false), + after: source(40, true), + }, + }, + }, + ), + textPart(followingID, "Following edit expansion"), + ]), + ], + settings: { editToolPartsExpanded: false }, + cpuRate: 4, + seedHistory: true, + }) + const trigger = page.locator(`[data-timeline-part-id="${editID}"] [data-slot="collapsible-trigger"]`).first() + await waitForVisualSettle(page, [`[data-timeline-part-id="${editID}"]`, `[data-timeline-part-id="${followingID}"]`]) + const regions = defineVisualRegions({ + edit: { selector: `[data-timeline-part-id="${editID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await trigger.click() + await expect(trigger).toHaveAttribute("aria-expanded", "true") + await page.waitForTimeout(900) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "edit-expand", + trace, + visualPlan(regions, [ + { type: "required", regions: ["edit", "following"] }, + { type: "unique", regions: ["edit", "following"] }, + { type: "stable", regions: ["edit", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0, maxReversals: 1 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["edit", "following"] }, + ]), + ) +}) + +test("shows all and expands historical diff summary without overlap", async ({ page }, testInfo) => { + const firstUser = userMessage(undefined, { + summary: { + diffs: Array.from({ length: 12 }, (_, index) => ({ + file: `src/diff-${index}.ts`, + additions: 1, + deletions: 1, + patch: `@@ -1 +1 @@\n-export const value = ${index}\n+export const value = ${index + 1}`, + })), + }, + }) + const nextUserID = "msg_2000_diff_interaction_user" + await setupTimeline(page, { + messages: [ + firstUser, + assistantMessage(), + userMessage(undefined, { id: nextUserID, created: 1700000010000 }), + assistantMessage([], { + id: "msg_2001_diff_interaction_assistant", + parentID: nextUserID, + created: 1700000011000, + }), + ], + cpuRate: 4, + }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + await scroller.evaluate((element) => (element.scrollTop = 0)) + const diff = page.locator('[data-timeline-row="DiffSummary"]') + const following = page.locator(`[data-message-id="${nextUserID}"]`).first() + await expect(diff).toBeVisible() + const regions = defineVisualRegions({ + diff: { selector: '[data-timeline-row="DiffSummary"]' }, + following: { selector: `[data-message-id="${nextUserID}"]` }, + }) + await startVisualProbe(page, regions) + await page.getByText(/show all/i).click() + await page.waitForTimeout(500) + await diff.locator('[data-slot="session-turn-diff-trigger"]').first().click() + await page.waitForTimeout(900) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "diff-summary-expand", + trace, + visualPlan(regions, [ + { type: "required", regions: ["diff", "following"] }, + { type: "unique", regions: ["diff", "following"] }, + { type: "stable", regions: ["diff", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 1, maxReversals: 2 }, + { type: "label-stability", regions: "all" }, + { type: "flow", regions: ["diff", "following"] }, + ]), + ) +}) + +function lines(count: number) { + return Array.from({ length: count }, (_, index) => `line ${index + 1}`).join("\n") +} + +function source(count: number, changed: boolean) { + return Array.from( + { length: count }, + (_, index) => `export const value${index} = ${changed ? index + 1 : index}\n`, + ).join("") +} diff --git a/packages/app/e2e/performance/timeline-stability/lifecycle.spec.ts b/packages/app/e2e/performance/timeline-stability/lifecycle.spec.ts new file mode 100644 index 000000000000..40688429a33e --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/lifecycle.spec.ts @@ -0,0 +1,157 @@ +import { expect, test } from "@playwright/test" +import { + defineVisualRegions, + mapVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantMessage, + completedAssistantInfo, + messageUpdated, + partDelta, + partUpdated, + reasoningPart, + setupTimeline, + shell, + status, + textPart, + userMessage, + waitForVisualSettle, +} from "./fixture" + +test.describe("timeline visual lifecycle stability", () => { + test("streams empty, short, and long parallel shells to staggered completion", async ({ page }, testInfo) => { + test.setTimeout(180_000) + const ids = ["prt_parallel_01_empty", "prt_parallel_02_short", "prt_parallel_03_long"] as const + const initial = ids.map((id) => shell(id, "running")) + const followingID = "prt_parallel_04_following" + const assistant = assistantMessage([...initial, textPart(followingID, "Following all parallel shells.")], { + completed: false, + }) + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistant], + settings: { shellToolPartsExpanded: true, showReasoningSummaries: true }, + cpuRate: 4, + eventRetry: 24, + seedHistory: true, + }) + await timeline.send(status("busy"), 150) + for (const id of ids) await timeline.waitForPart(id) + const scroller = page.locator(".scroll-view__viewport", { + has: page.locator('[data-timeline-row="AssistantPart"]'), + }) + await scroller.evaluate((element) => (element.scrollTop = element.scrollHeight)) + const regions = defineVisualRegions({ + prt_shell_empty: shellRegion(ids[0]), + prt_shell_short: shellRegion(ids[1]), + prt_shell_long: shellRegion(ids[2]), + following: shellRegion(followingID), + }) + await waitForVisualSettle(page, [`[data-timeline-part-id="${followingID}"]`]) + await startVisualProbe(page, regions) + await timeline.sendAll([ + { event: partUpdated(shell(ids[0]!, "completed", "")), delay: 180 }, + { event: partUpdated(shell(ids[2]!, "running", lines(10))), delay: 70 }, + { event: partUpdated(shell(ids[1]!, "running", lines(2))), delay: 110 }, + { event: partUpdated(shell(ids[2]!, "running", lines(25))), delay: 80 }, + { event: partUpdated(shell(ids[1]!, "completed", lines(2))), delay: 260 }, + { event: partUpdated(shell(ids[2]!, "running", lines(50))), delay: 100 }, + { event: partUpdated(shell(ids[2]!, "completed", lines(50))), delay: 450 }, + { event: messageUpdated(completedAssistantInfo(assistant.info)), delay: 100 }, + { event: status("idle"), delay: 700 }, + ]) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "parallel-shells", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["prt_shell_empty", "prt_shell_short", "prt_shell_long", "following"] }, + { type: "unique", regions: ["prt_shell_empty", "prt_shell_short", "prt_shell_long"] }, + { type: "stable", regions: ["prt_shell_empty", "prt_shell_short", "prt_shell_long", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0, maxReversals: 4 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["prt_shell_empty", "prt_shell_short", "prt_shell_long", "following"] }, + ], + { perMarker: true }, + ), + ) + await expect(page.locator(`[data-timeline-part-id="${ids[2]}"] [data-slot="bash-pre"]`)).toContainText("line 50") + + const short = page.locator(`[data-timeline-part-id="${ids[1]}"]`) + await short.locator('[data-slot="collapsible-trigger"]').click() + await expect(short.locator('[data-slot="collapsible-trigger"]')).toHaveAttribute("aria-expanded", "false") + await timeline.send(partUpdated(textPart("prt_late_sibling", "A later sibling rerender.")), 250) + await expect(short.locator('[data-slot="collapsible-trigger"]')).toHaveAttribute("aria-expanded", "false") + }) + + test("replaces thinking with streamed reasoning and text without a blank visible turn", async ({ + page, + }, testInfo) => { + const reasoningID = "prt_reasoning_visible" + const textID = "prt_streamed_text" + const assistant = assistantMessage([], { completed: false }) + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistant], + settings: { showReasoningSummaries: true }, + cpuRate: 4, + }) + await timeline.send(status("busy"), 120) + await expect(page.locator('[data-timeline-row="Thinking"]')).toBeVisible() + + const regions = defineVisualRegions({ + thinking: { selector: '[data-timeline-row="Thinking"]' }, + reasoning: { + selector: `[data-timeline-part-id="${reasoningID}"]`, + closest: '[data-timeline-row="AssistantPart"]', + }, + text: { selector: `[data-timeline-part-id="${textID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(reasoningPart(reasoningID, "")), 100) + await expect(page.locator(`[data-timeline-part-id="${reasoningID}"]`)).toHaveCount(0) + await timeline.send(partUpdated(reasoningPart(reasoningID, "## Planning\n\nChecking the visible timeline.")), 160) + await timeline.waitForPart(reasoningID) + await expect(page.locator('[data-timeline-row="Thinking"]')).toHaveCount(0) + await timeline.send(partUpdated(textPart(textID, "Starting")), 100) + await timeline.send(partDelta(textID, " **stable"), 90) + await timeline.send(partDelta(textID, " output** with `code` and [a link"), 130) + await timeline.send(partDelta(textID, "](https://example.com)."), 220) + await timeline.send(messageUpdated(completedAssistantInfo(assistant.info)), 120) + await timeline.send(status("idle"), 500) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "reasoning-text-handoff", + trace, + visualPlan(regions, [ + { type: "required", regions: ["reasoning", "text"] }, + { type: "continuous-any", regions: ["thinking", "reasoning", "text"] }, + { type: "unique", regions: ["reasoning", "text"] }, + { type: "stable", regions: ["reasoning", "text"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxReversals: 4 }, + { type: "label-stability", regions: "all" }, + { type: "flow", regions: ["reasoning", "text"] }, + ]), + ) + await expect(page.locator(`[data-timeline-part-id="${textID}"]`)).toContainText("stable output") + }) +}) + +function lines(count: number) { + return Array.from({ length: count }, (_, index) => `line ${index + 1}`).join("\n") +} + +function shellRegion(id: string) { + return { selector: `[data-timeline-part-id="${id}"]`, closest: '[data-timeline-row="AssistantPart"]' } +} diff --git a/packages/app/e2e/performance/timeline-stability/oracle-browser.spec.ts b/packages/app/e2e/performance/timeline-stability/oracle-browser.spec.ts new file mode 100644 index 000000000000..7891eba5bd97 --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/oracle-browser.spec.ts @@ -0,0 +1,75 @@ +import { expect, test } from "@playwright/test" +import { + analyzeVisualObservations, + defineVisualRegions, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { assistantMessage, setupTimeline, textPart, userMessage } from "./fixture" + +test("detects blanking caused by ancestor opacity", async ({ page }) => { + const partID = "prt_oracle_ancestor_opacity" + await setupTimeline(page, { messages: [userMessage(), assistantMessage([textPart(partID, "Visible content")])] }) + const row = page.locator(`[data-timeline-part-id="${partID}"]`).first() + const regions = defineVisualRegions({ + content: { selector: `[data-timeline-part-id="${partID}"]` }, + }) + await startVisualProbe(page, regions) + await row.evaluate((element) => { + element.parentElement!.style.opacity = "0" + }) + await page.waitForTimeout(50) + await row.evaluate((element) => { + element.parentElement!.style.opacity = "1" + }) + await page.waitForTimeout(50) + const trace = await stopVisualProbe(page) + const issues = analyzeVisualObservations( + trace.samples, + visualPlan(regions, [ + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all" }, + { type: "label-stability", regions: "all" }, + ]), + ) + + expect(issues.some((issue) => issue.includes("blanked between visible frames"))).toBe(true) +}) + +test("detects root opacity when probing descendant opacity", async ({ page }) => { + const partID = "prt_oracle_descendant_opacity" + await setupTimeline(page, { messages: [userMessage(), assistantMessage([textPart(partID, "Visible content")])] }) + const row = page.locator(`[data-timeline-part-id="${partID}"]`).first() + await row.evaluate((element) => { + element.innerHTML = 'Visible content' + }) + const regions = defineVisualRegions({ + content: { + selector: `[data-timeline-part-id="${partID}"]`, + opacitySelectors: ['[data-probe-opacity="true"]'], + }, + }) + await startVisualProbe(page, regions) + await row.evaluate((element) => { + ;(element as HTMLElement).style.opacity = "0" + }) + await page.waitForTimeout(50) + await row.evaluate((element) => { + ;(element as HTMLElement).style.opacity = "1" + }) + await page.waitForTimeout(50) + const trace = await stopVisualProbe(page) + const issues = analyzeVisualObservations( + trace.samples, + visualPlan(regions, [ + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all" }, + { type: "label-stability", regions: "all" }, + ]), + ) + + expect(issues.some((issue) => issue.includes("blanked between visible frames"))).toBe(true) +}) diff --git a/packages/app/e2e/performance/timeline-stability/playwright.config.ts b/packages/app/e2e/performance/timeline-stability/playwright.config.ts new file mode 100644 index 000000000000..cfa4d926132d --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/playwright.config.ts @@ -0,0 +1,17 @@ +import config from "../playwright.config" + +export default { + ...config, + testDir: ".", + testMatch: "**/*.spec.ts", + outputDir: "../../test-results/timeline-stability", + reporter: [["html", { outputFolder: "../../playwright-report/timeline-stability", open: "never" }], ["line"]], + retries: 0, + workers: 1, + use: { + ...config.use, + trace: "retain-on-failure", + screenshot: "only-on-failure", + video: "retain-on-failure", + }, +} diff --git a/packages/app/e2e/performance/timeline-stability/scroll-interaction.spec.ts b/packages/app/e2e/performance/timeline-stability/scroll-interaction.spec.ts new file mode 100644 index 000000000000..e67545104d48 --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/scroll-interaction.spec.ts @@ -0,0 +1,353 @@ +import { expect, test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantMessage, + partUpdated, + setupTimeline, + shell, + textPart, + userMessage, + type TimelineMessage, +} from "./fixture" + +test("does not reverse visible rows when the user wheels during shell remeasurement", async ({ page }, testInfo) => { + const shellID = "prt_wheel_01_shell" + const followingID = "prt_wheel_02_following" + const timeline = await setupTimeline(page, { + messages: [ + ...history(12), + userMessage(), + assistantMessage([shell(shellID, "running"), textPart(followingID, "Following wheel interaction")], { + completed: false, + }), + ], + settings: { shellToolPartsExpanded: true }, + cpuRate: 4, + reducedMotion: true, + seedHistory: true, + }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(shell(shellID, "running", lines(30))), 80) + await scroller.evaluate((element) => + element.dispatchEvent(new WheelEvent("wheel", { bubbles: true, cancelable: true, deltaY: -180 })), + ) + await scroller.evaluate((element) => (element.scrollTop -= 180)) + await timeline.send(partUpdated(shell(shellID, "running", lines(50))), 250) + const trace = await stopVisualProbe(page) + await reportVisualStability(testInfo, "wheel-during-resize", trace, rowPairPlan(regions, 1)) +}) + +test("keeps moving upward while drag-selecting above the timeline", async ({ page }) => { + await setupTimeline(page, { + messages: history(80), + viewport: { width: 1400, height: 700 }, + reducedMotion: true, + }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + const text = page.getByText("History 79.", { exact: false }) + await expect(text).toBeVisible() + await scroller.evaluate((element) => { + element.dataset.selectionLength = "0" + document.addEventListener("selectionchange", () => { + element.dataset.selectionLength = String( + Math.max(Number(element.dataset.selectionLength), window.getSelection()?.toString().length ?? 0), + ) + }) + }) + const textBox = await text.boundingBox() + const scrollBox = await scroller.boundingBox() + expect(textBox).not.toBeNull() + expect(scrollBox).not.toBeNull() + if (!textBox || !scrollBox) return + + await page.mouse.move(textBox.x + textBox.width - 10, textBox.y + textBox.height / 2) + await page.mouse.down() + await page.mouse.move(textBox.x + 20, scrollBox.y - 120, { steps: 30 }) + + await expect.poll(() => scroller.evaluate((element) => Number(element.dataset.selectionLength))).toBeGreaterThan(0) + await expect + .poll(() => scroller.evaluate((element) => element.scrollHeight - element.clientHeight - element.scrollTop)) + .toBeGreaterThan(500) + await page.mouse.up() +}) + +test("does not pull a keyboard-scrolled user during shell remeasurement", async ({ page }, testInfo) => { + const shellID = "prt_keyboard_01_shell" + const followingID = "prt_keyboard_02_following" + const timeline = await setupTimeline(page, { + messages: [ + ...history(12), + userMessage(), + assistantMessage([shell(shellID, "running"), textPart(followingID, "Following keyboard interaction")], { + completed: false, + }), + ], + settings: { shellToolPartsExpanded: true }, + cpuRate: 4, + }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + await scroller.focus() + for (let index = 0; index < 3; index++) { + await scroller.press("PageUp") + await page.waitForTimeout(250) + } + await expect + .poll(() => scroller.evaluate((element) => element.scrollHeight - element.clientHeight - element.scrollTop), { + timeout: 20_000, + }) + .toBeGreaterThan(80) + await page.waitForFunction(() => { + const root = [...document.querySelectorAll(".scroll-view__viewport")].find((element) => + element.querySelector("[data-timeline-row]"), + ) + if (!root) return false + return new Promise((resolve) => { + const top = root.scrollTop + requestAnimationFrame(() => requestAnimationFrame(() => resolve(Math.abs(root.scrollTop - top) <= 0.5))) + }) + }) + const anchor = await scroller.evaluate((element) => { + const view = element.getBoundingClientRect() + return [...element.querySelectorAll("[data-timeline-key]")].find((row) => { + const rect = row.getBoundingClientRect() + return rect.top >= view.top + 40 && rect.bottom <= view.bottom - 40 + })?.dataset.timelineKey + }) + expect(anchor).toBeTruthy() + const regions = defineVisualRegions({ + anchor: { selector: `[data-timeline-key="${anchor}"]` }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(shell(shellID, "running", lines(50))), 400) + const trace = await stopVisualProbe(page) + await reportVisualStability(testInfo, "keyboard-during-resize", trace, anchorPlan(regions)) +}) + +test("tracks keyboard scrolling from a focused timeline descendant", async ({ page }, testInfo) => { + const shellID = "prt_descendant_keyboard_01_shell" + const timeline = await setupTimeline(page, { + messages: [...history(12), userMessage(), assistantMessage([shell(shellID, "completed", lines(5))])], + settings: { shellToolPartsExpanded: false }, + cpuRate: 4, + reducedMotion: true, + }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + const row = page.locator(`[data-timeline-part-id="${shellID}"]`).first() + const trigger = page.locator(`[data-timeline-part-id="${shellID}"] [data-slot="collapsible-trigger"]`) + await row.evaluate((element) => element.setAttribute("tabindex", "0")) + await row.focus() + for (let index = 0; index < 3; index++) { + await row.press("PageUp") + await page.waitForTimeout(250) + } + await expect + .poll(() => scroller.evaluate((element) => element.scrollHeight - element.clientHeight - element.scrollTop)) + .toBeGreaterThan(5) + const anchor = await scroller.evaluate((element) => { + const view = element.getBoundingClientRect() + return [...element.querySelectorAll("[data-timeline-key]")].find((row) => { + const rect = row.getBoundingClientRect() + return rect.top >= view.top + 40 && rect.bottom <= view.bottom - 40 + })?.dataset.timelineKey + }) + expect(anchor).toBeTruthy() + const regions = defineVisualRegions({ + anchor: { selector: `[data-timeline-key="${anchor}"]` }, + }) + await startVisualProbe(page, regions) + await trigger.click() + await page.waitForTimeout(300) + const trace = await stopVisualProbe(page) + await reportVisualStability(testInfo, "descendant-keyboard-resize", trace, anchorPlan(regions)) +}) + +test("does not claim keyboard scrolling owned by a nested scrollable", async ({ page }) => { + const shellID = "prt_nested_keyboard_shell" + await setupTimeline(page, { + messages: [userMessage(), assistantMessage([shell(shellID, "completed", lines(50))])], + settings: { shellToolPartsExpanded: true }, + cpuRate: 4, + reducedMotion: true, + seedHistory: true, + }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + const nested = page.locator(`[data-timeline-part-id="${shellID}"] [data-scrollable]`) + await nested.evaluate((element) => (element.scrollTop = element.scrollHeight)) + await nested.focus() + await page.waitForFunction(() => { + const root = [...document.querySelectorAll(".scroll-view__viewport")].find((element) => + element.querySelector("[data-timeline-row]"), + ) + if (!root) return false + return new Promise((resolve) => { + const top = root.scrollTop + requestAnimationFrame(() => requestAnimationFrame(() => resolve(Math.abs(root.scrollTop - top) <= 0.5))) + }) + }) + const before = await scroller.evaluate((element) => element.scrollTop) + const nestedBefore = await nested.evaluate((element) => element.scrollTop) + await nested.press("PageUp") + await page.waitForTimeout(300) + expect(await scroller.evaluate((element) => element.scrollTop)).toBe(before) + expect(await nested.evaluate((element) => element.scrollTop)).toBeLessThan(nestedBefore) + + await nested.evaluate((element) => (element.scrollTop = 0)) + await scroller.evaluate((element) => (element.scrollTop = Math.min(300, element.scrollHeight - element.clientHeight))) + const boundaryBefore = await scroller.evaluate((element) => element.scrollTop) + expect(boundaryBefore).toBeGreaterThan(0) + await nested.press("PageUp") + await expect.poll(() => scroller.evaluate((element) => element.scrollTop)).toBeLessThan(boundaryBefore) + + const nonOverflowing = page.locator(`[data-timeline-part-id="${shellID}"]`).first() + await nonOverflowing.evaluate((element) => { + element.setAttribute("data-scrollable", "") + element.setAttribute("tabindex", "0") + }) + await nonOverflowing.focus() + const nonOverflowBefore = await scroller.evaluate((element) => element.scrollTop) + await nonOverflowing.press("PageUp") + await expect.poll(() => scroller.evaluate((element) => element.scrollTop)).toBeLessThan(nonOverflowBefore) +}) + +test("jump to latest lands on stable final rows after offscreen growth", async ({ page }, testInfo) => { + const shellID = "prt_jump_01_shell" + const followingID = "prt_jump_02_following" + const timeline = await setupTimeline(page, { + messages: [ + ...history(20), + userMessage(), + assistantMessage([shell(shellID, "running"), textPart(followingID, "Latest visible row")], { completed: false }), + ], + settings: { shellToolPartsExpanded: true }, + cpuRate: 4, + }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + await scroller.evaluate( + (element) => (element.scrollTop = Math.max(0, element.scrollHeight - element.clientHeight - 600)), + ) + await timeline.send(partUpdated(shell(shellID, "running", lines(50))), 300) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await page.getByRole("button", { name: /Jump to latest/i }).click() + await expect(page.locator(`[data-timeline-part-id="${followingID}"]`)).toBeVisible() + await page.waitForTimeout(600) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "jump-latest", + trace, + visualPlan(regions, [ + { type: "required", regions: ["shell", "following"] }, + { type: "unique", regions: ["shell", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 1 }, + { type: "label-stability", regions: "all" }, + { type: "acquire-bottom-anchor" }, + { type: "flow", regions: ["shell", "following"] }, + ]), + ) +}) + +test("handles a single row taller than the viewport", async ({ page }, testInfo) => { + const shellID = "prt_tall_01_shell" + const followingID = "prt_tall_02_following" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([shell(shellID, "running"), textPart(followingID, "After tall row")], { completed: false }), + ], + settings: { shellToolPartsExpanded: true }, + viewport: { width: 900, height: 360 }, + cpuRate: 4, + seedHistory: true, + }) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(shell(shellID, "completed", lines(100))), 700) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "taller-than-viewport", + trace, + visualPlan(regions, [ + { type: "required", regions: ["shell", "following"] }, + { type: "unique", regions: ["shell", "following"] }, + { type: "stable", regions: ["shell", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["shell", "following"] }, + ]), + ) +}) + +function history(count: number): TimelineMessage[] { + return Array.from({ length: count }, (_, index) => { + const prefix = `msg_${String(index).padStart(4, "0")}_scroll` + const userID = `${prefix}_a_user` + return [ + userMessage(undefined, { id: userID, created: 1690000000000 + index * 10_000 }), + assistantMessage( + [textPart(`prt_${String(index).padStart(4, "0")}_scroll`, `History ${index}. ${"content ".repeat(30)}`)], + { + id: `${prefix}_b_assistant`, + parentID: userID, + created: 1690000001000 + index * 10_000, + }, + ), + ] + }).flat() +} + +function lines(count: number) { + return Array.from({ length: count }, (_, index) => `line ${index + 1}`).join("\n") +} + +function rowPairPlan( + regions: Record<"shell" | "following", { selector: string; closest?: string }>, + maxPositionReversals: number, +) { + return visualPlan(regions, [ + { type: "required", regions: ["shell", "following"] }, + { type: "unique", regions: ["shell", "following"] }, + { type: "stable", regions: ["shell", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals }, + { type: "label-stability", regions: "all" }, + { type: "flow", regions: ["shell", "following"] }, + ]) +} + +function anchorPlan(regions: Record<"anchor", { selector: string; closest?: string }>) { + return visualPlan(regions, [ + { type: "required", regions: ["anchor"] }, + { type: "unique", regions: ["anchor"] }, + { type: "stable", regions: ["anchor"] }, + { type: "fixed", regions: ["anchor"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + ]) +} diff --git a/packages/app/e2e/performance/timeline-stability/shell-matrix.spec.ts b/packages/app/e2e/performance/timeline-stability/shell-matrix.spec.ts new file mode 100644 index 000000000000..bab1ca23b4f9 --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/shell-matrix.spec.ts @@ -0,0 +1,255 @@ +import { test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantMessage, + partUpdated, + setupTimeline, + shell, + textPart, + userMessage, + waitForVisualSettle, +} from "./fixture" + +const profiles = [ + { + name: "empty running to completed", + updates: [{ state: "completed" as const, output: "", delay: 350 }], + }, + { + name: "50 lines arriving incrementally", + updates: [ + { state: "running" as const, output: lines(1), delay: 100 }, + { state: "running" as const, output: lines(10), delay: 160 }, + { state: "running" as const, output: lines(25), delay: 90 }, + { state: "running" as const, output: lines(50), delay: 220 }, + { state: "completed" as const, output: lines(50), delay: 500 }, + ], + }, + { + name: "wide ANSI and CRLF output", + updates: [ + { + state: "running" as const, + output: Array.from({ length: 20 }, (_, index) => `\u001b[32mline ${index}\u001b[0m ${"wide-".repeat(30)}`).join( + "\r\n", + ), + delay: 240, + }, + { + state: "completed" as const, + output: Array.from({ length: 20 }, (_, index) => `line ${index} ${"wide-".repeat(30)}`).join("\n"), + delay: 500, + }, + ], + }, +] as const + +for (const profile of profiles) { + test(`keeps rows stable for shell ${profile.name}`, async ({ page }, testInfo) => { + const shellID = `prt_matrix_${profiles.indexOf(profile)}_01_shell` + const followingID = `prt_matrix_${profiles.indexOf(profile)}_02_following` + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([shell(shellID, "running"), textPart(followingID, "Following shell row")], { + completed: false, + }), + ], + settings: { shellToolPartsExpanded: true }, + cpuRate: 4, + seedHistory: true, + }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + await scroller.evaluate((element) => (element.scrollTop = element.scrollHeight)) + await waitForVisualSettle(page, [ + `[data-timeline-part-id="${shellID}"]`, + `[data-timeline-part-id="${followingID}"]`, + ]) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { + selector: `[data-timeline-part-id="${followingID}"]`, + closest: '[data-timeline-row="AssistantPart"]', + }, + }) + await startVisualProbe(page, regions) + for (const update of profile.updates) { + await timeline.send(partUpdated(shell(shellID, update.state, update.output)), update.delay) + } + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + `shell-${profiles.indexOf(profile)}`, + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["shell", "following"] }, + { type: "unique", regions: ["shell", "following"] }, + { type: "stable", regions: ["shell", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0, maxReversals: 1 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["shell", "following"] }, + ], + { perMarker: true }, + ), + ) + }) +} + +test("keeps following row stable when a collapsed shell receives 50 lines", async ({ page }, testInfo) => { + const shellID = "prt_matrix_collapsed_01_shell" + const followingID = "prt_matrix_collapsed_02_following" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([shell(shellID, "running"), textPart(followingID, "Following collapsed shell")], { + completed: false, + }), + ], + settings: { shellToolPartsExpanded: false }, + cpuRate: 4, + seedHistory: true, + }) + await waitForVisualSettle(page, [`[data-timeline-part-id="${shellID}"]`, `[data-timeline-part-id="${followingID}"]`]) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(shell(shellID, "running", lines(50))), 240) + await timeline.send(partUpdated(shell(shellID, "completed", lines(50))), 500) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "collapsed-shell", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["shell", "following"] }, + { type: "unique", regions: ["shell", "following"] }, + { type: "stable", regions: ["shell", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: ["following"], maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "flow", regions: ["shell", "following"] }, + ], + { perMarker: true }, + ), + ) +}) + +test("keeps rows stable when a running shell becomes an error", async ({ page }, testInfo) => { + const shellID = "prt_matrix_error_01_shell" + const followingID = "prt_matrix_error_02_following" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([shell(shellID, "running", lines(10)), textPart(followingID, "Following failed shell")], { + completed: false, + }), + ], + settings: { shellToolPartsExpanded: true }, + cpuRate: 4, + seedHistory: true, + }) + await waitForVisualSettle(page, [`[data-timeline-part-id="${shellID}"]`, `[data-timeline-part-id="${followingID}"]`]) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send( + partUpdated({ + ...shell(shellID, "error"), + state: { + status: "error", + input: { command: `echo ${shellID}` }, + error: "Command failed after output", + metadata: {}, + time: { start: 1700000001000, end: 1700000002000 }, + }, + }), + 500, + ) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "shell-error", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["shell", "following"] }, + { type: "unique", regions: ["shell", "following"] }, + { type: "stable", regions: ["shell", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: ["following"], maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["shell", "following"] }, + ], + { perMarker: true }, + ), + ) +}) + +test("keeps rows stable when later text arrives before shell output", async ({ page }, testInfo) => { + const shellID = "prt_late_text_01_shell" + const followingID = "prt_late_text_02_following" + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistantMessage([shell(shellID, "running")], { completed: false })], + settings: { shellToolPartsExpanded: true }, + cpuRate: 4, + seedHistory: true, + }) + await waitForVisualSettle(page, [`[data-timeline-part-id="${shellID}"]`]) + const regions = defineVisualRegions({ + shell: { selector: `[data-timeline-part-id="${shellID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { + selector: `[data-timeline-part-id="${followingID}"]`, + closest: '[data-timeline-row="AssistantPart"]', + }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(textPart(followingID, "Later assistant content arrived before shell output.")), 240) + await timeline.send(partUpdated(shell(shellID, "running", lines(20))), 300) + await timeline.send(partUpdated(shell(shellID, "completed", lines(20))), 600) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "late-text-before-shell-output", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["shell", "following"] }, + { type: "unique", regions: ["shell", "following"] }, + { type: "stable", regions: ["shell"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["shell", "following"] }, + ], + { perMarker: true }, + ), + ) +}) + +function lines(count: number) { + return Array.from({ length: count }, (_, index) => `line ${index + 1}`).join("\n") +} diff --git a/packages/app/e2e/performance/timeline-stability/tool-mutation.spec.ts b/packages/app/e2e/performance/timeline-stability/tool-mutation.spec.ts new file mode 100644 index 000000000000..03690ec92147 --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/tool-mutation.spec.ts @@ -0,0 +1,106 @@ +import { expect, test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantMessage, + partUpdated, + session, + sessionID, + setupTimeline, + textPart, + toolPart, + userMessage, +} from "./fixture" + +test("adds a task child-session link without replacing the task row", async ({ page }, testInfo) => { + const taskID = "prt_task_link" + const childID = "ses_task_child" + const input = { description: "Inspect child", subagent_type: "explore" } + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistantMessage([toolPart(taskID, "task", "running", input)], { completed: false })], + sessions: [session(), session({ id: childID, parentID: sessionID, title: "Inspect child" })], + cpuRate: 4, + }) + const regions = defineVisualRegions({ + task: { selector: `[data-timeline-part-id="${taskID}"] [data-slot="collapsible-trigger"]` }, + }) + await startVisualProbe(page, regions) + await timeline.send( + partUpdated(toolPart(taskID, "task", "completed", input, { metadata: { sessionId: childID } })), + 500, + ) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "task-link", + trace, + visualPlan(regions, [ + { type: "required", regions: ["task"] }, + { type: "unique", regions: ["task"] }, + { type: "stable", regions: ["task"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + ]), + ) + await expect( + page.locator(`a[href$="/session/${childID}"]`, { has: page.locator('[data-component="task-tool-card"]') }), + ).toBeVisible() +}) + +test("changes generic tool arguments without replacing the row", async ({ page }, testInfo) => { + const toolID = "prt_generic_mutation" + const followingID = "prt_generic_mutation_following" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage( + [ + toolPart(toolID, "mcp_probe", "running", { target: "one", count: 1 }), + textPart(followingID, "Following generic tool"), + ], + { completed: false }, + ), + ], + cpuRate: 4, + }) + const regions = defineVisualRegions({ + tool: { selector: `[data-timeline-part-id="${toolID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send( + partUpdated(toolPart(toolID, "mcp_probe", "running", { target: "two", count: 2, mode: "deep" })), + 200, + ) + await timeline.send( + partUpdated(toolPart(toolID, "mcp_probe", "completed", { target: "two", count: 2, mode: "deep" })), + 400, + ) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "generic-mutation", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["tool", "following"] }, + { type: "unique", regions: ["tool", "following"] }, + { type: "stable", regions: ["tool", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + { type: "flow", regions: ["tool", "following"] }, + ], + { perMarker: true }, + ), + ) +}) diff --git a/packages/app/e2e/performance/timeline-stability/tools.spec.ts b/packages/app/e2e/performance/timeline-stability/tools.spec.ts new file mode 100644 index 000000000000..d26968e1cbc5 --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/tools.spec.ts @@ -0,0 +1,194 @@ +import { expect, test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantMessage, + directory, + partUpdated, + session, + sessionID, + setupTimeline, + status, + textPart, + toolPart, + userMessage, +} from "./fixture" + +test.describe("timeline tool state stability", () => { + test("moves lightweight tools through pending, running, and completed without replacing rows", async ({ + page, + }, testInfo) => { + const ids = ["webfetch", "websearch", "task", "skill", "custom"] as const + const inputs = { + webfetch: { url: "https://example.com/docs" }, + websearch: { query: "timeline stability" }, + task: { description: "Inspect timeline", subagent_type: "explore" }, + skill: { name: "stability" }, + custom: { target: "timeline", depth: 2 }, + } + const names = { webfetch: "webfetch", websearch: "websearch", task: "task", skill: "skill", custom: "mcp_probe" } + const questionID = "prt_state_question" + const initial = [ + ...ids.map((id) => toolPart(`prt_state_${id}`, names[id], "pending", inputs[id])), + toolPart(questionID, "question", "pending", questionInput()), + textPart("prt_state_following", "Following lightweight tools"), + ] + const childID = "ses_timeline_child" + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistantMessage(initial, { completed: false })], + sessions: [session(), session({ id: childID, parentID: sessionID, title: "Inspect timeline" })], + cpuRate: 4, + }) + await timeline.send(status("busy"), 120) + for (const id of ids) await timeline.waitForPart(`prt_state_${id}`) + await expect(page.locator(`[data-timeline-part-id="${questionID}"]`)).toHaveCount(0) + + const regionIDs = [ + "prt_state_webfetch", + "prt_state_websearch", + "prt_state_task", + "prt_state_skill", + "prt_state_custom", + ] as const + const regions = defineVisualRegions({ + prt_state_webfetch: toolRegion(regionIDs[0]), + prt_state_websearch: toolRegion(regionIDs[1]), + prt_state_task: toolRegion(regionIDs[2]), + prt_state_skill: toolRegion(regionIDs[3]), + prt_state_custom: toolRegion(regionIDs[4]), + }) + await startVisualProbe(page, regions) + for (const [index, id] of ids.entries()) { + await timeline.send( + partUpdated(toolPart(`prt_state_${id}`, names[id], "running", inputs[id])), + [80, 240, 100, 360, 140][index], + ) + } + for (const [index, id] of ["skill", "webfetch", "custom", "task", "websearch"].entries()) { + const key = id as (typeof ids)[number] + const metadata = key === "task" ? { sessionId: childID } : key === "websearch" ? { provider: "exa" } : {} + const output = key === "websearch" ? "Result https://example.com/result" : "Completed" + await timeline.send( + partUpdated(toolPart(`prt_state_${key}`, names[key], "completed", inputs[key], { metadata, output })), + [110, 70, 280, 130, 420][index], + ) + } + await timeline.send( + partUpdated( + toolPart(questionID, "question", "completed", questionInput(), { metadata: { answers: [["Keep it stable"]] } }), + ), + 350, + ) + await timeline.waitForPart(questionID) + await timeline.send(status("idle"), 500) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "lightweight-tools", + trace, + visualPlan(regions, [ + { type: "required", regions: regionIDs }, + { type: "unique", regions: regionIDs }, + { type: "stable", regions: regionIDs }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxReversals: 4 }, + { type: "label-stability", regions: "all" }, + ]), + ) + await expect(page.locator(`[data-timeline-part-id="${questionID}"]`)).toContainText("Keep it stable") + await expect( + page.locator(`a[href$="/session/${childID}"]`, { has: page.locator('[data-component="task-tool-card"]') }), + ).toBeVisible() + await expect(page.getByRole("button", { name: /Exa Web Search/ })).toBeVisible() + }) + + test("keeps an expanded mixed context group stable through staggered completion and error", async ({ + page, + }, testInfo) => { + const ids = ["prt_ctx_01_read", "prt_ctx_02_glob", "prt_ctx_03_grep", "prt_ctx_04_list"] + const tools = ["read", "glob", "grep", "list"] + const inputs = [ + { filePath: "src/a.ts", offset: 0, limit: 120 }, + { path: directory, pattern: "**/*.ts" }, + { path: directory, pattern: "stability", include: "*.ts" }, + { path: "src" }, + ] + const context = ids.map((id, index) => toolPart(id, tools[index]!, "pending", inputs[index]!)) + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([...context, textPart("prt_ctx_following", "Following context")], { completed: false }), + ], + cpuRate: 4, + }) + await timeline.send(status("busy"), 100) + const groupSelector = `[data-timeline-part-ids="${ids.join(",")}"]` + const group = page.locator(groupSelector) + await expect(group).toBeVisible() + await group.locator('[data-slot="collapsible-trigger"]').click() + await expect(group.locator('[data-slot="collapsible-trigger"]')).toHaveAttribute("aria-expanded", "true") + + const regions = defineVisualRegions({ + status: { + selector: `${groupSelector} [data-component="tool-status-title"]`, + opacitySelectors: ['[data-slot="tool-status-active"]', '[data-slot="tool-status-done"]'], + }, + context: { selector: groupSelector, closest: '[data-timeline-row="AssistantPart"]' }, + following: { + selector: '[data-timeline-part-id="prt_ctx_following"]', + closest: '[data-timeline-row="AssistantPart"]', + }, + }) + await startVisualProbe(page, regions) + for (const [index, delay] of [90, 260, 70, 380].entries()) { + await timeline.send(partUpdated(toolPart(ids[index]!, tools[index]!, "running", inputs[index]!)), delay) + } + await timeline.send(partUpdated(toolPart(ids[1]!, tools[1]!, "completed", inputs[1]!)), 130) + await timeline.send(partUpdated(toolPart(ids[3]!, tools[3]!, "completed", inputs[3]!)), 210) + await timeline.send( + partUpdated(toolPart(ids[0]!, tools[0]!, "error", inputs[0]!, { error: "Read interrupted" })), + 110, + ) + await timeline.send(partUpdated(toolPart(ids[2]!, tools[2]!, "completed", inputs[2]!)), 250) + await expect(group.locator('[data-component="tool-status-title"]')).toHaveAttribute("aria-label", "Explored") + await timeline.send(status("idle"), 700) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "mixed-context", + trace, + visualPlan(regions, [ + { type: "required", regions: ["context", "following"] }, + { type: "unique", regions: ["context"] }, + { type: "stable", regions: ["context"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxReversals: 4 }, + { type: "label-stability", regions: "all" }, + { type: "flow", regions: ["context", "following"] }, + ]), + ) + await expect(group.locator('[data-component="tool-status-title"]')).toHaveAttribute("aria-label", "Explored") + await expect(group.locator('[data-slot="collapsible-trigger"]')).toHaveAttribute("aria-expanded", "true") + await group.locator('[data-slot="collapsible-trigger"]').click() + await expect(group.locator('[data-slot="collapsible-trigger"]')).toHaveAttribute("aria-expanded", "false") + await timeline.send(partUpdated(textPart("prt_ctx_late_sibling", "Later sibling content")), 200) + await expect(group.locator('[data-slot="collapsible-trigger"]')).toHaveAttribute("aria-expanded", "false") + await group.locator('[data-slot="collapsible-trigger"]').click() + await expect(group.locator('[data-slot="collapsible-trigger"]')).toHaveAttribute("aria-expanded", "true") + }) +}) + +function questionInput() { + return { questions: [{ header: "Stability", question: "Keep it stable?", options: [] }] } +} + +function toolRegion(id: string) { + return { selector: `[data-timeline-part-id="${id}"]`, closest: '[data-timeline-row="AssistantPart"]' } +} diff --git a/packages/app/e2e/performance/timeline-stability/transition-matrix.spec.ts b/packages/app/e2e/performance/timeline-stability/transition-matrix.spec.ts new file mode 100644 index 000000000000..e999e8c50a6f --- /dev/null +++ b/packages/app/e2e/performance/timeline-stability/transition-matrix.spec.ts @@ -0,0 +1,272 @@ +import { expect, test } from "@playwright/test" +import { + defineVisualRegions, + reportVisualStability, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../../utils/visual-stability" +import { + assistantID, + assistantMessage, + completedAssistantInfo, + event, + messageUpdated, + partDelta, + partUpdated, + setupTimeline, + shell, + status, + textPart, + toolPart, + userMessage, +} from "./fixture" + +test("keeps unchanged siblings stable while a middle part is inserted and removed", async ({ page }, testInfo) => { + const firstID = "prt_mutation_01_first" + const middleID = "prt_mutation_02_middle" + const lastID = "prt_mutation_03_last" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([textPart(firstID, "First stable row"), textPart(lastID, "Last stable row")], { + completed: false, + }), + ], + cpuRate: 4, + }) + const regions = defineVisualRegions({ + first: { selector: `[data-timeline-part-id="${firstID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + last: { selector: `[data-timeline-part-id="${lastID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send(partUpdated(textPart(middleID, "Inserted middle row. ".repeat(12))), 350) + await expect(page.locator(`[data-timeline-part-id="${middleID}"]`)).toBeVisible() + await timeline.send( + event("message.part.removed", { sessionID: "ses_timeline_stability", messageID: assistantID, partID: middleID }), + 500, + ) + await expect(page.locator(`[data-timeline-part-id="${middleID}"]`)).toHaveCount(0) + const trace = await stopVisualProbe(page) + await reportVisualStability(testInfo, "middle-insert-remove", trace, stablePairPlan(regions, 1)) +}) + +test("streams text through growth, canonical replacement, and completion", async ({ page }, testInfo) => { + const textID = "prt_text_reconcile" + const followingID = "prt_text_reconcile_following" + const assistant = assistantMessage([textPart(textID, "Starting"), textPart(followingID, "Following text row")], { + completed: false, + }) + const timeline = await setupTimeline(page, { messages: [userMessage(), assistant], cpuRate: 4 }) + const regions = defineVisualRegions({ + text: { selector: `[data-timeline-part-id="${textID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + following: { selector: `[data-timeline-part-id="${followingID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send(partDelta(textID, " streamed content"), 100) + await timeline.send(partDelta(textID, "\n\n- item one\n- item two\n- item three"), 180) + await timeline.send(partUpdated(textPart(textID, "Canonical replacement with a shorter final paragraph.")), 200) + await timeline.send(messageUpdated(completedAssistantInfo(assistant.info)), 500) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "text-reconcile", + trace, + visualPlan(regions, [ + { type: "required", regions: ["text", "following"] }, + { type: "unique", regions: ["text", "following"] }, + { type: "stable", regions: ["text", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 1, maxReversals: 2 }, + { type: "label-stability", regions: "all" }, + { type: "preserve-bottom-anchor" }, + { type: "flow", regions: ["text", "following"] }, + ]), + ) +}) + +test("inserts a completed question between stable rows", async ({ page }, testInfo) => { + const firstID = "prt_question_01_first" + const questionID = "prt_question_02_hidden" + const lastID = "prt_question_03_last" + const input = { questions: [{ header: "Choice", question: "Keep stable?", options: [] }] } + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage( + [ + textPart(firstID, "Before question"), + toolPart(questionID, "question", "running", input), + textPart(lastID, "After question"), + ], + { completed: false }, + ), + ], + cpuRate: 4, + }) + await expect(page.locator(`[data-timeline-part-id="${questionID}"]`)).toHaveCount(0) + const regions = defineVisualRegions({ + first: { selector: `[data-timeline-part-id="${firstID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + last: { selector: `[data-timeline-part-id="${lastID}"]`, closest: '[data-timeline-row="AssistantPart"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send( + partUpdated(toolPart(questionID, "question", "completed", input, { metadata: { answers: [["Yes"]] } })), + 600, + ) + await expect(page.locator(`[data-timeline-part-id="${questionID}"]`)).toBeVisible() + const trace = await stopVisualProbe(page) + await reportVisualStability(testInfo, "question-insert", trace, stablePairPlan(regions, 0)) +}) + +test("replaces thinking with an assistant error without a blank turn", async ({ page }, testInfo) => { + const assistant = assistantMessage([], { completed: false }) + const timeline = await setupTimeline(page, { messages: [userMessage(), assistant], cpuRate: 4 }) + await timeline.send(status("busy"), 150) + await expect(page.locator('[data-timeline-row="Thinking"]')).toBeVisible() + const regions = defineVisualRegions({ + thinking: { selector: '[data-timeline-row="Thinking"]' }, + error: { selector: '[data-timeline-row="Error"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send( + messageUpdated({ + ...assistant.info, + error: { name: "APIError", data: { message: "Provider failed visibly", isRetryable: false } }, + }), + 500, + ) + await expect(page.locator('[data-timeline-row="Thinking"]')).toHaveCount(0) + await expect(page.locator('[data-timeline-row="Error"]')).toContainText("Provider failed visibly") + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "thinking-error", + trace, + visualPlan(regions, [ + { type: "required", regions: ["thinking", "error"] }, + { type: "continuous-any", regions: ["thinking", "error"] }, + { type: "unique", regions: ["thinking", "error"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all" }, + { type: "label-stability", regions: "all" }, + ]), + ) +}) + +test("updates retry attempts and long provider messages without remounting the retry row", async ({ + page, +}, testInfo) => { + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistantMessage([], { completed: false })], + cpuRate: 4, + }) + await timeline.send(status("retry", 1), 120) + await expect(page.locator('[data-timeline-row="Retry"]')).toBeVisible() + const regions = defineVisualRegions({ + retry: { selector: '[data-timeline-row="Retry"]' }, + }) + await startVisualProbe(page, regions) + await timeline.send( + event("session.status", { + sessionID: "ses_timeline_stability", + status: { + type: "retry", + attempt: 2, + message: "A very long provider retry message ".repeat(8), + next: Date.now() + 10_000, + }, + }), + 300, + ) + await timeline.send(status("retry", 3), 300) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "retry-evolution", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["retry"] }, + { type: "unique", regions: ["retry"] }, + { type: "stable", regions: ["retry"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + ], + { perMarker: true }, + ), + ) +}) + +test("reducer-hardening: removes a historical turn one message at a time without moving a visible lower anchor twice", async ({ + page, +}, testInfo) => { + const removeUserID = "msg_0500_remove_user" + const removeAssistantID = "msg_0501_remove_assistant" + const anchorUserID = "msg_2000_anchor_user" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(undefined, { id: removeUserID, created: 1690000000000 }), + assistantMessage([textPart("prt_remove_text", "Removed historical content. ".repeat(15))], { + id: removeAssistantID, + parentID: removeUserID, + created: 1690000001000, + }), + userMessage(undefined, { id: anchorUserID, created: 1700000000000 }), + assistantMessage([textPart("prt_anchor_text", "Visible anchor response")], { + id: "msg_2001_anchor_assistant", + parentID: anchorUserID, + created: 1700000001000, + }), + ], + cpuRate: 4, + }) + const regions = defineVisualRegions({ + anchor: { selector: `[data-timeline-row="UserMessage"][data-message-id="${anchorUserID}"]` }, + }) + await startVisualProbe(page, regions) + await timeline.send( + event("message.removed", { sessionID: "ses_timeline_stability", messageID: removeAssistantID }), + 200, + ) + await timeline.send(event("message.removed", { sessionID: "ses_timeline_stability", messageID: removeUserID }), 500) + const trace = await stopVisualProbe(page) + await reportVisualStability( + testInfo, + "historical-turn-remove", + trace, + visualPlan( + regions, + [ + { type: "required", regions: ["anchor"] }, + { type: "unique", regions: ["anchor"] }, + { type: "stable", regions: ["anchor"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals: 0 }, + { type: "label-stability", regions: "all" }, + ], + { perMarker: true }, + ), + ) +}) + +function stablePairPlan( + regions: Record<"first" | "last", { selector: string; closest?: string }>, + maxPositionReversals: number, +) { + return visualPlan(regions, [ + { type: "required", regions: ["first", "last"] }, + { type: "unique", regions: ["first", "last"] }, + { type: "stable", regions: ["first", "last"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all", maxPositionReversals }, + { type: "label-stability", regions: "all" }, + ]) +} diff --git a/packages/app/e2e/performance/timeline/review-pane-scaling-benchmark.spec.ts b/packages/app/e2e/performance/timeline/review-pane-scaling-benchmark.spec.ts new file mode 100644 index 000000000000..81de0a055f90 --- /dev/null +++ b/packages/app/e2e/performance/timeline/review-pane-scaling-benchmark.spec.ts @@ -0,0 +1,312 @@ +import type { Page } from "@playwright/test" +import { benchmark, expect } from "../benchmark" +import { setupTimelineBenchmark } from "./session-timeline-benchmark.fixture" + +const changedLinesPerFile = 100 +const linesPerSide = changedLinesPerFile / 2 +const fileCounts = [1, 10, 100, 1_000, 10_000] +const filesPerDirectory = 100 +const readyFrames = 3 +const completionTimeoutMs = Number(process.env.REVIEW_PANE_COMPLETION_TIMEOUT_MS ?? 900_000) + +type ReviewPaneScalingSample = { + observedAtMs: number + logicalRows: number + treeRows: number + fileRows: number + diffLines: number + header: string + ready: boolean +} + +type ReviewPaneScalingProbe = { + startedAt?: number + firstTreeRowMs?: number + logicalTreeReadyMs?: number + firstDiffRenderMs?: number + stableReadyMs?: number + samples: ReviewPaneScalingSample[] + frameTimesMs: number[] + longTasks: { startTime: number; duration: number }[] + stop: () => void +} + +benchmark.describe("performance: review pane scaling", () => { + for (const fileCount of fileCounts) { + const changedLines = fileCount * changedLinesPerFile + + benchmark( + `${changedLines} changed lines across ${fileCount} ${fileCount === 1 ? "file" : "files"}`, + async ({ page, report }) => { + benchmark.setTimeout(1_200_000) + await page.emulateMedia({ reducedMotion: "reduce" }) + + const patchByteLimit = Number(process.env.REVIEW_PANE_PATCH_BYTE_LIMIT ?? Number.POSITIVE_INFINITY) + if (Number.isNaN(patchByteLimit) || patchByteLimit < 0) + throw new Error(`Invalid REVIEW_PANE_PATCH_BYTE_LIMIT: ${process.env.REVIEW_PANE_PATCH_BYTE_LIMIT}`) + const responseBody = JSON.stringify(createScalingDiffs(fileCount, patchByteLimit)) + await setupTimelineBenchmark(page, { + historyTurns: 0, + eventBatch: 1, + newLayoutDesigns: true, + }) + await page.route("**/vcs/diff**", (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + headers: { "access-control-allow-origin": "*" }, + body: responseBody, + }), + ) + + const expectedRows = fileCount + 2 + Math.ceil(fileCount / filesPerDirectory) + const metrics = await measureReviewPaneLoad(page, { + expectedFile: reviewFile(0), + expectedRows, + }) + const search = await measureBroadReviewSearch(page, fileCount) + + expect(metrics.logicalRows).toBe(expectedRows) + expect(metrics.fileRows).toBeGreaterThan(0) + expect(metrics.treeRows).toBeGreaterThan(0) + expect(metrics.diffLines).toBeGreaterThan(0) + expect(search.logicalRows).toBe(fileCount) + expect(search.renderedRows).toBeGreaterThan(0) + report( + { ...metrics, search }, + { + fileCount, + changedLinesPerFile, + changedLines, + additions: changedLines / 2, + deletions: changedLines / 2, + patchLines: changedLines, + patchByteLimit: Number.isFinite(patchByteLimit) ? patchByteLimit : null, + payloadBytes: new TextEncoder().encode(responseBody).byteLength, + expectedRows, + }, + ) + }, + ) + } +}) + +async function measureBroadReviewSearch(page: Page, expectedRows: number) { + const filter = page.getByRole("searchbox", { name: "Filter files" }) + await filter.evaluate((element) => { + element.addEventListener( + "input", + () => { + ;(window as Window & { __reviewSearchStartedAt?: number }).__reviewSearchStartedAt = performance.now() + }, + { once: true, capture: true }, + ) + }) + await filter.fill("file-") + + return page.evaluate((expectedRows) => { + const startedAt = (window as Window & { __reviewSearchStartedAt?: number }).__reviewSearchStartedAt! + return new Promise<{ stableMs: number; logicalRows: number; renderedRows: number }>((resolve) => { + let previous = -1 + let streak = 0 + const sample = () => { + const tree = document.querySelector('#review-panel [data-component="file-tree-v2"]') + const rows = [...document.querySelectorAll('#review-panel [data-slot="file-tree-v2-row"]')] + const logicalRows = Number(tree?.dataset.totalRows ?? rows.length) + const ready = + logicalRows === expectedRows && rows.length > 0 && rows.every((row) => row.textContent?.includes("file-")) + streak = ready && rows.length === previous ? streak + 1 : ready ? 1 : 0 + previous = rows.length + if (streak >= 3) { + resolve({ stableMs: performance.now() - startedAt, logicalRows, renderedRows: rows.length }) + return + } + requestAnimationFrame(sample) + } + requestAnimationFrame(sample) + }) + }, expectedRows) +} + +function createScalingDiffs(fileCount: number, patchByteLimit: number) { + const changes = Array.from({ length: linesPerSide }, (_, index) => { + const line = String(index).padStart(3, "0") + return `-export const value_${line} = "before"\n+export const value_${line} = "after"` + }).join("\n") + let patchBytes = 0 + let capped = false + + return Array.from({ length: fileCount }, (_, index) => { + const file = reviewFile(index) + const fullPatch = [ + `diff --git a/${file} b/${file}`, + `--- a/${file}`, + `+++ b/${file}`, + `@@ -1,${linesPerSide} +1,${linesPerSide} @@`, + changes, + ].join("\n") + if (index === 0 && fullPatch.length > patchByteLimit) + throw new Error(`REVIEW_PANE_PATCH_BYTE_LIMIT must include the active patch (${fullPatch.length} bytes)`) + const patch = !capped && patchBytes + fullPatch.length <= patchByteLimit ? fullPatch : emptyReviewPatch(file) + if (patch === fullPatch) patchBytes += fullPatch.length + else capped = true + return { + file, + patch, + additions: linesPerSide, + deletions: linesPerSide, + status: "modified" as const, + } + }) +} + +function emptyReviewPatch(file: string) { + return [`diff --git a/${file} b/${file}`, `--- a/${file}`, `+++ b/${file}`].join("\n") +} + +function reviewFile(index: number) { + return `src/review/d${String(Math.floor(index / filesPerDirectory)).padStart(5, "0")}/file-${String(index).padStart(5, "0")}.ts` +} + +async function measureReviewPaneLoad(page: Page, input: { expectedFile: string; expectedRows: number }) { + const toggle = page.getByRole("button", { name: "Toggle review" }) + await expect(toggle).toBeVisible() + await toggle.evaluate((element) => element.setAttribute("data-review-pane-scaling-toggle", "")) + await installReviewPaneScalingProbe(page, input) + await toggle.click() + await page.waitForFunction( + () => + (window as Window & { __reviewPaneScalingProbe?: ReviewPaneScalingProbe }).__reviewPaneScalingProbe + ?.stableReadyMs !== undefined, + undefined, + { timeout: completionTimeoutMs }, + ) + + return page.evaluate(() => { + const probe = (window as Window & { __reviewPaneScalingProbe?: ReviewPaneScalingProbe }).__reviewPaneScalingProbe! + probe.stop() + const startedAt = probe.startedAt! + const final = probe.samples.at(-1)! + const resources = performance + .getEntriesByType("resource") + .filter((entry) => entry.name.includes("/vcs/diff")) as PerformanceResourceTiming[] + const resource = resources.at(-1) + const longTasks = probe.longTasks.filter( + (entry) => entry.startTime >= startedAt && entry.startTime <= startedAt + probe.stableReadyMs!, + ) + const frameGaps = probe.frameTimesMs.map((time, index) => time - (probe.frameTimesMs[index - 1] ?? 0)) + + return { + firstTreeRowMs: probe.firstTreeRowMs ?? null, + logicalTreeReadyMs: probe.logicalTreeReadyMs ?? null, + firstDiffRenderMs: probe.firstDiffRenderMs ?? null, + stableReadyMs: probe.stableReadyMs ?? null, + responseStartMs: resource ? resource.responseStart - startedAt : null, + responseEndMs: resource ? resource.responseEnd - startedAt : null, + responseToStableMs: resource ? probe.stableReadyMs! - (resource.responseEnd - startedAt) : null, + treeRows: final.treeRows, + logicalRows: final.logicalRows, + fileRows: final.fileRows, + diffLines: final.diffLines, + samples: probe.samples.length, + maxFrameGapMs: Math.max(0, ...frameGaps), + longTaskCount: longTasks.length, + longTaskTotalMs: longTasks.reduce((sum, entry) => sum + entry.duration, 0), + maxLongTaskMs: Math.max(0, ...longTasks.map((entry) => entry.duration)), + } + }) +} + +async function installReviewPaneScalingProbe(page: Page, input: { expectedFile: string; expectedRows: number }) { + await page.evaluate( + ({ expectedFile, expectedRows, stableFrames }) => { + let running = true + let readyStreak = 0 + const basename = expectedFile.split("/").at(-1)! + const longTaskObserver = PerformanceObserver.supportedEntryTypes.includes("longtask") + ? new PerformanceObserver((list) => { + probe.longTasks.push( + ...list.getEntries().map((entry) => ({ startTime: entry.startTime, duration: entry.duration })), + ) + }) + : undefined + const probe: ReviewPaneScalingProbe = { + samples: [], + frameTimesMs: [], + longTasks: [], + stop: () => { + running = false + longTaskObserver?.disconnect() + }, + } + + const sample = (time: number) => { + if (!running || probe.startedAt === undefined) return + const panel = document.querySelector("#review-panel") + const tree = panel?.querySelector('[data-component="file-tree-v2"]') + const rows = panel?.querySelectorAll('[data-slot="file-tree-v2-row"]') ?? [] + const fileRows = panel?.querySelectorAll('button[data-slot="file-tree-v2-row"]') ?? [] + const header = + panel?.querySelector('[data-slot="session-review-v2-file-header"]')?.textContent?.trim() ?? "" + const viewers = panel + ? [...panel.querySelectorAll('[data-component="file"][data-mode="diff"]')] + : [] + const diffLines = viewers.reduce( + (sum, viewer) => + sum + (viewer.querySelector("diffs-container")?.shadowRoot?.querySelectorAll("[data-line]").length ?? 0), + 0, + ) + const observedAtMs = time - probe.startedAt + const logicalRows = Number(tree?.dataset.totalRows ?? rows.length) + const ready = + logicalRows === expectedRows && + fileRows.length > 0 && + header.includes(basename) && + viewers.length === 1 && + diffLines > 0 + const previous = probe.samples.at(-1) + const stable = + ready && + previous?.ready === true && + previous.logicalRows === logicalRows && + previous.treeRows === rows.length && + previous.fileRows === fileRows.length && + previous.diffLines === diffLines && + previous.header === header + + probe.frameTimesMs.push(observedAtMs) + probe.samples.push({ + observedAtMs, + logicalRows, + treeRows: rows.length, + fileRows: fileRows.length, + diffLines, + header, + ready, + }) + if (probe.firstTreeRowMs === undefined && rows.length > 0) probe.firstTreeRowMs = observedAtMs + if (probe.logicalTreeReadyMs === undefined && logicalRows === expectedRows) + probe.logicalTreeReadyMs = observedAtMs + if (probe.firstDiffRenderMs === undefined && diffLines > 0) probe.firstDiffRenderMs = observedAtMs + readyStreak = !ready ? 0 : stable ? readyStreak + 1 : 1 + if (readyStreak === stableFrames) probe.stableReadyMs = observedAtMs + if (probe.stableReadyMs === undefined) requestAnimationFrame(sample) + } + + longTaskObserver?.observe({ type: "longtask", buffered: true }) + document.addEventListener( + "click", + (event) => { + const toggle = event.target instanceof Element ? event.target.closest("button") : undefined + if (!toggle?.hasAttribute("data-review-pane-scaling-toggle")) return + probe.startedAt = performance.now() + performance.mark("opencode.review-pane-scaling.click") + requestAnimationFrame(sample) + }, + { capture: true, once: true }, + ) + ;(window as Window & { __reviewPaneScalingProbe?: ReviewPaneScalingProbe }).__reviewPaneScalingProbe = probe + }, + { ...input, stableFrames: readyFrames }, + ) +} diff --git a/packages/app/e2e/performance/timeline/session-parent-hydration-benchmark.spec.ts b/packages/app/e2e/performance/timeline/session-parent-hydration-benchmark.spec.ts new file mode 100644 index 000000000000..2a214831daa8 --- /dev/null +++ b/packages/app/e2e/performance/timeline/session-parent-hydration-benchmark.spec.ts @@ -0,0 +1,151 @@ +import type { Page } from "@playwright/test" +import { expectSessionTitle } from "../../utils/waits" +import { mockOpenCodeServer } from "../../utils/mock-server" +import { benchmark, expect, withBenchmarkPage } from "../benchmark" +import { fixture } from "./session-timeline-stress.fixture" +import { installStressSessionTabs, stressSessionHref } from "./timeline-test-helpers" +import { measureSessionSwitch, waitForStableTimeline } from "./session-tab-switch-probe" + +type ParentHydrationBenchmarkMode = "natural" | "candidate" + +const mode = process.env.SESSION_PARENT_HYDRATION_BENCHMARK_MODE ?? "natural" +if (mode !== "natural" && mode !== "candidate") throw new Error(`Unknown parent hydration benchmark mode: ${mode}`) +const userID = "msg_parent_hydration_user" +const user = { + ...fixture.messages[fixture.targetID][0]!, + info: { ...fixture.messages[fixture.targetID][0]!.info, id: userID, time: { created: 1700001000000 } }, + parts: fixture.messages[fixture.targetID][0]!.parts.map((part, index) => ({ + ...part, + id: `prt_parent_hydration_user_${index}`, + messageID: userID, + })), +} +const assistantSeed = fixture.messages[fixture.targetID][3]! +const assistants = Array.from({ length: 14 }, (_, index) => { + const messageID = `msg_parent_hydration_${String(index).padStart(2, "0")}` + return { + ...assistantSeed, + info: { + ...assistantSeed.info, + id: messageID, + parentID: userID, + time: { created: 1700001001000 + index * 1_000, completed: 1700001001500 + index * 1_000 }, + }, + parts: assistantSeed.parts.map((part, partIndex) => ({ + ...part, + id: `prt_parent_hydration_${String(index).padStart(2, "0")}_${partIndex}`, + messageID, + })), + } +}) +const messages = [user, ...assistants] +const target = fixture.sessions.find((session) => session.id === fixture.targetID)! +const lastID = userID +const lastPartID = assistants.at(-1)!.parts.at(-1)!.id + +benchmark("hydrates an orphaned latest turn after a cold session click", async ({ browser, report }, testInfo) => { + benchmark.setTimeout(180_000) + const results = [] as Awaited>[] + for (let run = 0; run < 5; run++) { + results.push( + await withBenchmarkPage( + browser, + `session-parent-hydration-${mode}-${run}`, + (page) => trial(page, mode), + testInfo, + ), + ) + } + const timing = results.map((result) => result.metrics.firstCorrectObservedMs!).sort((a, b) => a - b) + report( + { + results: results.map((result) => ({ ...result.metrics, historyGateCount: result.historyGateCount })), + summary: { + firstCorrectObservedMs: { min: timing[0], median: timing[2], max: timing.at(-1) }, + blankSamples: results.map((result) => result.metrics.blankSamples), + requestCounts: { + list: results.map((result) => result.requestCounts.list), + parent: results.map((result) => result.requestCounts.parent), + }, + historyGateCount: results.map((result) => result.historyGateCount), + }, + }, + { mode }, + ) +}) + +async function trial(page: Page, mode: ParentHydrationBenchmarkMode) { + const requests: { type: "list" | "parent"; before?: string }[] = [] + const history = mode === "candidate" ? Promise.withResolvers() : undefined + let historyGates = 0 + await mockOpenCodeServer(page, { + sessions: fixture.sessions.filter((session) => session.id === fixture.sourceID), + provider: fixture.provider, + directory: fixture.directory, + project: fixture.project, + messageDelay: 50, + onMessages: (request) => { + if (request.sessionID === fixture.targetID && request.phase === "start") + requests.push({ type: "list", before: request.before }) + }, + beforeMessagesResponse: (request) => { + if (mode !== "candidate" || request.sessionID !== fixture.targetID || !request.before) return Promise.resolve() + historyGates++ + return history!.promise + }, + onMessage: (request) => { + if (request.sessionID === fixture.targetID && request.messageID === userID) requests.push({ type: "parent" }) + }, + message: (sessionID, messageID) => { + if (sessionID !== fixture.targetID || messageID !== userID) return + return user + }, + pageMessages: (sessionID, limit, before) => { + const items = sessionID === fixture.targetID ? messages : fixture.messages[fixture.sourceID] + const end = before ? items.findIndex((message) => message.info.id === before) : items.length + const start = Math.max(0, end - limit) + return { items: items.slice(start, end), cursor: start > 0 ? items[start]!.info.id : undefined } + }, + }) + await page.route(`**/session/${fixture.targetID}`, (route) => + route.fulfill({ status: 200, contentType: "application/json", body: JSON.stringify(target) }), + ) + await installStressSessionTabs(page, { sessionIDs: [fixture.sourceID] }) + await page.goto(stressSessionHref(fixture.sourceID)) + await expectSessionTitle(page, fixture.expected.sourceTitle) + await waitForStableTimeline(page, fixture.expected.sourceMessageIDs.at(-1)!) + + const href = stressSessionHref(fixture.targetID) + await page.evaluate( + ({ href, title }) => { + const link = document.createElement("a") + link.id = "parent-hydration-target" + link.href = href + link.textContent = title + document.body.append(link) + }, + { href, title: target.title }, + ) + const metrics = await measureSessionSwitch(page, { + destinationIDs: messages.map((message) => message.info.id), + sourceIDs: fixture.messages[fixture.sourceID].map((message) => message.info.id), + lastID, + requiredPartID: lastPartID, + requireBottomAnchor: false, + href, + switch: async () => { + await page.locator("#parent-hydration-target").click() + await expectSessionTitle(page, target.title) + }, + }).finally(() => history?.resolve()) + expect(metrics.firstCorrectObservedMs).not.toBeNull() + const requestCounts = { + list: requests.filter((request) => request.type === "list").length, + parent: requests.filter((request) => request.type === "parent").length, + } + if (mode === "candidate") { + expect(requestCounts.parent).toBe(1) + expect(historyGates).toBe(1) + } + return { metrics, requestCounts, historyGateCount: historyGates } +} diff --git a/packages/app/e2e/performance/timeline/session-tab-switch-benchmark.spec.ts b/packages/app/e2e/performance/timeline/session-tab-switch-benchmark.spec.ts index 2e80d703813e..48d4d3deb0d0 100644 --- a/packages/app/e2e/performance/timeline/session-tab-switch-benchmark.spec.ts +++ b/packages/app/e2e/performance/timeline/session-tab-switch-benchmark.spec.ts @@ -2,7 +2,13 @@ import type { Page } from "@playwright/test" import { expectSessionTitle } from "../../utils/waits" import { benchmark, expect, withBenchmarkPage } from "../benchmark" import { fixture } from "./session-timeline-stress.fixture" -import { installStressSessionTabs, mockStressTimeline, stressSessionHref } from "./timeline-test-helpers" +import { + createReviewDiffs, + installStressSessionTabs, + installTimelineSettings, + mockStressTimeline, + stressSessionHref, +} from "./timeline-test-helpers" import { measureSessionSwitch, waitForStableTimeline } from "./session-tab-switch-probe" type Result = Awaited> @@ -20,8 +26,41 @@ benchmark("benchmarks cold and hot session tab switching", async ({ browser, rep report({ results, summary: summarize(results) }) }) -async function trial(page: Page, mode: "cold" | "hot") { - await mockStressTimeline(page) +benchmark( + "benchmarks v2 session tab switching with and without the review pane", + async ({ browser, report }, testInfo) => { + benchmark.setTimeout(360_000) + const runs = Number(process.env.SESSION_TAB_SWITCH_RUNS ?? 5) + const results = { + closed: { cold: [] as Result[], hot: [] as Result[] }, + open: { cold: [] as Result[], hot: [] as Result[] }, + } + for (const reviewPane of ["closed", "open"] as const) { + for (const mode of ["cold", "hot"] as const) { + for (let run = 0; run < runs; run++) { + results[reviewPane][mode].push( + await withBenchmarkPage( + browser, + `session-tab-switch-v2-${reviewPane}-${mode}-${run}`, + (page) => trial(page, mode, { newLayoutDesigns: true, reviewPane }), + testInfo, + ), + ) + } + } + } + report({ results, summary: summarizeReviewPane(results) }, { runs, reviewDiffs: createReviewDiffs().length }) + }, +) + +async function trial( + page: Page, + mode: "cold" | "hot", + options?: { newLayoutDesigns?: boolean; reviewPane?: "closed" | "open" }, +) { + const reviewDiffs = options?.newLayoutDesigns ? createReviewDiffs() : undefined + await mockStressTimeline(page, { vcsDiff: reviewDiffs }) + if (options?.newLayoutDesigns) await installTimelineSettings(page) await installStressSessionTabs(page) if (mode === "hot") { await page.goto(stressSessionHref(fixture.targetID)) @@ -33,6 +72,10 @@ async function trial(page: Page, mode: "cold" | "hot") { await expectSessionTitle(page, fixture.expected.sourceTitle) } await waitForStableTimeline(page, fixture.expected.sourceMessageIDs.at(-1)!) + if (options?.reviewPane === "open") { + await openReviewPane(page) + await waitForStableTimeline(page, fixture.expected.sourceMessageIDs.at(-1)!) + } const destinationIDs = fixture.messages[fixture.targetID].map((message) => message.info.id) const sourceIDs = fixture.messages[fixture.sourceID].map((message) => message.info.id) @@ -70,6 +113,15 @@ function summarize(results: Record<"cold" | "hot", Result[]>) { ) } +function summarizeReviewPane(results: Record<"closed" | "open", Record<"cold" | "hot", Result[]>>) { + return Object.fromEntries( + Object.entries(results).map(([reviewPane, values]) => [ + reviewPane, + summarize(values as Record<"cold" | "hot", Result[]>), + ]), + ) +} + async function switchSession(page: Page, sessionID: string, title: string) { const href = stressSessionHref(sessionID) const tab = page.locator(`[data-slot="titlebar-tabs"] a[href="${href}"]`).first() @@ -77,3 +129,16 @@ async function switchSession(page: Page, sessionID: string, title: string) { await tab.click() await expectSessionTitle(page, title) } + +async function openReviewPane(page: Page) { + await page.getByRole("button", { name: "Toggle review" }).click() + const panel = page.locator("#review-panel") + await expect(panel).toBeVisible() + // Text-based readiness works across review implementations; the legacy list mounts + // diff viewers lazily while V2 mounts the active preview eagerly. + await page.waitForFunction(() => { + const panel = document.querySelector("#review-panel") + const text = panel?.textContent ?? "" + return text.includes("generated-000.ts") && text.includes("+3") + }) +} diff --git a/packages/app/e2e/performance/timeline/session-tab-switch-metrics.ts b/packages/app/e2e/performance/timeline/session-tab-switch-metrics.ts index e315c2ad43b9..5298b9b0b7df 100644 --- a/packages/app/e2e/performance/timeline/session-tab-switch-metrics.ts +++ b/packages/app/e2e/performance/timeline/session-tab-switch-metrics.ts @@ -4,7 +4,15 @@ export type SessionSwitchSample = { source: string[] hasVisibleRows: boolean last: boolean + requiredPartVisible?: boolean + bottomAnchorRequired?: boolean bottomErrorPx?: number + review?: { + fileHost: boolean + fileHostReplaced: boolean + header: string + replacedLevels: string[] + } } export function classifySessionSwitch(samples: SessionSwitchSample[]) { @@ -23,6 +31,10 @@ export function classifySessionSwitch(samples: SessionSwitchSample[]) { (sample) => sample.hasVisibleRows && sample.destination.length === 0 && sample.source.length === 0, ).length, sourceSamples: samples.filter((sample) => sample.source.length > 0).length, + reviewFileHostMissingSamples: samples.filter((sample) => sample.review && !sample.review.fileHost).length, + reviewFileHostReplacedSamples: samples.filter((sample) => sample.review?.fileHostReplaced).length, + reviewHeaders: [...new Set(samples.flatMap((sample) => (sample.review ? [sample.review.header] : [])))], + reviewReplacedLevels: [...new Set(samples.flatMap((sample) => sample.review?.replacedLevels ?? []))], } } @@ -31,7 +43,8 @@ export function isCorrectDestination(sample: SessionSwitchSample) { sample.destination.length > 0 && sample.source.length === 0 && sample.last && - Math.abs(sample.bottomErrorPx ?? Infinity) <= 1 + sample.requiredPartVisible !== false && + (sample.bottomAnchorRequired === false || Math.abs(sample.bottomErrorPx ?? Infinity) <= 1) ) } diff --git a/packages/app/e2e/performance/timeline/session-tab-switch-probe.ts b/packages/app/e2e/performance/timeline/session-tab-switch-probe.ts index 14f9d2d003e4..955da80367d7 100644 --- a/packages/app/e2e/performance/timeline/session-tab-switch-probe.ts +++ b/packages/app/e2e/performance/timeline/session-tab-switch-probe.ts @@ -8,19 +8,56 @@ type SessionSwitchProbe = { async function installSessionSwitchProbe( page: Page, - input: { destinationIDs: string[]; sourceIDs: string[]; lastID: string; href: string }, + input: { + destinationIDs: string[] + sourceIDs: string[] + lastID: string + requiredPartID?: string + requireBottomAnchor?: boolean + href: string + }, ) { - await page.evaluate(({ destinationIDs, sourceIDs, lastID, href }) => { + await page.evaluate(({ destinationIDs, sourceIDs, lastID, requiredPartID, requireBottomAnchor, href }) => { const destination = new Set(destinationIDs) const source = new Set(sourceIDs) const samples: SessionSwitchSample[] = [] let started: number | undefined let running = true + const reviewLevels: Record = { + panel: "#review-panel", + tabs: '#review-panel [data-component="tabs"]', + body: '#review-panel [data-slot="session-review-v2-body"]', + review: '#review-panel [data-component="session-review-v2"]', + preview: '#review-panel [data-slot="session-review-v2-preview"]', + scroll: '#review-panel [data-slot="session-review-v2-diff-scroll"]', + file: '#review-panel [data-component="file"][data-mode="diff"]', + } + const initialReviewNodes: Record = {} const sample = () => { if (!running || started === undefined) return setTimeout(() => { if (!running || started === undefined) return const observedAtMs = performance.now() - started + const reviewPanel = document.querySelector("#review-panel") + const reviewFile = reviewPanel?.querySelector('[data-component="file"][data-mode="diff"]') + const initialReviewFile = initialReviewNodes.file + const replacedLevels = Object.entries(reviewLevels).flatMap(([name, selector]) => { + const initial = initialReviewNodes[name] + if (!initial) return [] + const current = document.querySelector(selector) + return current && current !== initial ? [name] : [] + }) + const review = reviewPanel + ? { + fileHost: !!reviewFile, + fileHostReplaced: !!initialReviewFile && !!reviewFile && reviewFile !== initialReviewFile, + header: + reviewPanel + .querySelector('[data-slot="session-review-v2-file-header"]') + ?.textContent?.trim() ?? "", + replacedLevels, + } + : undefined const root = [...document.querySelectorAll(".scroll-view__viewport")].find((element) => element.querySelector("[data-timeline-row]"), ) @@ -36,6 +73,13 @@ async function installSessionSwitchProbe( const rect = element.getBoundingClientRect() return rect.bottom > view.top && rect.top < view.bottom }) + const requiredPartVisible = requiredPartID + ? [...root.querySelectorAll("[data-timeline-part-id]")].some((element) => { + if (element.dataset.timelinePartId !== requiredPartID) return false + const rect = element.getBoundingClientRect() + return rect.width > 0 && rect.height > 0 && rect.bottom > view.top && rect.top < view.bottom + }) + : undefined const spacer = root.querySelector('[data-timeline-row="bottom-spacer"]')?.getBoundingClientRect() samples.push({ observedAtMs, @@ -43,10 +87,22 @@ async function installSessionSwitchProbe( source: visible.filter((id) => source.has(id)), hasVisibleRows, last: visible.includes(lastID), + requiredPartVisible, + bottomAnchorRequired: requireBottomAnchor !== false, bottomErrorPx: spacer ? spacer.bottom - view.bottom : undefined, + review, }) } else { - samples.push({ observedAtMs, destination: [], source: [], hasVisibleRows: false, last: false }) + samples.push({ + observedAtMs, + destination: [], + source: [], + hasVisibleRows: false, + last: false, + requiredPartVisible: requiredPartID ? false : undefined, + bottomAnchorRequired: requireBottomAnchor !== false, + review, + }) } requestAnimationFrame(sample) }, 0) @@ -57,6 +113,9 @@ async function installSessionSwitchProbe( const link = event.target instanceof Element ? event.target.closest("a") : undefined if (link?.getAttribute("href") !== href) return started = performance.now() + for (const [name, selector] of Object.entries(reviewLevels)) { + initialReviewNodes[name] = document.querySelector(selector) + } requestAnimationFrame(sample) }, { capture: true, once: true }, @@ -83,7 +142,8 @@ async function waitForStableSessionSwitch(page: Page) { sample.destination.length > 0 && sample.source.length === 0 && sample.last && - Math.abs(sample.bottomErrorPx ?? Infinity) <= 1, + sample.requiredPartVisible !== false && + (sample.bottomAnchorRequired === false || Math.abs(sample.bottomErrorPx ?? Infinity) <= 1), ) ) }) @@ -101,13 +161,27 @@ async function collectSessionSwitchResult(page: Page) { export async function measureSessionSwitch( page: Page, - input: { destinationIDs: string[]; sourceIDs: string[]; lastID: string; href: string; switch: () => Promise }, + input: { + destinationIDs: string[] + sourceIDs: string[] + lastID: string + requiredPartID?: string + requireBottomAnchor?: boolean + href: string + switch: () => Promise + }, ) { const { switch: run, ...probe } = input await installSessionSwitchProbe(page, probe) - await run() - await waitForStableSessionSwitch(page) - return collectSessionSwitchResult(page) + try { + await run() + await waitForStableSessionSwitch(page) + return await collectSessionSwitchResult(page) + } finally { + await page.evaluate(() => { + ;(window as Window & { __sessionSwitchProbe?: SessionSwitchProbe }).__sessionSwitchProbe?.stop() + }) + } } export async function waitForStableTimeline(page: Page, lastID: string) { diff --git a/packages/app/e2e/performance/timeline/session-timeline-benchmark.fixture.ts b/packages/app/e2e/performance/timeline/session-timeline-benchmark.fixture.ts index 4dad1df37b62..a22d5cc3317d 100644 --- a/packages/app/e2e/performance/timeline/session-timeline-benchmark.fixture.ts +++ b/packages/app/e2e/performance/timeline/session-timeline-benchmark.fixture.ts @@ -93,36 +93,53 @@ const assistantMessage = { parts: [editPart], } -export async function setupTimelineBenchmark(page: Page, options: { historyTurns: number; eventBatch: number }) { +export async function setupTimelineBenchmark( + page: Page, + options: { + historyTurns: number + eventBatch: number + newLayoutDesigns?: boolean + vcsDiff?: unknown[] + turnDiffs?: unknown[] + }, +) { const events: EventPayload[] = [] let eventBatch = options.eventBatch + const currentUserMessage = options.turnDiffs + ? { ...userMessage, info: { ...userMessage.info, summary: { diffs: options.turnDiffs } } } + : userMessage await mockOpenCodeServer(page, { directory, project: project(), provider: provider(), sessions: [session()], + vcsDiff: options.vcsDiff, pageMessages: () => ({ items: [ ...Array.from({ length: options.historyTurns }, (_, index) => performanceTurn(index)).flat(), - userMessage, + currentUserMessage, assistantMessage, ], }), events: () => events.splice(0, eventBatch), eventRetry: 16, }) - await page.addInitScript(() => { - localStorage.setItem( - "settings.v3", - JSON.stringify({ - general: { - editToolPartsExpanded: true, - shellToolPartsExpanded: true, - showReasoningSummaries: true, - }, - }), - ) - }) + await page.addInitScript( + (input) => { + localStorage.setItem( + "settings.v3", + JSON.stringify({ + general: { + newLayoutDesigns: input.newLayoutDesigns, + editToolPartsExpanded: true, + shellToolPartsExpanded: true, + showReasoningSummaries: true, + }, + }), + ) + }, + { newLayoutDesigns: options.newLayoutDesigns ?? false }, + ) await page.setViewportSize({ width: 1366, height: 768 }) const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) const text = page.locator(`[data-timeline-part-id="${textPartID}"]`).first() @@ -278,7 +295,7 @@ function performanceTurn(index: number) { messageID: assistantID, type: "tool", callID: `call_0000_${suffix}_patch`, - tool: "apply_patch", + tool: "patch", state: { status: "completed", input: { patchText: realisticPatch(index) }, diff --git a/packages/app/e2e/performance/timeline/session-timeline-benchmark.spec.ts b/packages/app/e2e/performance/timeline/session-timeline-benchmark.spec.ts index 64d79283f06d..1a52bc8aa3ca 100644 --- a/packages/app/e2e/performance/timeline/session-timeline-benchmark.spec.ts +++ b/packages/app/e2e/performance/timeline/session-timeline-benchmark.spec.ts @@ -1,3 +1,4 @@ +import type { Page } from "@playwright/test" import { benchmark, benchmarkDiagnostics, expect } from "../benchmark" import { buildInitialStreamEvent, @@ -6,80 +7,300 @@ import { textPartID, } from "./session-timeline-benchmark.fixture" import { startTimelineProfile } from "./session-timeline-profile" +import { createReviewDiffs } from "./timeline-test-helpers" import { collectTimelineStreamMetrics, installTimelineStreamProbe, startTimelineStreamProbe, } from "./session-timeline-stream-probe" +type TimelineStreamOptions = { + newLayoutDesigns?: boolean + reviewDiffs?: boolean + reviewPane?: boolean +} + +type ReviewPaneSample = { + observedAtMs: number + panelVisible: boolean + header: string + diffViewers: number + diffLines: number + codeBlocks: number + ready: boolean +} + +type ReviewPaneProbe = { + samples: ReviewPaneSample[] + start: () => void + stop: () => void +} + +const reviewReadyStreak = 3 + benchmark.describe("performance: session timeline streaming", () => { benchmark("streams assistant text without remounting or oscillating", async ({ page, report }) => { - benchmark.setTimeout(480_000) - const cpuThrottle = Number(process.env.TIMELINE_CPU_THROTTLE ?? 30) - const deltaCount = Number(process.env.TIMELINE_DELTA_COUNT ?? 160) - const historyTurns = Number(process.env.TIMELINE_HISTORY_TURNS ?? 320) - const eventBatch = Number(process.env.TIMELINE_EVENT_BATCH ?? 1) - const minimal = process.env.TIMELINE_MINIMAL === "1" - const profileCPU = process.env.TIMELINE_CPU_PROFILE === "1" - const profileVisual = !minimal && profileCPU && process.env.TIMELINE_VISUAL_PROFILE !== "0" + benchmark.setTimeout(Number(process.env.TIMELINE_COMPLETION_TIMEOUT_MS ?? 420_000) + 60_000) + const result = await runTimelineStreamBenchmark(page, {}) + report(result.metrics, result.context) + }) + + benchmark("streams assistant text in v2 with review pane closed", async ({ page, report }) => { + benchmark.setTimeout(Number(process.env.TIMELINE_COMPLETION_TIMEOUT_MS ?? 420_000) + 60_000) + const result = await runTimelineStreamBenchmark(page, { newLayoutDesigns: true }) + report(result.metrics, result.context) + }) + + benchmark("streams assistant text in v2 with review diffs and pane closed", async ({ page, report }) => { + benchmark.setTimeout(Number(process.env.TIMELINE_COMPLETION_TIMEOUT_MS ?? 420_000) + 60_000) + const result = await runTimelineStreamBenchmark(page, { newLayoutDesigns: true, reviewDiffs: true }) + report(result.metrics, result.context) + }) + + benchmark("streams assistant text in v2 with review pane open", async ({ page, report }) => { + benchmark.setTimeout(Number(process.env.TIMELINE_COMPLETION_TIMEOUT_MS ?? 420_000) + 60_000) + const result = await runTimelineStreamBenchmark(page, { newLayoutDesigns: true, reviewPane: true }) + report(result.metrics, result.context) + }) +}) + +benchmark.describe("performance: review pane", () => { + benchmark("loads v2 review diffs and switches active files", async ({ page, report }) => { + benchmark.setTimeout(240_000) + const historyTurns = Number(process.env.REVIEW_PANE_HISTORY_TURNS ?? 72) + const diffs = createReviewDiffs() const fixture = await setupTimelineBenchmark(page, { historyTurns, - eventBatch, + eventBatch: 1, + newLayoutDesigns: true, + vcsDiff: diffs, }) - fixture.transport.enqueue(buildInitialStreamEvent(deltaCount)) - const contentStart = performance.now() + fixture.transport.enqueue(buildInitialStreamEvent(1)) await expect(fixture.text).toBeVisible() await expect(fixture.text).toContainText("Implementation plan") - const initialContentObservedMs = performance.now() - contentStart await fixture.scrollToBottom() await fixture.waitForStableGeometry() - const profile = await startTimelineProfile(page, { cpuThrottle, profileCPU }) - await installTimelineStreamProbe(page, { textPartID, finalIndex: deltaCount, profileVisual, minimal }) - const deltas = buildStreamDeltaEvents(deltaCount) - await startTimelineStreamProbe(page) - fixture.transport.enqueue(deltas) - - await page.waitForFunction( - (finalIndex) => - ( - window as Window & { - __timelineStreamBenchmark?: { applied: { index: number }[] } - } - ).__timelineStreamBenchmark?.applied.some((value) => value.index === finalIndex), - deltaCount, - { timeout: 420_000 }, - ) - await expect(fixture.text).toContainText("benchmark-complete") - await expect(fixture.text).toContainText("Streaming") - await fixture.waitForStableGeometry() - const metrics = await collectTimelineStreamMetrics(page, { - textPartID, - finalIndex: deltaCount, - navigations: benchmarkDiagnostics(page).navigations, - }) - const delivered = deltas.length - fixture.transport.pendingCount() - await profile.stop() + const open = await measureReviewPaneLoad(page, diffs[0]!.file) + const switches = [] + for (const diff of diffs.slice(1, 4)) switches.push(await measureReviewNextFile(page, diff.file)) report( { - endToEndInitialContentObservedMs: initialContentObservedMs, - ...metrics, - deliveredDeltas: delivered, - pendingDeltas: fixture.transport.pendingCount(), + open, + switches, }, { - cpuThrottle, - profileCPU, - profileVisual, - minimal, - queuedDeltas: deltas.length, historyTurns, - eventBatch, + reviewDiffs: diffs.length, }, ) - - await profile.reset() }) }) + +async function runTimelineStreamBenchmark(page: Page, options: TimelineStreamOptions) { + const completionTimeoutMs = Number(process.env.TIMELINE_COMPLETION_TIMEOUT_MS ?? 420_000) + const cpuThrottle = Number(process.env.TIMELINE_CPU_THROTTLE ?? 30) + const deltaCount = Number(process.env.TIMELINE_DELTA_COUNT ?? 160) + const historyTurns = Number(process.env.TIMELINE_HISTORY_TURNS ?? 320) + const eventBatch = Number(process.env.TIMELINE_EVENT_BATCH ?? 1) + const minimal = process.env.TIMELINE_MINIMAL === "1" + const profileCPU = process.env.TIMELINE_CPU_PROFILE === "1" + const profileVisual = !minimal && profileCPU && process.env.TIMELINE_VISUAL_PROFILE !== "0" + const diffs = options.reviewDiffs || options.reviewPane ? createReviewDiffs() : undefined + const fixture = await setupTimelineBenchmark(page, { + historyTurns, + eventBatch, + newLayoutDesigns: options.newLayoutDesigns, + // Turn diffs exercise timeline data cost; the pane-open scenario serves the same + // diffs through the default git mode so it works across review implementations. + turnDiffs: options.reviewDiffs ? diffs : undefined, + vcsDiff: options.reviewPane ? diffs : undefined, + }) + + fixture.transport.enqueue(buildInitialStreamEvent(deltaCount)) + const contentStart = performance.now() + await expect(fixture.text).toBeVisible() + await expect(fixture.text).toContainText("Implementation plan") + const initialContentObservedMs = performance.now() - contentStart + await fixture.scrollToBottom() + await fixture.waitForStableGeometry() + + const reviewPane = options.reviewPane && diffs ? await measureReviewPaneLoad(page, diffs[0]!.file) : undefined + if (reviewPane) await fixture.waitForStableGeometry() + + const profile = await startTimelineProfile(page, { cpuThrottle, profileCPU }) + await installTimelineStreamProbe(page, { textPartID, finalIndex: deltaCount, profileVisual, minimal }) + const deltas = buildStreamDeltaEvents(deltaCount) + await startTimelineStreamProbe(page) + fixture.transport.enqueue(deltas) + + await page.waitForFunction( + (finalIndex) => + ( + window as Window & { + __timelineStreamBenchmark?: { applied: { index: number }[] } + } + ).__timelineStreamBenchmark?.applied.some((value) => value.index === finalIndex), + deltaCount, + { timeout: completionTimeoutMs }, + ) + await expect(fixture.text).toContainText("benchmark-complete") + await expect(fixture.text).toContainText("Streaming") + await fixture.waitForStableGeometry() + const metrics = await collectTimelineStreamMetrics(page, { + textPartID, + finalIndex: deltaCount, + navigations: benchmarkDiagnostics(page).navigations, + }) + const delivered = deltas.length - fixture.transport.pendingCount() + await profile.stop() + + const result = { + metrics: { + endToEndInitialContentObservedMs: initialContentObservedMs, + ...metrics, + deliveredDeltas: delivered, + pendingDeltas: fixture.transport.pendingCount(), + reviewPane: reviewPane ?? null, + }, + context: { + cpuThrottle, + profileCPU, + profileVisual, + minimal, + queuedDeltas: deltas.length, + historyTurns, + eventBatch, + newLayoutDesigns: options.newLayoutDesigns === true, + reviewPane: options.reviewPane === true ? "open" : "closed", + reviewDiffs: diffs?.length ?? 0, + }, + } + + await profile.reset() + return result +} + +async function measureReviewPaneLoad(page: Page, file: string) { + // Default git mode reads the mocked /vcs/diff data, so opening the pane is enough + // and the flow works across review pane implementations. + await installReviewPaneProbe(page, { file }) + await startReviewPaneProbe(page) + await page.getByRole("button", { name: "Toggle review" }).click() + await expect(page.locator("#review-panel")).toBeVisible() + return collectReviewPaneProbe(page) +} + +async function measureReviewNextFile(page: Page, file: string) { + await installReviewPaneProbe(page, { file }) + await startReviewPaneProbe(page) + await page.getByRole("button", { name: "Next file" }).click() + return collectReviewPaneProbe(page) +} + +async function installReviewPaneProbe(page: Page, input: { file: string }) { + await page.evaluate((input) => { + const samples: ReviewPaneSample[] = [] + const basename = input.file.split(/[\\/]/).at(-1) ?? input.file + let started: number | undefined + let running = true + + const paneState = () => { + const panel = document.querySelector("#review-panel") + const review = panel?.querySelector('[data-component="session-review-v2"]') + const rect = (review ?? panel)?.getBoundingClientRect() + const text = panel?.textContent ?? "" + const previewHeader = panel?.querySelector( + '[data-slot="session-review-v2-file-header"]', + )?.textContent + const header = previewHeader ?? text + const viewers = panel ? [...panel.querySelectorAll('[data-component="file"][data-mode="diff"]')] : [] + const codeBlocks = panel?.querySelectorAll("code").length ?? 0 + const diffLines = viewers.reduce( + (sum, viewer) => + sum + + (viewer.shadowRoot?.querySelectorAll("[data-line]").length ?? viewer.querySelectorAll("[data-line]").length), + 0, + ) + const panelVisible = + !!panel && panel.getAttribute("aria-hidden") !== "true" && !!rect && rect.width > 0 && rect.height > 0 + return { + panelVisible, + header: header.slice(0, 500), + diffViewers: viewers.length, + diffLines, + codeBlocks, + ready: + panelVisible && + header.includes(basename) && + (viewers.length > 0 || text.includes("+3") || diffLines > 0 || codeBlocks > 0), + } + } + + const sample = () => { + if (!running || started === undefined) return + requestAnimationFrame(() => { + setTimeout(() => { + if (!running || started === undefined) return + samples.push({ observedAtMs: performance.now() - started, ...paneState() }) + if (performance.now() - started < 10_000) sample() + }, 0) + }) + } + + ;(window as Window & { __reviewPaneProbe?: ReviewPaneProbe }).__reviewPaneProbe = { + samples, + start: () => { + started = performance.now() + performance.mark("opencode.review-pane.click") + sample() + }, + stop: () => { + running = false + }, + } + }, input) +} + +async function startReviewPaneProbe(page: Page) { + await page.evaluate(() => { + ;(window as Window & { __reviewPaneProbe?: ReviewPaneProbe }).__reviewPaneProbe!.start() + }) +} + +async function collectReviewPaneProbe(page: Page) { + await page.waitForFunction((streak) => { + const samples = (window as Window & { __reviewPaneProbe?: ReviewPaneProbe }).__reviewPaneProbe?.samples + if (!samples) return false + return samples.some((_, index) => { + const stable = samples.slice(index, index + streak) + return stable.length === streak && stable.every((sample) => sample.ready) + }) + }, reviewReadyStreak) + + const samples = await page.evaluate(() => { + const probe = (window as Window & { __reviewPaneProbe?: ReviewPaneProbe }).__reviewPaneProbe! + probe.stop() + return probe.samples + }) + return { summary: summarizeReviewPaneSamples(samples), samples } +} + +function summarizeReviewPaneSamples(samples: ReviewPaneSample[]) { + const firstReady = samples.find((sample) => sample.ready) + const stableIndex = samples.findIndex((_, index) => { + const stable = samples.slice(index, index + reviewReadyStreak) + return stable.length === reviewReadyStreak && stable.every((sample) => sample.ready) + }) + return { + samples: samples.length, + firstReadyObservedMs: firstReady?.observedAtMs ?? null, + stableReadyObservedMs: stableIndex === -1 ? null : samples[stableIndex + reviewReadyStreak - 1]!.observedAtMs, + notReadySamples: samples.filter((sample) => !sample.ready).length, + maxDiffViewers: Math.max(0, ...samples.map((sample) => sample.diffViewers)), + maxDiffLines: Math.max(0, ...samples.map((sample) => sample.diffLines)), + maxCodeBlocks: Math.max(0, ...samples.map((sample) => sample.codeBlocks)), + } +} diff --git a/packages/app/e2e/performance/timeline/session-timeline-stress.fixture.ts b/packages/app/e2e/performance/timeline/session-timeline-stress.fixture.ts index 529081a1d9e0..2e20d98415cf 100644 --- a/packages/app/e2e/performance/timeline/session-timeline-stress.fixture.ts +++ b/packages/app/e2e/performance/timeline/session-timeline-stress.fixture.ts @@ -131,7 +131,7 @@ function toolPart( ): MessagePart { const metadata = metadataOverride ?? - (tool === "apply_patch" + (tool === "patch" ? { files: [patchFile(index, "update"), patchFile(index + 1, index % 2 === 0 ? "add" : "delete")] } : tool === "edit" || tool === "write" ? { @@ -219,7 +219,7 @@ function turn(index: number): Message[] { ? [toolPart(index, 7, "write", { filePath: `src/generated/write-${index}.ts`, content: code(index, 28) }, 560)] : []), ...(index % 8 === 0 - ? [toolPart(index, 8, "apply_patch", { files: [`src/generated/patch-${index}.ts`] }, 620)] + ? [toolPart(index, 8, "patch", { files: [`src/generated/patch-${index}.ts`] }, 620)] : []), ...(index % 7 === 0 ? [toolPart(index, 4, "bash", { command: "bun typecheck", description: "Verify generated output" }, 620)] @@ -269,7 +269,6 @@ const childMessages = Array.from({ length: 4 }, (_, index) => [ ]).flat() function renderable(part: MessagePart) { - if (part.type === "tool" && part.tool === "todowrite") return false if (part.type === "text") return !!part.text.trim() if (part.type === "reasoning") return !!part.text.trim() return part.type !== "step-start" && part.type !== "step-finish" && part.type !== "patch" diff --git a/packages/app/e2e/performance/timeline/timeline-test-helpers.ts b/packages/app/e2e/performance/timeline/timeline-test-helpers.ts index 401fb74496cd..5028373c55f6 100644 --- a/packages/app/e2e/performance/timeline/timeline-test-helpers.ts +++ b/packages/app/e2e/performance/timeline/timeline-test-helpers.ts @@ -21,7 +21,10 @@ export async function installTimelineSettings(page: Page) { export function mockStressTimeline( page: Page, - input?: { onMessages?: (input: { sessionID: string; before?: string; phase: "start" | "end" }) => void }, + input?: { + onMessages?: (input: { sessionID: string; before?: string; phase: "start" | "end" }) => void + vcsDiff?: unknown[] + }, ) { return mockOpenCodeServer(page, { sessions: fixture.sessions, @@ -30,6 +33,7 @@ export function mockStressTimeline( project: fixture.project, pageMessages, onMessages: input?.onMessages, + vcsDiff: input?.vcsDiff, }) } @@ -45,7 +49,7 @@ export async function installStressSessionTabs(page: Page, input?: { draftID?: s }), ) localStorage.setItem( - "opencode.global.dat:tabs", + "opencode.window.browser.dat:tabs", JSON.stringify([ ...sessionIDs.map((sessionId) => ({ type: "session", @@ -78,3 +82,53 @@ export function stressDraftHref(draftID: string) { function stressServer() { return `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` } + +export function createReviewDiffs() { + return Array.from({ length: Number(process.env.REVIEW_PANE_DIFF_COUNT ?? 72) }, (_, index) => { + const lines = index % 3 === 0 ? 300 : index % 3 === 1 ? 120 : 38 + const file = `src/review/generated-${String(index).padStart(3, "0")}.ts` + const before = reviewSource(index, lines) + const after = before + .replace(`value_${index}_4`, `updated_${index}_4`) + .replace( + `value_${index}_${Math.max(8, Math.floor(lines / 2))}`, + `updated_${index}_${Math.max(8, Math.floor(lines / 2))}`, + ) + .replace(`value_${index}_${lines - 4}`, `updated_${index}_${lines - 4}`) + return { + file, + patch: reviewPatch(file, before, after), + additions: 3, + deletions: 3, + status: "modified" as const, + } + }) +} + +function reviewSource(seed: number, lines: number) { + return Array.from( + { length: lines }, + (_, index) => `export const value_${seed}_${index} = "${reviewWords(seed + index, index % 5 === 0 ? 180 : 42)}"`, + ).join("\n") +} + +function reviewPatch(file: string, before: string, after: string) { + const beforeLines = before.split("\n") + const afterLines = after.split("\n") + return [ + `diff --git a/${file} b/${file}`, + `--- a/${file}`, + `+++ b/${file}`, + `@@ -1,${beforeLines.length} +1,${afterLines.length} @@`, + ...beforeLines.flatMap((line, index) => { + const next = afterLines[index]! + if (line === next) return [` ${line}`] + return [`-${line}`, `+${next}`] + }), + ].join("\n") +} + +function reviewWords(seed: number, length: number) { + const words = ["alpha", "bravo", "charlie", "delta", "echo", "foxtrot", "golf", "hotel", "india", "juliet"] + return Array.from({ length: Math.ceil(length / 7) }, (_, index) => words[(seed + index * 3) % words.length]).join(" ") +} diff --git a/packages/app/e2e/performance/unit/mock-server.test.ts b/packages/app/e2e/performance/unit/mock-server.test.ts new file mode 100644 index 000000000000..83308c0a866b --- /dev/null +++ b/packages/app/e2e/performance/unit/mock-server.test.ts @@ -0,0 +1,46 @@ +import { expect, test } from "bun:test" +import type { Page, Route } from "@playwright/test" +import { mockOpenCodeServer } from "../../utils/mock-server" + +test("applies message latency after a list response gate is released", async () => { + const events: string[] = [] + const gate = Promise.withResolvers() + let handler: ((route: Route) => Promise) | undefined + const page = { + route: (_url: string, callback: (route: Route) => Promise) => { + handler = callback + return Promise.resolve() + }, + } as unknown as Page + await mockOpenCodeServer(page, { + provider: {}, + directory: "C:/OpenCode", + project: {}, + sessions: [{ id: "session" }], + messageDelay: 25, + beforeMessagesResponse: () => { + events.push("before") + return gate.promise + }, + onMessages: (request) => events.push(request.phase), + pageMessages: () => { + events.push("page") + return { items: [] } + }, + }) + + const response = handler!({ + request: () => ({ url: () => "http://127.0.0.1:4096/session/session/message" }), + fulfill: () => { + events.push("fulfill") + return Promise.resolve() + }, + } as unknown as Route) + expect(events).toEqual(["start", "before"]) + + const released = performance.now() + gate.resolve() + await response + expect(performance.now() - released).toBeGreaterThanOrEqual(20) + expect(events).toEqual(["start", "before", "page", "end", "fulfill"]) +}) diff --git a/packages/app/e2e/performance/unit/session-tab-switch-metrics.test.ts b/packages/app/e2e/performance/unit/session-tab-switch-metrics.test.ts index dd771b7d57c9..4b824d9dfb0d 100644 --- a/packages/app/e2e/performance/unit/session-tab-switch-metrics.test.ts +++ b/packages/app/e2e/performance/unit/session-tab-switch-metrics.test.ts @@ -52,3 +52,35 @@ test("reports missing correctness without throwing", () => { expect(result.firstCorrectObservedMs).toBeNull() expect(result.stableObservedMs).toBeNull() }) + +test("requires an explicitly tracked part to be visible", () => { + const result = classifySessionSwitch([ + { + observedAtMs: 16, + destination: ["destination"], + source: [], + hasVisibleRows: true, + last: true, + requiredPartVisible: false, + bottomErrorPx: 0, + }, + ]) + + expect(result.firstCorrectObservedMs).toBeNull() +}) + +test("can measure content correctness without requiring a bottom anchor", () => { + const result = classifySessionSwitch([ + { + observedAtMs: 16, + destination: ["destination"], + source: [], + hasVisibleRows: true, + last: true, + requiredPartVisible: true, + bottomAnchorRequired: false, + }, + ]) + + expect(result.firstCorrectObservedMs).toBe(16) +}) diff --git a/packages/app/e2e/performance/unit/session-tab-switch-probe.test.ts b/packages/app/e2e/performance/unit/session-tab-switch-probe.test.ts new file mode 100644 index 000000000000..d5d7f09a69ef --- /dev/null +++ b/packages/app/e2e/performance/unit/session-tab-switch-probe.test.ts @@ -0,0 +1,55 @@ +import { expect, test } from "bun:test" +import type { Page } from "@playwright/test" +import { measureSessionSwitch } from "../timeline/session-tab-switch-probe" + +function testPage(waitFailure?: Error) { + const stops: unknown[] = [] + const page = { + evaluate: async (_callback: unknown, input?: unknown) => { + if (input) return + stops.push(undefined) + }, + waitForFunction: async () => { + if (waitFailure) throw waitFailure + }, + } as unknown as Page + return { page, stops } +} + +function input(run: () => Promise) { + return { + destinationIDs: ["destination"], + sourceIDs: ["source"], + lastID: "destination", + href: "/session/destination", + switch: run, + } +} + +test("stops sampling when the session switch fails", async () => { + const failure = new Error("switch failed") + const context = testPage() + + await expect( + measureSessionSwitch( + context.page, + input(async () => Promise.reject(failure)), + ), + ).rejects.toBe(failure) + + expect(context.stops).toHaveLength(1) +}) + +test("stops sampling when the stable wait fails", async () => { + const failure = new Error("stable wait failed") + const context = testPage(failure) + + await expect( + measureSessionSwitch( + context.page, + input(async () => {}), + ), + ).rejects.toBe(failure) + + expect(context.stops).toHaveLength(1) +}) diff --git a/packages/app/e2e/performance/unit/visual-stability.test.ts b/packages/app/e2e/performance/unit/visual-stability.test.ts new file mode 100644 index 000000000000..2fc3be316660 --- /dev/null +++ b/packages/app/e2e/performance/unit/visual-stability.test.ts @@ -0,0 +1,392 @@ +import { expect, test } from "bun:test" +import { + analyzeVisualStability, + analyzeVisualStabilityByMarker, + type VisualStabilityTrace, +} from "../../utils/visual-stability" +import { analyzeVisualObservations } from "../../utils/visual-stability/analyzer" +import { legacyVisualPlan, visualPlan, type VisualInvariant } from "../../utils/visual-stability/invariant" +import { defineVisualRegions, mapVisualRegions } from "../../utils/visual-stability/regions" + +function trace(samples: VisualStabilityTrace["samples"]): VisualStabilityTrace { + return { markers: [], samples } +} + +test("accepts continuous visible motion", () => { + expect( + analyzeVisualStability( + trace([ + frame(0, region({ width: 80, bottom: 40 }), region({ top: 40, bottom: 60 })), + frame(16, region({ width: 75, bottom: 45 }), region({ top: 45, bottom: 65 })), + frame(32, region({ width: 70, bottom: 50 }), region({ top: 50, bottom: 70 })), + ]), + { flow: ["changing", "following"] }, + ), + ).toEqual([]) +}) + +test("reports repeated geometry reversals", () => { + const issues = analyzeVisualStability( + trace([ + frame(0, region({ width: 80 })), + frame(16, region({ width: 60 })), + frame(32, region({ width: 78 })), + frame(48, region({ width: 62 })), + ]), + ) + + expect(issues.some((issue) => issue.includes("changing width reversed 2 times"))).toBe(true) +}) + +test("reports visible blanking, label reversal, and overlap", () => { + const issues = analyzeVisualStability( + trace([ + frame(0, region({ label: "Exploring", opacity: 1, bottom: 40 }), region({ top: 40, bottom: 60 })), + frame(16, region({ label: "Explored", opacity: 0.2, bottom: 50 }), region({ top: 49, bottom: 69 })), + frame(32, region({ label: "Exploring", opacity: 1, bottom: 50 }), region({ top: 50, bottom: 70 })), + ]), + { flow: ["changing", "following"] }, + ) + + expect(issues.some((issue) => issue.includes("opacity fell to 0.2"))).toBe(true) + expect(issues.some((issue) => issue.includes("label reverted"))).toBe(true) + expect(issues.some((issue) => issue.includes("overlapped following by 1px"))).toBe(true) +}) + +test("reports duplicate regions and unexpected remounts", () => { + const issues = analyzeVisualStability( + trace([frame(0, region({ node: 1 })), frame(16, region({ node: 2, count: 2 })), frame(32, region({ node: 2 }))]), + { stable: ["changing"], unique: ["changing"] }, + ) + + expect(issues.some((issue) => issue.includes("changing appeared 2 times"))).toBe(true) + expect(issues.some((issue) => issue.includes("changing remounted"))).toBe(true) +}) + +test("reports bottom anchor loss but permits movement while scrolled away", () => { + const anchored = analyzeVisualStability( + trace([ + { at: 0, regions: { changing: region() }, viewport: viewport(0) }, + { at: 16, regions: { changing: region() }, viewport: viewport(24) }, + ]), + { preserveBottomAnchor: true }, + ) + const away = analyzeVisualStability( + trace([ + { at: 0, regions: { changing: region() }, viewport: viewport(80) }, + { at: 16, regions: { changing: region() }, viewport: viewport(104) }, + ]), + { preserveBottomAnchor: true }, + ) + + expect(anchored.some((issue) => issue.includes("bottom anchor moved to 24px"))).toBe(true) + expect(away).toEqual([]) +}) + +test("reports up down up movement while preserving a bottom anchor", () => { + const issues = analyzeVisualStability( + trace([ + { at: 0, regions: { changing: region({ top: 200, bottom: 240 }) }, viewport: viewport(0) }, + { at: 16, regions: { changing: region({ top: 180, bottom: 220 }) }, viewport: viewport(0) }, + { at: 32, regions: { changing: region({ top: 196, bottom: 236 }) }, viewport: viewport(0) }, + { at: 48, regions: { changing: region({ top: 176, bottom: 216 }) }, viewport: viewport(0) }, + ]), + { preserveBottomAnchor: true, maxPositionReversals: 0 }, + ) + + expect(issues.some((issue) => issue.includes("changing top reversed 2 times"))).toBe(true) + expect(issues.some((issue) => issue.includes("changing bottom reversed 2 times"))).toBe(true) +}) + +test("accepts monotonic upward movement while preserving a bottom anchor", () => { + expect( + analyzeVisualStability( + trace([ + { at: 0, regions: { changing: region({ top: 200, bottom: 240 }) }, viewport: viewport(0) }, + { at: 16, regions: { changing: region({ top: 190, bottom: 230 }) }, viewport: viewport(0) }, + { at: 32, regions: { changing: region({ top: 180, bottom: 220 }) }, viewport: viewport(0) }, + ]), + { preserveBottomAnchor: true, maxPositionReversals: 0 }, + ), + ).toEqual([]) +}) + +test("ignores overlap entirely outside the clipped timeline viewport", () => { + expect( + analyzeVisualStability( + trace([ + { + at: 0, + regions: { + changing: region({ top: -200, bottom: -100 }), + following: region({ top: -150, bottom: -50 }), + }, + viewport: viewport(0), + }, + ]), + { flow: ["changing", "following"] }, + ), + ).toEqual([]) +}) + +test("reports visible anchor movement while allowing virtual scrollbar movement", () => { + const issues = analyzeVisualStability( + trace([ + { at: 0, regions: { anchor: region({ top: 100, bottom: 120 }) }, viewport: { ...viewport(100), scrollTop: 40 } }, + { at: 16, regions: { anchor: region({ top: 100, bottom: 120 }) }, viewport: { ...viewport(120), scrollTop: 60 } }, + ]), + { fixed: ["anchor"] }, + ) + + expect(issues).toEqual([]) + + const moved = analyzeVisualStability( + trace([ + { at: 0, regions: { anchor: region({ top: 100, bottom: 120 }) }, viewport: viewport(100) }, + { at: 16, regions: { anchor: region({ top: 112, bottom: 132 }) }, viewport: viewport(100) }, + ]), + { fixed: ["anchor"] }, + ) + expect(moved.some((issue) => issue.includes("anchor moved 12px in the viewport"))).toBe(true) +}) + +test("analyzes each marked event independently", () => { + const input: VisualStabilityTrace = { + markers: [ + { at: 10, label: "grow" }, + { at: 40, label: "shrink" }, + ], + samples: [ + frame(0, region({ top: 100 })), + frame(16, region({ top: 90 })), + frame(32, region({ top: 80 })), + frame(48, region({ top: 90 })), + frame(64, region({ top: 100 })), + ], + } + + expect(analyzeVisualStability(input, { maxPositionReversals: 0 })).toContain("changing top reversed 1 times") + expect( + analyzeVisualStabilityByMarker(input, { + maxPositionReversals: 0, + motion: ["changing"], + aggregateMotion: false, + }), + ).toEqual([]) +}) + +test("reports cross-event motion reversals by default", () => { + const input: VisualStabilityTrace = { + markers: [ + { at: 10, label: "up" }, + { at: 40, label: "down" }, + ], + samples: [ + frame(0, region({ top: 100 })), + frame(16, region({ top: 90 })), + frame(32, region({ top: 80 })), + frame(48, region({ top: 90 })), + frame(64, region({ top: 100 })), + ], + } + + expect(analyzeVisualStabilityByMarker(input, { maxPositionReversals: 0 })).toContain("changing top reversed 1 times") +}) + +test("reports regions rendered in the wrong flow order", () => { + const issues = analyzeVisualStability( + trace([frame(0, region({ top: 100, bottom: 120 }), region({ top: 60, bottom: 80 }))]), + { flow: ["changing", "following"] }, + ) + + expect(issues.some((issue) => issue.includes("changing rendered after following"))).toBe(true) +}) + +test("uses painted bounds instead of clipped layout overflow", () => { + expect( + analyzeVisualStability( + trace([ + frame( + 0, + region({ top: 100, bottom: 140, height: 40, layoutTop: 100, layoutBottom: 300 }), + region({ top: 140, bottom: 180 }), + ), + ]), + { flow: ["changing", "following"] }, + ), + ).toEqual([]) +}) + +test("does not report disappearance when a present row moves outside the viewport", () => { + expect( + analyzeVisualStability( + trace([ + frame(0, region({ visible: true })), + frame(16, region({ visible: false, inViewport: false, top: -100, bottom: -80 })), + frame(32, region({ visible: true })), + ]), + ), + ).toEqual([]) +}) + +test("reports an in-viewport transparent frame between visible frames", () => { + const issues = analyzeVisualStability( + trace([ + frame(0, region()), + frame(16, region({ visible: false, opacity: 0, inViewport: true })), + frame(32, region()), + ]), + ) + + expect(issues.some((issue) => issue.includes("blanked between visible frames"))).toBe(true) +}) + +test("reports an in-viewport display-none frame between visible frames", () => { + const issues = analyzeVisualStability( + trace([ + frame(0, region()), + frame(16, region({ visible: false, width: 0, height: 0, inViewport: true, cssHidden: true })), + frame(32, region()), + ]), + ) + + expect(issues.some((issue) => issue.includes("blanked between visible frames"))).toBe(true) +}) + +test("can limit motion analysis to unaffected regions", () => { + expect( + analyzeVisualStability( + trace([ + frame(0, region({ height: 20 }), region()), + frame(16, region({ height: 40 }), region()), + frame(32, region({ height: 30 }), region()), + ]), + { motion: ["following"] }, + ), + ).toEqual([]) +}) + +test("reports a blank frame across replacement surfaces", () => { + const issues = analyzeVisualStability( + { + markers: [], + samples: [ + { at: 0, regions: { thinking: region(), error: region({ present: false, visible: false }) } }, + { + at: 16, + regions: { + thinking: region({ present: false, visible: false }), + error: region({ present: false, visible: false }), + }, + }, + { at: 32, regions: { thinking: region({ present: false, visible: false }), error: region() } }, + ], + }, + { continuousAny: [["thinking", "error"]] }, + ) + + expect(issues.some((issue) => issue.includes("thinking | error blanked"))).toBe(true) +}) + +test("reports failure to acquire the bottom anchor", () => { + const issues = analyzeVisualStability( + trace([ + { at: 0, regions: { changing: region() }, viewport: viewport(600) }, + { at: 16, regions: { changing: region() }, viewport: viewport(120) }, + ]), + { acquireBottomAnchor: true }, + ) + + expect(issues.some((issue) => issue.includes("did not acquire bottom anchor"))).toBe(true) +}) + +test("reports a required region that never renders", () => { + const issues = analyzeVisualStability( + trace([ + { + at: 0, + regions: { changing: region({ present: false, visible: false }) }, + }, + ]), + { required: ["changing"] }, + ) + + expect(issues).toContain("changing never rendered") +}) + +test("preserves typed region names while mapping definitions", () => { + const regions = defineVisualRegions({ + changing: { selector: "[data-changing]" }, + following: { selector: "[data-following]", closest: "[data-row]" }, + }) + const selectors = mapVisualRegions(regions, (region) => region.selector) + + expect(selectors).toEqual({ changing: "[data-changing]", following: "[data-following]" }) + const name: keyof typeof selectors = "changing" + expect(name).toBe("changing") +}) + +test("evaluates the typed invariant algebra over explicit observations", () => { + const regions = defineVisualRegions({ + changing: { selector: "[data-changing]" }, + following: { selector: "[data-following]" }, + }) + const invariants = [ + { type: "required", regions: ["changing"] }, + { type: "flow", regions: ["changing", "following"] }, + ] satisfies VisualInvariant[] + // @ts-expect-error Plans reject names that are not in the region definition. + const invalid = { type: "required", regions: ["missing"] } satisfies VisualInvariant + const plan = visualPlan(regions, invariants, { perMarker: true }) + + expect(invalid.regions).toEqual(["missing"]) + expect(plan.perMarker).toBe(true) + expect(analyzeVisualObservations([frame(0, region({ bottom: 50 }), region({ top: 49, bottom: 69 }))], plan)).toEqual([ + "changing overlapped following by 1px at 0ms", + ]) +}) + +test("legacy plan adapter preserves analyzer messages and order", () => { + const input = trace([ + frame(0, region({ label: "Exploring", opacity: 1, bottom: 40 }), region({ top: 40, bottom: 60 })), + frame(16, region({ label: "Explored", opacity: 0.2, bottom: 50 }), region({ top: 49, bottom: 69 })), + frame(32, region({ label: "Exploring", opacity: 1, bottom: 50 }), region({ top: 50, bottom: 70 })), + ]) + const options = { flow: ["changing", "following"], stable: ["changing"] } + + expect(analyzeVisualObservations(input.samples, legacyVisualPlan(options))).toEqual( + analyzeVisualStability(input, options), + ) +}) + +function frame( + at: number, + changing: VisualStabilityTrace["samples"][number]["regions"][string], + following?: VisualStabilityTrace["samples"][number]["regions"][string], +) { + return { at, regions: { changing, ...(following ? { following } : {}) } } +} + +function region(input: Partial = {}) { + return { + present: true, + visible: true, + inViewport: true, + top: 0, + bottom: 20, + width: 100, + height: 20, + opacity: 1, + count: 1, + node: 1, + label: "", + text: "", + layoutTop: input.top ?? 0, + layoutBottom: input.bottom ?? 20, + ...input, + } +} + +function viewport(distanceFromBottom: number) { + return { top: 0, bottom: 400, scrollTop: 100, scrollHeight: 500, clientHeight: 400, distanceFromBottom } +} diff --git a/packages/app/e2e/regression/cross-server-tab-close.spec.ts b/packages/app/e2e/regression/cross-server-tab-close.spec.ts index 031440f16602..9fd799143729 100644 --- a/packages/app/e2e/regression/cross-server-tab-close.spec.ts +++ b/packages/app/e2e/regression/cross-server-tab-close.spec.ts @@ -14,7 +14,7 @@ test("closing the active server's last tab opens the remaining server tab", asyn localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) localStorage.setItem("opencode.global.dat:server", JSON.stringify({ list: [serverB] })) localStorage.setItem( - "opencode.global.dat:tabs", + "opencode.window.browser.dat:tabs", JSON.stringify([ { type: "session", server: "http://127.0.0.1:4096", sessionId: sessionA }, { type: "session", server: serverB, sessionId: sessionB }, @@ -52,7 +52,7 @@ test("legacy session routes preserve an existing tab's server", async ({ page }) localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) localStorage.setItem("opencode.global.dat:server", JSON.stringify({ list: [serverB] })) localStorage.setItem( - "opencode.global.dat:tabs", + "opencode.window.browser.dat:tabs", JSON.stringify([{ type: "session", server: serverB, sessionId: sessionB }]), ) }, @@ -90,7 +90,7 @@ async function mockServers(page: Page, requests: string[]) { if (url.pathname === `/session/${current.id}`) return json(route, current) if (/^\/session\/[^/]+$/.test(url.pathname)) return json(route, { name: "NotFoundError" }, 404) if (url.pathname === `/session/${current.id}/message`) return json(route, []) - if (/^\/session\/[^/]+\/(children|todo|diff)$/.test(url.pathname)) return json(route, []) + if (/^\/session\/[^/]+\/(children|diff)$/.test(url.pathname)) return json(route, []) if (["/skill", "/command", "/lsp", "/formatter", "/permission", "/question", "/vcs/diff"].includes(url.pathname)) return json(route, []) if (["/global/config", "/config", "/provider/auth", "/mcp", "/session/status"].includes(url.pathname)) diff --git a/packages/app/e2e/regression/file-browser-sidebar-tab-switch.spec.ts b/packages/app/e2e/regression/file-browser-sidebar-tab-switch.spec.ts new file mode 100644 index 000000000000..136232c2114b --- /dev/null +++ b/packages/app/e2e/regression/file-browser-sidebar-tab-switch.spec.ts @@ -0,0 +1,150 @@ +import { base64Encode } from "@opencode-ai/core/util/encode" +import { expect, test, type Page } from "@playwright/test" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectSessionTitle } from "../utils/waits" + +const directory = "C:/OpenCode/FileBrowserSidebar" +const projectID = "proj_file_browser_sidebar" +const sessionID = "ses_file_browser_sidebar" +const title = "File browser sidebar" +const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` +const files = Array.from({ length: 80 }, (_, index) => `file-${String(index).padStart(2, "0")}.ts`) +// Marks the file-browser sidebar DOM node so a remount (fresh node) is detectable. +const PROBE = "original" + +test.use({ viewport: { width: 1440, height: 900 } }) + +// The file-browser sidebar must stay mounted across preview/pinned file-tab +// switches. Remounting resets scroll and filter state. +test("keeps the file-browser sidebar mounted when switching file tabs", async ({ page }) => { + await setup(page) + + await page.goto(`/server/${base64Encode(server)}/session/${sessionID}`) + await expectSessionTitle(page, title) + + const panel = page.locator("#review-panel") + await panel.getByRole("button", { name: "Open file" }).click() + await expect(panel.getByRole("tab", { name: "Open file" })).toHaveAttribute("data-selected", "") + + const sidebar = panel.locator('[data-component="session-review-v2-sidebar-root"]') + await expect(sidebar).toBeVisible() + await expect(panel.getByRole("button", { name: "file-00.ts" })).toBeVisible() + + await panel.getByRole("button", { name: "file-00.ts" }).click() + await expect(panel.getByRole("tab", { name: "file-00.ts" })).toHaveAttribute("data-selected", "") + await expect(panel.getByText("contents:file-00.ts", { exact: true })).toBeVisible() + + const viewport = panel.locator('[data-slot="session-review-v2-sidebar-tree"] .scroll-view__viewport') + await viewport.hover() + await page.mouse.wheel(0, 100_000) + await expect + .poll(() => viewport.evaluate((element) => element.scrollHeight - element.clientHeight - element.scrollTop)) + .toBeLessThanOrEqual(1) + const scrolled = await viewport.evaluate((element) => element.scrollTop) + expect(scrolled).toBeGreaterThan(0) + await writeProbe(page) + + await panel.getByRole("button", { name: "file-79.ts" }).click() + await expect(panel.getByRole("tab", { name: "file-79.ts" })).toHaveAttribute("data-selected", "") + await expect(panel.getByText("contents:file-79.ts", { exact: true })).toBeVisible() + expect(await readProbe(page)).toBe(PROBE) + await expect.poll(() => viewport.evaluate((element) => element.scrollTop)).toBe(scrolled) + + await panel.getByRole("button", { name: "file-78.ts" }).dblclick() + await expect(panel.getByRole("tab", { name: "file-78.ts" })).toHaveAttribute("data-selected", "") + await panel.getByRole("button", { name: "file-79.ts" }).click() + await expect(panel.getByRole("tab", { name: "file-79.ts" })).toHaveAttribute("data-selected", "") + await panel.getByRole("tab", { name: "file-78.ts" }).click() + await expect(panel.getByRole("tab", { name: "file-78.ts" })).toHaveAttribute("data-selected", "") + expect(await readProbe(page)).toBe(PROBE) + await expect.poll(() => viewport.evaluate((element) => element.scrollTop)).toBe(scrolled) +}) + +type Probed = HTMLElement & { __e2eProbe?: string } + +async function writeProbe(page: Page) { + await page.locator('#review-panel [data-component="session-review-v2-sidebar-root"]').evaluate((el, probe) => { + ;(el as Probed).__e2eProbe = probe + }, PROBE) +} + +async function readProbe(page: Page) { + return page + .locator('#review-panel [data-component="session-review-v2-sidebar-root"]') + .evaluate((el) => (el as Probed).__e2eProbe) +} + +async function setup(page: Page) { + await mockOpenCodeServer(page, { + directory, + project: { + id: projectID, + worktree: directory, + vcs: "git", + name: "file-browser-sidebar", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { + all: [ + { + id: "opencode", + name: "OpenCode", + models: { test: { id: "test", name: "Test", limit: { context: 200_000 } } }, + }, + ], + connected: ["opencode"], + default: { providerID: "opencode", modelID: "test" }, + }, + sessions: [ + { + id: sessionID, + slug: sessionID, + projectID, + directory, + title, + version: "dev", + time: { created: 1700000000000, updated: 1700000000000 }, + }, + ], + vcsDiff: [], + fileList: (path) => { + if (path) return [] + return files.map((name) => ({ + name, + path: name, + absolute: `${directory}/${name}`, + type: "file" as const, + ignored: false, + })) + }, + fileContent: (path) => ({ type: "text", content: `contents:${path}` }), + pageMessages: () => ({ items: [] }), + }) + + await page.addInitScript( + ({ directory, server, sessionID }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem( + "opencode.global.dat:server", + JSON.stringify({ + projects: { local: [{ worktree: directory, expanded: true }] }, + lastProject: { local: directory }, + }), + ) + localStorage.setItem( + "opencode.global.dat:layout", + JSON.stringify({ review: { diffStyle: "split", panelOpened: true } }), + ) + localStorage.setItem( + "opencode.global.dat:review-panel-v2", + JSON.stringify({ sidebarOpened: true, sidebarWidth: 240, expandMode: "collapse" }), + ) + localStorage.setItem( + "opencode.window.browser.dat:tabs", + JSON.stringify([{ type: "session", server, sessionId: sessionID }]), + ) + }, + { directory, server, sessionID }, + ) +} diff --git a/packages/app/e2e/regression/legacy-new-session.spec.ts b/packages/app/e2e/regression/legacy-new-session.spec.ts new file mode 100644 index 000000000000..45cd64adcc69 --- /dev/null +++ b/packages/app/e2e/regression/legacy-new-session.spec.ts @@ -0,0 +1,41 @@ +import { expect, test } from "@playwright/test" +import { base64Encode } from "@opencode-ai/core/util/encode" +import { mockOpenCodeServer } from "../utils/mock-server" + +const draftID = "draft_legacy_new_session" +const directory = "C:/OpenCode/LegacyNewSession" +const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` + +test("redirects a draft to the legacy new-session route", async ({ page }) => { + await mockOpenCodeServer(page, { + directory, + project: { + id: "proj_legacy_new_session", + worktree: directory, + vcs: "git", + name: "legacy-new-session", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { all: [], connected: [], default: {} }, + sessions: [], + pageMessages: () => ({ items: [] }), + }) + await page.addInitScript( + ({ directory, draftID, server }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: false } })) + localStorage.setItem("app-version.v1", JSON.stringify({ version: "1.17.20" })) + localStorage.setItem( + "opencode.window.browser.dat:tabs", + JSON.stringify([{ type: "draft", draftID, server, directory }]), + ) + }, + { directory, draftID, server }, + ) + + await page.goto(`/new-session?draftId=${draftID}`) + + await expect(page).toHaveURL(`/${base64Encode(directory)}/session`) + await expect(page.locator("header[data-tauri-drag-region]")).toBeVisible() + await expect(page.locator('[data-component="prompt-input"]')).toBeVisible() +}) diff --git a/packages/app/e2e/regression/new-session-panel-corner.spec.ts b/packages/app/e2e/regression/new-session-panel-corner.spec.ts new file mode 100644 index 000000000000..a17b8c081709 --- /dev/null +++ b/packages/app/e2e/regression/new-session-panel-corner.spec.ts @@ -0,0 +1,83 @@ +import { expect, test } from "@playwright/test" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectAppVisible } from "../utils/waits" + +const draftID = "draft_new_session_panel_corner" +const directory = "C:/OpenCode/NewSessionPanelCorner" +const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` + +test.use({ + viewport: { width: 935, height: 522 }, + deviceScaleFactor: 1, +}) + +test("matches the rounded panel corners to the dark new-session background", async ({ page }, testInfo) => { + await mockOpenCodeServer(page, { + directory, + project: { + id: "proj_new_session_panel_corner", + worktree: directory, + vcs: "git", + name: "new-session-panel-corner", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { all: [], connected: [], default: {} }, + sessions: [], + pageMessages: () => ({ items: [] }), + }) + await page.addInitScript( + ({ directory, draftID, server }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem("opencode-theme-id", "oc-2") + localStorage.setItem("opencode-color-scheme", "dark") + localStorage.setItem( + "opencode.global.dat:server", + JSON.stringify({ + projects: { local: [{ worktree: directory, expanded: true }] }, + lastProject: { local: directory }, + }), + ) + localStorage.setItem( + "opencode.window.browser.dat:tabs", + JSON.stringify([{ type: "draft", draftID, server, directory }]), + ) + }, + { directory, draftID, server }, + ) + + await page.goto(`/new-session?draftId=${draftID}`) + await expectAppVisible(page.locator('[data-component="prompt-input"]')) + await expect(page.locator("html")).toHaveAttribute("data-color-scheme", "dark") + const panel = page.locator('main div[class*="rounded-[10px]"][class*="overflow-hidden"]') + await expect(panel).toHaveCount(1) + const box = await panel.boundingBox() + if (!box) throw new Error("New-session panel bounds are unavailable") + + const screenshot = await page.screenshot({ path: testInfo.outputPath("new-session-dark.png") }) + const corners = await page.evaluate( + async ({ source, points }) => { + const image = new Image() + image.src = source + await image.decode() + const canvas = document.createElement("canvas") + canvas.width = image.naturalWidth + canvas.height = image.naturalHeight + const context = canvas.getContext("2d") + if (!context) throw new Error("2D canvas is unavailable") + context.drawImage(image, 0, 0) + return points.map((point) => Array.from(context.getImageData(point.x, point.y, 1, 1).data)) + }, + { + source: `data:image/png;base64,${screenshot.toString("base64")}`, + points: [ + { x: Math.floor(box.x), y: Math.floor(box.y) }, + { x: Math.ceil(box.x + box.width) - 1, y: Math.floor(box.y) }, + { x: Math.floor(box.x), y: Math.ceil(box.y + box.height) - 1 }, + { x: Math.ceil(box.x + box.width) - 1, y: Math.ceil(box.y + box.height) - 1 }, + ], + }, + ) + + expect(corners.every(([red, green, blue, alpha]) => red <= 8 && green <= 8 && blue <= 8 && alpha === 255)).toBe(true) +}) diff --git a/packages/app/e2e/regression/prompt-input-v2-command-draft.spec.ts b/packages/app/e2e/regression/prompt-input-v2-command-draft.spec.ts new file mode 100644 index 000000000000..50dcc8820b45 --- /dev/null +++ b/packages/app/e2e/regression/prompt-input-v2-command-draft.spec.ts @@ -0,0 +1,50 @@ +import { expect, test } from "@playwright/test" +import { base64Encode } from "@opencode-ai/core/util/encode" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectAppVisible } from "../utils/waits" + +const directory = "C:/OpenCode/PromptInputV2Editing" +const projectID = "proj_prompt_input_v2_editing" +const sessionID = "ses_prompt_input_v2_editing" + +test("preserves the draft when a populated command menu triggers a built-in", async ({ page }) => { + await mockOpenCodeServer(page, { + directory, + project: { + id: projectID, + worktree: directory, + vcs: "git", + name: "prompt-input-v2-editing", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { all: [], connected: [], default: {} }, + sessions: [ + { + id: sessionID, + slug: "prompt-input-v2-editing", + projectID, + directory, + title: "Prompt input V2 editing", + version: "dev", + time: { created: 1700000000000, updated: 1700000000000 }, + }, + ], + pageMessages: () => ({ items: [] }), + }) + await page.addInitScript(() => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + }) + + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) + const composer = page.locator('[data-component="prompt-input-v2"]') + const input = composer.locator('[data-component="prompt-input"]') + await expectAppVisible(composer) + + await input.fill("keep me") + await composer.getByRole("button", { name: "Add images and files" }).click() + await page.getByRole("menuitem", { name: "Commands" }).click() + await page.locator('[data-suggestion-id="model.choose"]').click() + + await expect(input).toHaveText("keep me") +}) diff --git a/packages/app/e2e/regression/prompt-thinking-level.spec.ts b/packages/app/e2e/regression/prompt-thinking-level.spec.ts index d12684c143fd..9315c347c036 100644 --- a/packages/app/e2e/regression/prompt-thinking-level.spec.ts +++ b/packages/app/e2e/regression/prompt-thinking-level.spec.ts @@ -54,19 +54,16 @@ test("shows the V2 thinking level control while relevant", async ({ page }) => { }) await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) - const composer = page.locator('[data-component="session-composer"]') + const composer = page.locator('[data-component="prompt-input-v2"]') const input = composer.locator('[data-component="prompt-input"]') - const control = composer.locator('[data-component="prompt-variant-control"]') + const control = composer.getByRole("button", { name: "Choose model variant" }) await expectAppVisible(composer) await idleComposer(page) - await expect(control).toBeHidden() - - await composer.hover() await expect(control).toBeVisible() - await control.locator('[data-action="prompt-model-variant"]').click() - const high = page.getByRole("option", { name: "high" }) + await control.click() + const high = page.getByRole("menuitemradio", { name: "high" }) await expect(high).toBeVisible() await page.mouse.move(0, 0) await expect(control).toBeVisible() diff --git a/packages/app/e2e/regression/remote-session-settings.spec.ts b/packages/app/e2e/regression/remote-session-settings.spec.ts new file mode 100644 index 000000000000..c17ae5c1c66e --- /dev/null +++ b/packages/app/e2e/regression/remote-session-settings.spec.ts @@ -0,0 +1,270 @@ +import { base64Encode } from "@opencode-ai/core/util/encode" +import { expect, test, type Page, type Route } from "@playwright/test" +import { installSseTransport } from "../utils/sse-transport" + +const serverA = "http://127.0.0.1:4096" +const serverB = "http://127.0.0.1:4097" +const directoryA = "C:/server-a" +const directoryB = "/home/server-b" +const sessionA = session("ses_server_a", directoryA, "Server A session") +const childSessionA = { ...session("ses_server_a_child", directoryA, "Server A child session"), parentID: sessionA.id } +const sessionB = session("ses_server_b", directoryB, "Server B session") + +test("session settings use the remote server context", async ({ page }) => { + const permissionRequests: string[] = [] + await mockServers(page, permissionRequests) + await configureServers(page) + + await page.goto(`/server/${base64Encode(serverB)}/session/${sessionB.id}`) + await expect(page.getByText(sessionB.title).first()).toBeVisible() + await page.keyboard.press(process.platform === "darwin" ? "Meta+," : "Control+,") + + const dialog = page.locator(".settings-v2-dialog") + const autoAccept = dialog.locator('[data-action="settings-auto-accept-permissions"]') + const input = autoAccept.getByRole("switch") + await expect(autoAccept).toBeVisible() + await expect(input).toBeEnabled() + permissionRequests.length = 0 + await autoAccept.locator('[data-slot="switch-control"]').click() + await expect(input).toBeChecked() + await expect + .poll(() => + permissionRequests.some((request) => { + const url = new URL(request) + return url.origin === serverB && url.searchParams.get("directory") === directoryB + }), + ) + .toBe(true) + expect(permissionRequests.every((request) => new URL(request).origin === serverB)).toBe(true) + + await dialog.getByRole("tab", { name: "Models" }).click() + await expect(dialog.getByRole("switch", { name: "Server B Model" })).toBeEnabled() + await expect(dialog.getByRole("switch", { name: "Server A Model" })).toHaveCount(0) +}) + +test("auto-accept responds for an unfocused server session", async ({ page }) => { + const permissionRequests: string[] = [] + const permissionResponses: PermissionResponse[] = [] + const transport = await installSseTransport<{ directory: string; payload: Record }>(page, { + server: serverA, + retry: 20, + }) + await mockServers(page, permissionRequests, permissionResponses) + await configureServers(page, [ + { type: "session", server: serverA, sessionId: sessionA.id }, + { type: "session", server: serverB, sessionId: sessionB.id }, + ]) + + const hrefB = `/server/${base64Encode(serverB)}/session/${sessionB.id}` + await page.goto(`/server/${base64Encode(serverA)}/session/${sessionA.id}`) + await expect(page.getByText(sessionA.title).first()).toBeVisible() + await page.keyboard.press(process.platform === "darwin" ? "Meta+," : "Control+,") + const autoAccept = page.locator(".settings-v2-dialog").locator('[data-action="settings-auto-accept-permissions"]') + await autoAccept.locator('[data-slot="switch-control"]').click() + await expect(autoAccept.getByRole("switch")).toBeChecked() + await expect + .poll(() => + permissionRequests.some((request) => { + const url = new URL(request) + return url.origin === serverA && url.searchParams.get("directory") === directoryA + }), + ) + .toBe(true) + await page.keyboard.press("Escape") + + await page.locator(`[data-titlebar-tab-slot]:has(a[href="${hrefB}"])`).click() + await expect(page).toHaveURL(new RegExp(`${hrefB.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}$`)) + await expect(page.getByText(sessionB.title).first()).toBeVisible() + await transport.waitForConnection() + + await transport.send({ + directory: directoryA, + payload: { + id: "event-permission-background-a", + type: "permission.asked", + properties: { + id: "permission-background-a", + sessionID: sessionA.id, + permission: "bash", + patterns: ["git status"], + metadata: {}, + always: [], + }, + }, + }) + + await expect + .poll(() => permissionResponses) + .toEqual([ + { + origin: serverA, + directory: directoryA, + sessionID: sessionA.id, + permissionID: "permission-background-a", + body: { response: "once" }, + }, + ]) + + await transport.send({ + directory: directoryA, + payload: { + id: "event-permission-background-a-child", + type: "permission.asked", + properties: { + id: "permission-background-a-child", + sessionID: childSessionA.id, + permission: "bash", + patterns: ["git diff"], + metadata: {}, + always: [], + }, + }, + }) + + await expect + .poll(() => permissionResponses) + .toEqual([ + { + origin: serverA, + directory: directoryA, + sessionID: sessionA.id, + permissionID: "permission-background-a", + body: { response: "once" }, + }, + { + origin: serverA, + directory: directoryA, + sessionID: childSessionA.id, + permissionID: "permission-background-a-child", + body: { response: "once" }, + }, + ]) +}) + +type PermissionResponse = { + origin: string + directory?: string + sessionID: string + permissionID: string + body: unknown +} + +async function configureServers(page: Page, tabs: { type: "session"; server: string; sessionId: string }[] = []) { + await page.addInitScript( + ({ serverB, tabs }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem("opencode.global.dat:server", JSON.stringify({ list: [serverB] })) + localStorage.setItem("opencode.window.browser.dat:tabs", JSON.stringify(tabs)) + }, + { serverB, tabs }, + ) +} + +async function mockServers(page: Page, permissionRequests: string[], permissionResponses: PermissionResponse[] = []) { + await page.route("**/*", async (route) => { + const url = new URL(route.request().url()) + if (url.origin !== serverA && url.origin !== serverB) return route.fallback() + const remote = url.origin === serverB + const directory = remote ? directoryB : directoryA + const sessions = remote ? [sessionB] : [sessionA, childSessionA] + const requestDirectory = url.searchParams.get("directory") + const response = url.pathname.match(/^\/session\/([^/]+)\/permissions\/([^/]+)$/) + if (route.request().method() === "POST" && response) { + permissionResponses.push({ + origin: url.origin, + directory: requestDirectory ?? undefined, + sessionID: response[1]!, + permissionID: response[2]!, + body: route.request().postDataJSON(), + }) + return json(route, true) + } + if (requestDirectory && requestDirectory !== directory) return json(route, { name: "InvalidDirectory" }, 500) + if (url.pathname === "/global/event" || url.pathname === "/event") return sse(route) + if (url.pathname === "/global/health") return json(route, { healthy: true }) + if (url.pathname === "/session/status") return json(route, {}) + if (url.pathname === "/session") return json(route, sessions) + const current = sessions.find((session) => url.pathname === `/session/${session.id}`) + if (current) return json(route, current) + if (/^\/session\/[^/]+$/.test(url.pathname)) return json(route, { name: "NotFoundError" }, 404) + if (/^\/session\/[^/]+\/message$/.test(url.pathname)) return json(route, []) + if (/^\/session\/[^/]+\/(children|todo|diff)$/.test(url.pathname)) return json(route, []) + if (url.pathname === "/permission") { + permissionRequests.push(url.toString()) + return json(route, []) + } + if (["/skill", "/command", "/lsp", "/formatter", "/question", "/vcs/diff", "/pty/shells"].includes(url.pathname)) + return json(route, []) + if (["/global/config", "/config", "/provider/auth", "/mcp"].includes(url.pathname)) return json(route, {}) + if (url.pathname === "/provider") return json(route, provider(remote ? "server-b" : "server-a")) + if (url.pathname === "/agent") return json(route, [{ name: "build", mode: "primary" }]) + if (url.pathname === "/project" || url.pathname === "/project/current") { + const project = { + id: remote ? sessionB.projectID : "project-server-a", + worktree: directory, + vcs: "git", + time: { created: 1, updated: 1 }, + sandboxes: [], + } + return json(route, url.pathname === "/project" ? [project] : project) + } + if (url.pathname === "/path") + return json(route, { + state: directory, + config: directory, + worktree: directory, + directory, + home: directory, + }) + if (url.pathname === "/vcs") return json(route, { branch: "main", default_branch: "main" }) + return json(route, {}) + }) +} + +function session(id: string, directory: string, title: string) { + return { + id, + slug: id, + projectID: `project-${id}`, + directory, + title, + version: "dev", + time: { created: 1, updated: 1 }, + } +} + +function provider(id: string) { + const name = id === "server-b" ? "Server B" : "Server A" + return { + all: [ + { + id, + name: `${name} Provider`, + models: { + [id]: { + id, + name: `${name} Model`, + family: id, + release_date: "2026-01-01", + limit: { context: 200_000 }, + }, + }, + }, + ], + connected: [id], + default: { providerID: id, modelID: id }, + } +} + +function json(route: Route, body: unknown, status = 200) { + return route.fulfill({ + status, + contentType: "application/json", + headers: { "access-control-allow-origin": "*" }, + body: JSON.stringify(body), + }) +} + +function sse(route: Route) { + return route.fulfill({ status: 200, contentType: "text/event-stream", body: ": ok\n\n" }) +} diff --git a/packages/app/e2e/regression/remote-tab-busy.spec.ts b/packages/app/e2e/regression/remote-tab-busy.spec.ts new file mode 100644 index 000000000000..ad7e2e1d9906 --- /dev/null +++ b/packages/app/e2e/regression/remote-tab-busy.spec.ts @@ -0,0 +1,109 @@ +import { expect, test, type Page, type Route } from "@playwright/test" +import { base64Encode } from "@opencode-ai/core/util/encode" + +const serverA = "http://127.0.0.1:4096" +const serverB = "http://127.0.0.1:4097" +const sessionA = session("ses_server_a", "C:/server-a", "Server A session") +const sessionB = session("ses_server_b", "/home/server-b", "Server B session") + +test("tab busy indicator reflects the tab server's own session status", async ({ page }) => { + await mockServers(page) + await page.addInitScript( + ({ serverA, serverB, sessionA, sessionB }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem("opencode.global.dat:server", JSON.stringify({ list: [serverB] })) + localStorage.setItem( + "opencode.window.browser.dat:tabs", + JSON.stringify([ + { type: "session", server: serverA, sessionId: sessionA }, + { type: "session", server: serverB, sessionId: sessionB }, + ]), + ) + }, + { serverA, serverB, sessionA: sessionA.id, sessionB: sessionB.id }, + ) + + const hrefA = `/server/${base64Encode(serverA)}/session/${sessionA.id}` + const hrefB = `/server/${base64Encode(serverB)}/session/${sessionB.id}` + await page.goto(hrefA) + await expect(page.getByText(sessionA.title).first()).toBeVisible() + + // Session B is busy on server B while server A stays the active server, so the + // busy indicator must come from the tab server's status, not the active server's. + const tabB = page.locator(`[data-titlebar-tab-slot]:has(a[href="${hrefB}"])`) + await expect(tabB.locator('[data-component="session-progress-indicator-v2"]')).toBeVisible() + + const tabA = page.locator(`[data-titlebar-tab-slot]:has(a[href="${hrefA}"])`) + await expect(tabA.locator("[data-titlebar-tab-title]")).toHaveText(sessionA.title) + await expect(tabA.locator('[data-component="session-progress-indicator-v2"]')).toHaveCount(0) +}) + +function session(id: string, directory: string, title: string) { + return { + id, + slug: id, + projectID: `project-${id}`, + directory, + title, + version: "dev", + time: { created: 1, updated: 1 }, + } +} + +async function mockServers(page: Page) { + await page.route("**/*", async (route) => { + const url = new URL(route.request().url()) + if (url.origin !== serverA && url.origin !== serverB) return route.fallback() + const current = url.origin === serverA ? sessionA : sessionB + const directory = url.searchParams.get("directory") + if (directory && directory !== current.directory) return json(route, { name: "InvalidDirectory" }, 500) + if (url.pathname === "/global/event" || url.pathname === "/event") return sse(route) + if (url.pathname === "/global/health") return json(route, { healthy: true }) + if (url.pathname === "/session/status") + return json(route, url.origin === serverB ? { [sessionB.id]: { type: "busy" } } : {}) + if (url.pathname === "/session") return json(route, [current]) + if (url.pathname === `/session/${current.id}`) return json(route, current) + if (/^\/session\/[^/]+$/.test(url.pathname)) return json(route, { name: "NotFoundError" }, 404) + if (url.pathname === `/session/${current.id}/message`) return json(route, []) + if (/^\/session\/[^/]+\/(children|diff)$/.test(url.pathname)) return json(route, []) + if (["/skill", "/command", "/lsp", "/formatter", "/permission", "/question", "/vcs/diff"].includes(url.pathname)) + return json(route, []) + if (["/global/config", "/config", "/provider/auth", "/mcp"].includes(url.pathname)) return json(route, {}) + if (url.pathname === "/provider") + return json(route, { all: [], connected: [], default: { providerID: "", modelID: "" } }) + if (url.pathname === "/agent") return json(route, [{ name: "build", mode: "primary" }]) + if (url.pathname === "/project" || url.pathname === "/project/current") { + const project = { + id: current.projectID, + worktree: current.directory, + vcs: "git", + time: { created: 1, updated: 1 }, + sandboxes: [], + } + return json(route, url.pathname === "/project" ? [project] : project) + } + if (url.pathname === "/path") + return json(route, { + state: current.directory, + config: current.directory, + worktree: current.directory, + directory: current.directory, + home: current.directory, + }) + if (url.pathname === "/vcs") return json(route, { branch: "main", default_branch: "main" }) + return json(route, {}) + }) +} + +function json(route: Route, body: unknown, status = 200) { + return route.fulfill({ + status, + contentType: "application/json", + headers: { "access-control-allow-origin": "*" }, + body: JSON.stringify(body), + }) +} + +function sse(route: Route) { + return route.fulfill({ status: 200, contentType: "text/event-stream", body: ": ok\n\n" }) +} diff --git a/packages/app/e2e/regression/review-image-flash.spec.ts b/packages/app/e2e/regression/review-image-flash.spec.ts new file mode 100644 index 000000000000..dd200384d49a --- /dev/null +++ b/packages/app/e2e/regression/review-image-flash.spec.ts @@ -0,0 +1,202 @@ +import { expect, test, type Page } from "@playwright/test" +import { base64Encode } from "@opencode-ai/core/util/encode" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectAppVisible, expectSessionTitle } from "../utils/waits" + +const directory = "C:/OpenCode/ReviewImageFlashRegression" +const sessionID = "ses_review_image_flash_regression" +const title = "Review image flash regression" +const imageFile = "assets/preview.png" + +test("clicking an image file in the v2 review pane does not blank the panel", async ({ page }) => { + await openReview(page) + await installReviewFlashProbe(page) + + await page.getByRole("button", { name: /preview\.png/ }).click() + await waitForReviewFlashProbe(page, 400) + const trace = await collectReviewFlashProbe(page) + const bad = trace.samples.filter((sample) => sample.blank || sample.blackCenter) + + expect(trace.samples.length).toBeGreaterThan(0) + expect( + bad, + JSON.stringify({ bad: bad.slice(0, 8), first: trace.samples.slice(0, 8), last: trace.samples.slice(-4) }, null, 2), + ).toEqual([]) +}) + +async function openReview(page: Page) { + await page.setViewportSize({ width: 960, height: 900 }) + await page.addInitScript(() => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + }) + await mockOpenCodeServer(page, { + directory, + project: { + id: "proj_review_image_flash_regression", + worktree: directory, + vcs: "git", + name: "review-image-flash-regression", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { all: [], connected: [], default: {} }, + sessions: [ + { + id: sessionID, + slug: "review-image-flash-regression", + projectID: "proj_review_image_flash_regression", + directory, + title, + version: "dev", + time: { created: 1700000000000, updated: 1700000000000 }, + }, + ], + vcsDiff: [ + { + file: "src/example.ts", + additions: 1, + deletions: 1, + status: "modified", + patch: + "diff --git a/src/example.ts b/src/example.ts\n--- a/src/example.ts\n+++ b/src/example.ts\n@@ -1 +1 @@\n-export const value = 'before'\n+export const value = 'after'\n", + }, + { + file: imageFile, + patch: "", + additions: 1, + deletions: 0, + status: "added", + }, + ], + fileContent: async (path) => { + if (path !== imageFile) return undefined + await new Promise((resolve) => setTimeout(resolve, 250)) + return { + type: "binary", + content: "iVBORw0KGgo=", + encoding: "base64", + mimeType: "image/png", + } + }, + fileList: (path) => { + if (!path) { + return [ + { name: "assets", path: "assets", absolute: `${directory}/assets`, type: "directory", ignored: false }, + { name: "src", path: "src", absolute: `${directory}/src`, type: "directory", ignored: false }, + ] + } + if (path === "assets") { + return [ + { + name: "preview.png", + path: imageFile, + absolute: `${directory}/${imageFile}`, + type: "file", + ignored: false, + }, + ] + } + if (path === "src") { + return [ + { + name: "example.ts", + path: "src/example.ts", + absolute: `${directory}/src/example.ts`, + type: "file", + ignored: false, + }, + ] + } + return [] + }, + pageMessages: () => ({ + items: [ + { + info: { + id: "msg_review_image_flash_regression", + sessionID, + role: "user", + time: { created: 1700000000000 }, + summary: { diffs: [] }, + agent: "build", + model: { providerID: "opencode", modelID: "test" }, + }, + parts: [ + { + id: "prt_review_image_flash_regression", + sessionID, + messageID: "msg_review_image_flash_regression", + type: "text", + text: "Review this change.", + }, + ], + }, + ], + }), + }) + + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) + await expectSessionTitle(page, title) + await page.getByRole("button", { name: "Toggle review" }).click() + await expectAppVisible(page.locator('#review-panel [data-component="session-review-v2"]')) + await expectAppVisible(page.getByRole("button", { name: /preview\.png/ })) +} + +async function installReviewFlashProbe(page: Page) { + await page.evaluate(() => { + const samples: Array<{ + observedAtMs: number + blank: boolean + blackCenter: boolean + text: string + background: string + }> = [] + const startedAt = performance.now() + const sample = () => { + const panel = document.querySelector('#review-panel [data-component="session-review-v2"]') + const rect = panel?.getBoundingClientRect() + const center = rect + ? document.elementFromPoint(rect.left + rect.width / 2, rect.top + rect.height / 2) + : undefined + const background = center instanceof Element ? getComputedStyle(center).backgroundColor : "" + samples.push({ + observedAtMs: performance.now() - startedAt, + blank: !panel || panel.textContent?.trim().length === 0, + blackCenter: background === "rgb(0, 0, 0)", + text: panel?.textContent?.trim().slice(0, 80) ?? "", + background, + }) + if (performance.now() - startedAt < 500) requestAnimationFrame(sample) + } + document.addEventListener( + "click", + (event) => { + const target = event.target instanceof Element ? event.target : undefined + if (!target?.closest('[data-slot="file-tree-v2-row"]')) return + requestAnimationFrame(sample) + }, + { capture: true, once: true }, + ) + ;(window as Window & { __reviewImageFlash?: { samples: typeof samples; startedAt: number } }).__reviewImageFlash = { + samples, + startedAt, + } + }) +} + +async function waitForReviewFlashProbe(page: Page, durationMs: number) { + await page.waitForFunction((durationMs) => { + const state = (window as Window & { __reviewImageFlash?: { samples: unknown[]; startedAt: number } }) + .__reviewImageFlash + return !!state && state.samples.length > 0 && performance.now() - state.startedAt >= durationMs + }, durationMs) +} + +async function collectReviewFlashProbe(page: Page) { + return page.evaluate(() => { + return (window as Window & { __reviewImageFlash?: { samples: unknown[]; startedAt: number } }).__reviewImageFlash! + }) as Promise<{ + startedAt: number + samples: Array<{ observedAtMs: number; blank: boolean; blackCenter: boolean; text: string; background: string }> + }> +} diff --git a/packages/app/e2e/regression/review-open-file.spec.ts b/packages/app/e2e/regression/review-open-file.spec.ts new file mode 100644 index 000000000000..25ebd3a37ae6 --- /dev/null +++ b/packages/app/e2e/regression/review-open-file.spec.ts @@ -0,0 +1,163 @@ +import { base64Encode } from "@opencode-ai/core/util/encode" +import { expect, test } from "@playwright/test" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectSessionTitle } from "../utils/waits" + +const directory = "C:/OpenCode/ReviewOpenFile" +const projectID = "proj_review_open_file" +const sessionID = "ses_review_open_file" +const title = "Review open file" +const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` + +test.use({ viewport: { width: 1440, height: 900 } }) + +test("opens and searches project files inline", async ({ page }) => { + const searches: { query: string; dirs?: string; limit?: number }[] = [] + await mockOpenCodeServer(page, { + directory, + project: { + id: projectID, + worktree: directory, + vcs: "git", + name: "open-file-project", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { + all: [ + { + id: "opencode", + name: "OpenCode", + models: { test: { id: "test", name: "Test", limit: { context: 200_000 } } }, + }, + ], + connected: ["opencode"], + default: { providerID: "opencode", modelID: "test" }, + }, + sessions: [ + { + id: sessionID, + slug: sessionID, + projectID, + directory, + title, + version: "dev", + time: { created: 1700000000000, updated: 1700000000000 }, + }, + ], + vcsDiff: [fileDiff("src/changed.ts")], + fileList: (path) => { + if (path) return [] + return [ + fileNode("README.md"), + { name: "src", path: "src", absolute: `${directory}/src`, type: "directory", ignored: false }, + ] + }, + fileContent: (path) => ({ type: "text", content: `contents:${path}` }), + findFiles: (input) => { + searches.push(input) + return input.query === "nested" ? ["src/nested.ts"] : [] + }, + pageMessages: () => ({ items: [] }), + }) + await page.addInitScript( + ({ directory, server, sessionID }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem( + "opencode.global.dat:server", + JSON.stringify({ + projects: { local: [{ worktree: directory, expanded: true }] }, + lastProject: { local: directory }, + }), + ) + localStorage.setItem( + "opencode.global.dat:layout", + JSON.stringify({ review: { diffStyle: "split", panelOpened: true } }), + ) + localStorage.setItem( + "opencode.global.dat:review-panel-v2", + JSON.stringify({ sidebarOpened: false, sidebarWidth: 240, expandMode: "collapse" }), + ) + localStorage.setItem( + "opencode.window.browser.dat:tabs", + JSON.stringify([{ type: "session", server, sessionId: sessionID }]), + ) + }, + { directory, server, sessionID }, + ) + + await page.goto(`/server/${base64Encode(server)}/session/${sessionID}`) + await expectSessionTitle(page, title) + + const panel = page.locator("#review-panel") + const sidebar = panel.locator('[data-slot="session-review-v2-sidebar"]') + const sidebarToggle = panel.getByRole("button", { name: "Toggle file tree" }) + const contextButton = page.getByRole("button", { name: "View context usage" }) + await contextButton.click() + await expect(panel.getByRole("tab", { name: "Context" })).toHaveAttribute("data-selected", "") + await panel.getByRole("button", { name: "Open file" }).click() + await expect(panel.getByRole("tab", { name: "Open file" })).toHaveAttribute("data-selected", "") + await expect(sidebarToggle).toBeDisabled() + await expect(sidebar).toBeVisible() + await contextButton.click() + await expect(panel.getByRole("tab", { name: "Context" })).toHaveAttribute("data-selected", "") + await expect(sidebar).toBeHidden() + await panel.getByRole("button", { name: "Open file" }).click() + const filter = panel.getByRole("combobox", { name: "Filter files" }) + await expect(filter).toBeFocused() + await expect(panel.getByRole("tab", { name: "Open file" })).toHaveAttribute("data-selected", "") + await expect(panel.getByText("open-file-project", { exact: true })).toBeVisible() + + await panel.getByRole("button", { name: "README.md" }).click() + await expect(panel.getByRole("tab", { name: "README.md" })).toHaveAttribute("data-selected", "") + await expect(sidebarToggle).toBeEnabled() + await expect(panel.getByText("contents:README.md", { exact: true })).toBeVisible() + await expect(sidebar).toHaveCount(0) + + await panel.getByRole("button", { name: "Open file" }).click() + await expect(panel.getByRole("tab", { name: "README.md" })).toHaveCount(0) + await expect(sidebar).toBeVisible() + await filter.fill("nested") + const result = panel.getByRole("option", { name: /nested\.ts/ }) + await expect(result).toBeVisible() + const resultID = await result.getAttribute("id") + expect(resultID).toBeTruthy() + await expect(filter).toHaveAttribute("aria-activedescendant", resultID!) + await filter.press("Enter") + await expect(panel.getByRole("tab", { name: "nested.ts" })).toHaveAttribute("data-selected", "") + await expect(sidebarToggle).toBeEnabled() + await expect(panel.getByText("contents:src/nested.ts", { exact: true })).toBeVisible() + expect(searches).toContainEqual({ query: "nested", dirs: "false", limit: 200 }) + + await panel.getByRole("button", { name: "Open file" }).click() + await expect(panel.getByRole("tab", { name: "nested.ts" })).toHaveCount(1) + await expect(panel.getByRole("tab", { name: "Open file" })).toHaveAttribute("data-selected", "") + await expect(sidebarToggle).toBeDisabled() + await panel.getByRole("tab", { name: /Review/ }).click() + await expect(sidebarToggle).toBeEnabled() + await panel.getByRole("tab", { name: "Open file" }).click() + await page.keyboard.press("Control+w") + await expect(panel.getByRole("tab", { name: "Open file" })).toHaveCount(0) + await expect(panel.getByRole("tab", { name: "nested.ts" })).toHaveAttribute("data-selected", "") +}) + +function fileNode(path: string) { + return { + name: path, + path, + absolute: `${directory}/${path}`, + type: "file", + ignored: false, + } +} + +function fileDiff(file: string) { + return { + file, + before: "before\n", + after: "after\n", + additions: 1, + deletions: 1, + status: "modified", + } +} diff --git a/packages/app/e2e/regression/review-state-persistence.spec.ts b/packages/app/e2e/regression/review-state-persistence.spec.ts new file mode 100644 index 000000000000..aa42f1bb516d --- /dev/null +++ b/packages/app/e2e/regression/review-state-persistence.spec.ts @@ -0,0 +1,152 @@ +import { base64Encode } from "@opencode-ai/core/util/encode" +import { expect, test, type Page } from "@playwright/test" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectSessionTitle } from "../utils/waits" + +const directory = "C:/OpenCode/ReviewStatePersistence" +const projectID = "proj_review_state_persistence" +const sessionA = "ses_review_state_a" +const sessionB = "ses_review_state_b" +const titleA = "Alpha review state" +const titleB = "Beta review state" +const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` + +test.use({ viewport: { width: 1440, height: 900 } }) + +test("restores review mode and selected file per session", async ({ page }) => { + await setup(page) + await page.goto(sessionHref(sessionA)) + await expectSessionTitle(page, titleA) + await page.getByRole("button", { name: "Toggle review" }).click() + + await selectMode(page, "Git changes", "Branch changes") + await selectFile(page, "beta.ts") + + await switchSession(page, titleB) + await expect(page.getByRole("button", { name: "Git changes" })).toBeVisible() + await selectFile(page, "gamma.ts") + + await switchSession(page, titleA) + await expect(page.getByRole("button", { name: "Branch changes" })).toBeVisible() + await expectSelectedFile(page, "beta.ts") + await selectMode(page, "Branch changes", "Git changes") + await expectSelectedFile(page, "alpha.ts") + await selectMode(page, "Git changes", "Branch changes") + await expectSelectedFile(page, "beta.ts") + + await page.reload() + await expectSessionTitle(page, titleA) + await expect(page.getByRole("button", { name: "Branch changes" })).toBeVisible() + await expectSelectedFile(page, "beta.ts") + + await switchSession(page, titleB) + await expect(page.getByRole("button", { name: "Git changes" })).toBeVisible() + await expectSelectedFile(page, "gamma.ts") +}) + +async function selectMode(page: Page, current: string, next: string) { + await page.getByRole("button", { name: current }).click() + await page.getByRole("option", { name: next }).click() +} + +async function selectFile(page: Page, file: string) { + await page.getByRole("button", { name: file }).click() + await expectSelectedFile(page, file) +} + +async function expectSelectedFile(page: Page, file: string) { + await expect(page.locator('[data-slot="session-review-v2-file-name"]')).toHaveText(file) +} + +async function switchSession(page: Page, title: string) { + await page.locator("[data-titlebar-tab-slot]", { hasText: title }).click() + await expectSessionTitle(page, title) +} + +async function setup(page: Page) { + await mockOpenCodeServer(page, { + directory, + project: { + id: projectID, + worktree: directory, + vcs: "git", + name: "review-state-persistence", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { + all: [ + { + id: "opencode", + name: "OpenCode", + models: { test: { id: "test", name: "Test", limit: { context: 200_000 } } }, + }, + ], + connected: ["opencode"], + default: { providerID: "opencode", modelID: "test" }, + }, + sessions: [session(sessionA, titleA, 1700000000000), session(sessionB, titleB, 1700000001000)], + pageMessages: () => ({ items: [] }), + }) + await page.route(/\/vcs(?:\?.*)?$/, (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify({ branch: "feature", default_branch: "dev" }), + }), + ) + await page.route("**/vcs/diff**", (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify( + new URL(route.request().url()).searchParams.get("mode") === "branch" + ? [diff("src/alpha.ts"), diff("src/beta.ts")] + : [diff("src/alpha.ts"), diff("src/gamma.ts")], + ), + }), + ) + await page.addInitScript( + ({ directory, server, sessions }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem( + "opencode.global.dat:server", + JSON.stringify({ + projects: { local: [{ worktree: directory, expanded: true }] }, + lastProject: { local: directory }, + }), + ) + localStorage.setItem( + "opencode.window.browser.dat:tabs", + JSON.stringify(sessions.map((sessionId: string) => ({ type: "session", server, sessionId }))), + ) + }, + { directory, server, sessions: [sessionA, sessionB] }, + ) +} + +function session(id: string, title: string, created: number) { + return { + id, + slug: id, + projectID, + directory, + title, + version: "dev", + time: { created, updated: created }, + } +} + +function diff(file: string) { + return { + file, + additions: 1, + deletions: 1, + status: "modified", + patch: `diff --git a/${file} b/${file}\n--- a/${file}\n+++ b/${file}\n@@ -1 +1 @@\n-export const value = 'before'\n+export const value = 'after'\n`, + } +} + +function sessionHref(sessionID: string) { + return `/server/${base64Encode(server)}/session/${sessionID}` +} diff --git a/packages/app/e2e/regression/review-tab-switch.spec.ts b/packages/app/e2e/regression/review-tab-switch.spec.ts new file mode 100644 index 000000000000..8634166e5128 --- /dev/null +++ b/packages/app/e2e/regression/review-tab-switch.spec.ts @@ -0,0 +1,147 @@ +import { base64Encode } from "@opencode-ai/core/util/encode" +import { expect, test, type Page } from "@playwright/test" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectAppVisible, expectSessionTitle } from "../utils/waits" + +const directory = "C:/OpenCode/ReviewTabSwitch" +const projectID = "proj_review_tab_switch" +const sessionA = "ses_review_tab_a" +const sessionB = "ses_review_tab_b" +const titleA = "Alpha session" +const titleB = "Beta session" +const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` +const diffs = Array.from({ length: 2_740 }, (_, index) => + fileDiff(`src/generated-${String(index).padStart(4, "0")}.ts`), +) +// Marks the review pane DOM node so a remount (fresh node) is detectable. +const PROBE = "original" + +test.use({ viewport: { width: 1440, height: 900 } }) + +// The v2 review pane's diff data is workspace-scoped: switching between session +// tabs in the same workspace must update its parameters reactively instead of +// tearing the pane down and remounting it (which flickers). +test("keeps the v2 review pane mounted when switching session tabs in a workspace", async ({ page }) => { + await setup(page) + + await page.goto(sessionHref(sessionA)) + await expectSessionTitle(page, titleA) + + await page.getByRole("button", { name: "Toggle review" }).click() + const reviewTab = page.locator("#session-side-panel-review-tab") + const reviewTabPanel = page.locator("#session-side-panel-review-tabpanel") + await expect(reviewTab).toHaveAttribute("aria-controls", "session-side-panel-review-tabpanel") + await expect(reviewTabPanel).toHaveAttribute("id", "session-side-panel-review-tabpanel") + const review = page.locator('#review-panel [data-component="session-review-v2"]') + await expectAppVisible(review) + await expectAppVisible(page.getByRole("button", { name: "generated-0000.ts" })) + await writeProbe(page) + + await switchTab(page, titleB) + await expectSessionTitle(page, titleB) + await expectAppVisible(review) + await expectAppVisible(page.getByRole("button", { name: "generated-0000.ts" })) + expect(await readProbe(page)).toBe(PROBE) + + await switchTab(page, titleA) + await expectSessionTitle(page, titleA) + await expectAppVisible(review) + await expectAppVisible(page.getByRole("button", { name: "generated-0000.ts" })) + expect(await readProbe(page)).toBe(PROBE) + + const viewport = page.locator('#review-panel [data-slot="session-review-v2-sidebar-tree"] .scroll-view__viewport') + await viewport.hover() + await page.mouse.wheel(0, 100_000) + await expect + .poll(() => viewport.evaluate((element) => element.scrollHeight - element.clientHeight - element.scrollTop)) + .toBeLessThanOrEqual(1) + await expect(page.getByRole("button", { name: "generated-2739.ts" })).toBeVisible() +}) + +type Probed = HTMLElement & { __e2eProbe?: string } + +async function switchTab(page: Page, title: string) { + await page.locator("[data-titlebar-tab-slot]", { hasText: title }).click() +} + +async function writeProbe(page: Page) { + await page.locator('#review-panel [data-component="session-review-v2"]').evaluate((el, probe) => { + ;(el as Probed).__e2eProbe = probe + }, PROBE) +} + +async function readProbe(page: Page) { + return page.locator('#review-panel [data-component="session-review-v2"]').evaluate((el) => (el as Probed).__e2eProbe) +} + +async function setup(page: Page) { + await mockOpenCodeServer(page, { + directory, + project: { + id: projectID, + worktree: directory, + vcs: "git", + name: "review-tab-switch", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { + all: [ + { + id: "opencode", + name: "OpenCode", + models: { test: { id: "test", name: "Test", limit: { context: 200_000 } } }, + }, + ], + connected: ["opencode"], + default: { providerID: "opencode", modelID: "test" }, + }, + sessions: [session(sessionA, titleA, 1700000000000), session(sessionB, titleB, 1700000001000)], + vcsDiff: diffs, + pageMessages: () => ({ items: [] }), + }) + + await page.addInitScript( + ({ directory, server, sessions }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem( + "opencode.global.dat:server", + JSON.stringify({ + projects: { local: [{ worktree: directory, expanded: true }] }, + lastProject: { local: directory }, + }), + ) + localStorage.setItem( + "opencode.window.browser.dat:tabs", + JSON.stringify(sessions.map((sessionId: string) => ({ type: "session", server, sessionId }))), + ) + }, + { directory, server, sessions: [sessionA, sessionB] }, + ) +} + +function session(id: string, title: string, created: number) { + return { + id, + slug: id, + projectID, + directory, + title, + version: "dev", + time: { created, updated: created }, + } +} + +function sessionHref(sessionID: string) { + return `/server/${base64Encode(server)}/session/${sessionID}` +} + +function fileDiff(file: string) { + return { + file, + additions: 1, + deletions: 1, + status: "modified", + patch: `diff --git a/${file} b/${file}\n--- a/${file}\n+++ b/${file}\n@@ -1 +1 @@\n-export const value = 'before'\n+export const value = 'after'\n`, + } +} diff --git a/packages/app/e2e/regression/review-terminal-stacked.spec.ts b/packages/app/e2e/regression/review-terminal-stacked.spec.ts new file mode 100644 index 000000000000..154bab48c47f --- /dev/null +++ b/packages/app/e2e/regression/review-terminal-stacked.spec.ts @@ -0,0 +1,263 @@ +import { expect, test, type Page } from "@playwright/test" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectSessionTitle } from "../utils/waits" + +const directory = "C:/OpenCode/ReviewTerminalStacked" +const projectID = "proj_review_terminal_stacked" +const sessionID = "ses_review_terminal_stacked" +const title = "Review terminal stacked" +const branchDiffs = [ + fileDiff(".github/actions/setup-bun/action.yml", 7), + ...Array.from({ length: 2_739 }, (_, index) => + fileDiff( + `src/branch/d${String(Math.floor(index / 100)).padStart(5, "0")}/generated-${String(index).padStart(4, "0")}.ts`, + 100, + false, + ), + ), +] + +test("keeps the review tree and terminal sized when both panels are open", async ({ page }) => { + test.setTimeout(120_000) + const events: Array<{ directory: string; payload: Record }> = [] + let detailVersion = 1 + let detailFailures = 1 + await page.setViewportSize({ width: 1400, height: 900 }) + await mockOpenCodeServer(page, { + directory, + project: { + id: projectID, + worktree: directory, + vcs: "git", + name: "review-terminal-stacked", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { + all: [ + { + id: "opencode", + name: "OpenCode", + models: { test: { id: "test", name: "Test", limit: { context: 200_000 } } }, + }, + ], + connected: ["opencode"], + default: { providerID: "opencode", modelID: "test" }, + }, + sessions: [ + { + id: sessionID, + slug: "review-terminal-stacked", + projectID, + directory, + title, + version: "dev", + time: { created: 1700000000000, updated: 1700000000000 }, + }, + ], + sessionStatus: { [sessionID]: { type: "idle" } }, + pageMessages: () => ({ items: [] }), + events: () => events.splice(0, 1), + eventRetry: 16, + }) + await page.route(/\/vcs(?:\?.*)?$/, (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify({ branch: "review-pane-performance", default_branch: "dev" }), + }), + ) + await page.route("**/vcs/diff**", (route) => { + const url = new URL(route.request().url()) + const scope = url.searchParams.get("directory")?.replaceAll("\\", "/") + const detail = scope?.endsWith("/src/branch/d00027") + if (detail && detailFailures-- > 0) return route.fulfill({ status: 500, body: "retry detail" }) + return route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify( + url.searchParams.get("mode") === "branch" + ? detail + ? branchDiffs + .filter((diff) => diff.file.startsWith("src/branch/d00027/")) + .map((diff) => fileDiff(diff.file, diff.additions, true, detailVersion)) + : branchDiffs + : Array.from({ length: 7 }, (_, index) => fileDiff(`src/git-${index}.ts`, 1)), + ), + }) + }) + await page.route("**/pty", (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify({ id: "pty_review_terminal", title: "Terminal 1" }), + }), + ) + await page.route("**/pty/pty_review_terminal", (route) => + route.fulfill({ status: 200, contentType: "application/json", body: "{}" }), + ) + await page.routeWebSocket("**/pty/pty_review_terminal/connect", () => undefined) + await page.addInitScript(() => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem( + "opencode.global.dat:layout", + JSON.stringify({ review: { diffStyle: "split", panelOpened: true } }), + ) + }) + + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) + await expectSessionTitle(page, title) + await expect(page.locator("#review-panel")).toBeVisible() + await expectTree(page, 8, "git-0.ts") + + await selectMode(page, "Git changes", "Branch changes") + await expect(page.locator("#session-side-panel-review-tab")).toHaveText("Files Changed 2740") + await page.keyboard.press("Control+Backquote") + await expect(page.locator("#terminal-panel")).toBeVisible() + await expectTree(page, 2_773, "action.yml") + await expectStackGeometry(page) + + const treeViewport = page.locator('#review-panel [data-slot="session-review-v2-sidebar-tree"] .scroll-view__viewport') + await treeViewport.hover() + await page.mouse.wheel(0, 100_000) + await expect + .poll(() => treeViewport.evaluate((element) => element.scrollHeight - element.clientHeight - element.scrollTop)) + .toBeLessThanOrEqual(1) + const lastFile = page.getByRole("button", { name: "generated-2738.ts" }) + await expect(lastFile).toBeVisible() + const bottomGap = await lastFile.evaluate((element) => { + const viewport = element.closest(".scroll-view__viewport")!.getBoundingClientRect() + return viewport.bottom - element.getBoundingClientRect().bottom + }) + expect(bottomGap).toBeGreaterThanOrEqual(0) + expect(bottomGap).toBeLessThanOrEqual(16) + const lazyDiff = page.waitForRequest((request) => { + const url = new URL(request.url()) + return ( + url.pathname === "/vcs/diff" && + url.searchParams.get("directory")?.replaceAll("\\", "/").endsWith("/src/branch/d00027") === true + ) + }) + await lastFile.click() + await lazyDiff + const preview = page.locator('[data-slot="session-review-v2-diff-scroll"]') + await expect(preview).toContainText("after-1") + detailVersion = 2 + events.push(statusEvent("busy")) + await expect(page.getByRole("button", { name: "Stop" })).toBeVisible() + const refreshedDiff = page.waitForRequest((request) => { + const url = new URL(request.url()) + return ( + url.pathname === "/vcs/diff" && + url.searchParams.get("directory")?.replaceAll("\\", "/").endsWith("/src/branch/d00027") === true + ) + }) + events.push(statusEvent("idle")) + await refreshedDiff + await expect(preview).toContainText("after-2") + await selectMode(page, "Branch changes", "Git changes") + await expectTree(page, 8, "git-0.ts") + await page.getByRole("button", { name: "git-0.ts" }).click() + await selectMode(page, "Git changes", "Branch changes") + await expectTree(page, 2_773, "action.yml") + + const filter = page.getByRole("searchbox", { name: "Filter files" }) + await filter.fill("generated-2738") + await expectTree(page, 1, "generated-2738.ts") + await filter.fill("") + await expectTree(page, 2_773, "action.yml") + + await page.getByRole("button", { name: "Toggle file tree" }).click() + await expect(page.locator('[data-slot="session-review-v2-sidebar"]')).toHaveCount(0) + await expect(page.locator('#review-panel [data-component="file-tree-v2"]')).toHaveCount(0) + await page.getByRole("button", { name: "Toggle file tree" }).click() + await expectTree(page, 2_773, "action.yml") + + await page.keyboard.press("Control+Backquote") + await expect(page.locator("#terminal-panel")).toHaveCount(0) + await expectTree(page, 2_773, "action.yml") + await page.keyboard.press("Control+Backquote") + await expect(page.locator("#terminal-panel")).toBeVisible() + await expectTree(page, 2_773, "action.yml") + + await page.getByRole("button", { name: "Toggle review" }).click() + await expect(page.locator("#review-panel")).toHaveCount(0) + await page.getByRole("button", { name: "Toggle review" }).click() + await expectTree(page, 2_773, "action.yml") + await page.setViewportSize({ width: 1_000, height: 700 }) + await expectTree(page, 2_773, "action.yml") + await expectStackGeometry(page) + await page.setViewportSize({ width: 1_000, height: 120 }) + await page.setViewportSize({ width: 1_400, height: 900 }) + await expectTree(page, 2_773, "action.yml") + await expectStackGeometry(page) +}) + +async function selectMode(page: Page, current: string, next: string) { + await page.getByRole("button", { name: current }).click() + const option = page.getByRole("option", { name: next }) + await expect(option).toBeVisible() + await option.click() +} + +async function expectTree(page: Page, total: number, file: string) { + await expectMountedTree(page, total) + await expect(page.getByRole("button", { name: file })).toBeVisible() +} + +async function expectMountedTree(page: Page, total: number) { + const tree = page.locator('#review-panel [data-component="file-tree-v2"]') + await expect(tree).toHaveAttribute("data-total-rows", String(total)) + await expect + .poll(() => tree.evaluate((element) => element.querySelectorAll('[data-slot="file-tree-v2-row"]').length)) + .toBeGreaterThan(0) + const state = await tree.evaluate((element) => ({ + root: element.getBoundingClientRect().height, + viewport: element.closest(".scroll-view__viewport")!.getBoundingClientRect().height, + rows: element.querySelectorAll('[data-slot="file-tree-v2-row"]').length, + })) + expect(state.viewport).toBeGreaterThan(0) + expect(state.root).toBeGreaterThan(0) + expect(state.rows).toBeGreaterThan(0) + expect(state.rows).toBeLessThanOrEqual(60) +} + +async function expectStackGeometry(page: Page) { + const geometry = await page.evaluate(() => { + const review = document.querySelector("#review-panel")! + const terminal = document.querySelector("#terminal-panel")! + const reviewParent = review.parentElement!.getBoundingClientRect() + const terminalParent = terminal.parentElement!.getBoundingClientRect() + return { + review: review.getBoundingClientRect().height, + reviewParent: reviewParent.height, + terminal: terminal.getBoundingClientRect().height, + terminalParent: terminalParent.height, + } + }) + expect(Math.abs(geometry.review - geometry.reviewParent)).toBeLessThanOrEqual(1) + expect(Math.abs(geometry.terminal - geometry.terminalParent)).toBeLessThanOrEqual(1) +} + +function base64Encode(value: string) { + return Buffer.from(value, "utf8").toString("base64").replace(/\+/g, "-").replace(/\//g, "_").replace(/=/g, "") +} + +function statusEvent(type: "busy" | "idle") { + return { + directory, + payload: { type: "session.status", properties: { sessionID, status: { type } } }, + } +} + +function fileDiff(file: string, additions: number, loaded = true, version = 1) { + return { + file, + additions, + deletions: 0, + status: "modified", + patch: loaded + ? `diff --git a/${file} b/${file}\n--- a/${file}\n+++ b/${file}\n@@ -1 +1 @@\n-export const value = 'before'\n+export const value = 'after-${version}'\n` + : `diff --git a/${file} b/${file}\n--- a/${file}\n+++ b/${file}`, + } +} diff --git a/packages/app/e2e/regression/session-request-docks.spec.ts b/packages/app/e2e/regression/session-request-docks.spec.ts index e66cf81504ee..714d6ca96f15 100644 --- a/packages/app/e2e/regression/session-request-docks.spec.ts +++ b/packages/app/e2e/regression/session-request-docks.spec.ts @@ -1,6 +1,7 @@ import { base64Encode } from "@opencode-ai/core/util/encode" import { expect, test, type Page } from "@playwright/test" import { mockOpenCodeServer } from "../utils/mock-server" +import { installSseTransport } from "../utils/sse-transport" import { expectSessionTitle } from "../utils/waits" const directory = "C:/OpenCode/RequestDocks" @@ -38,6 +39,29 @@ test("shows a pending question dock", async ({ page }) => { await expect(question.getByRole("radio", { name: /Extended/ })).toBeVisible() await expect(page.locator('[data-component="session-composer"]')).toHaveCount(0) + const rejectRequests: string[] = [] + page.on("request", (request) => { + if (request.method() !== "POST") return + if (new URL(request.url()).pathname === "/question/question-request/reject") rejectRequests.push(request.url()) + }) + + await question.locator('[data-component="icon-button"][data-icon="chevron-down"]').click() + await expect(question).toBeVisible() + await expect(question.getByText("Which implementation should be used?")).toBeVisible() + await expect(question.getByText("Select one answer")).toBeHidden() + await expect(question.getByRole("radio", { name: /Minimal/ })).toBeHidden() + await expect(question.getByRole("radio", { name: /Extended/ })).toBeHidden() + await expect(question.getByRole("button", { name: "Dismiss" })).toBeVisible() + await expect(question.getByRole("button", { name: "Submit" })).toBeVisible() + await expect(page.locator('[data-component="question-minimized-dock"]')).toHaveCount(0) + expect(rejectRequests).toEqual([]) + + await question.locator('[data-component="icon-button"][data-icon="chevron-down"]').click() + await expect(question).toBeVisible() + await expect(question.getByText("Which implementation should be used?")).toBeVisible() + await expect(question.getByRole("radio", { name: /Minimal/ })).toBeVisible() + expect(rejectRequests).toEqual([]) + await question.getByRole("radio", { name: /Minimal/ }).click() const reply = page.waitForRequest( (request) => request.method() === "POST" && new URL(request.url()).pathname === "/question/question-request/reply", @@ -77,6 +101,67 @@ test("shows a pending permission dock", async ({ page }) => { expect(request.postDataJSON()).toEqual({ response: "once" }) }) +test("restores the draft caret before typing after a request dock closes", async ({ page }) => { + const transport = await installSseTransport(page, { + server: `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}`, + retry: 20, + }) + await mockServer(page, { questions: [] }) + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) + await transport.waitForConnection() + await expectSessionTitle(page, title) + + const editor = page.locator('[data-component="prompt-input"][contenteditable="true"]') + const draft = "keep the caret at the end" + await editor.fill(draft) + await page.evaluate(() => new Promise((resolve) => requestAnimationFrame(() => resolve()))) + for (let index = 0; index < 4; index++) await page.keyboard.press("ArrowLeft") + const cursor = draft.length - 4 + await expect + .poll(() => + editor.evaluate((element) => { + const selection = window.getSelection() + if (!selection?.rangeCount || !element.contains(selection.anchorNode)) return -1 + const range = selection.getRangeAt(0).cloneRange() + range.selectNodeContents(element) + range.setEnd(selection.anchorNode!, selection.anchorOffset) + return range.toString().length + }), + ) + .toBe(cursor) + await transport.send({ + directory, + payload: { + type: "question.asked", + properties: { + id: "question-caret", + sessionID, + questions: [ + { + header: "Continue", + question: "Continue?", + options: [{ label: "Yes", description: "Continue the session" }], + }, + ], + tool: { messageID: "message-caret", callID: "call-caret" }, + }, + }, + }) + const question = page.locator('[data-component="dock-prompt"][data-kind="question"]') + await expect(question).toBeVisible() + await expect(editor).toHaveCount(0) + + await transport.send({ + directory, + payload: { type: "question.rejected", properties: { sessionID, requestID: "question-caret" } }, + }) + await expect(question).toHaveCount(0) + await expect(editor).toBeVisible() + await page.keyboard.press("x") + + await expect(editor).toHaveText(`${draft.slice(0, cursor)}x${draft.slice(cursor)}`) +}) + async function mockServer( page: Page, requests: { diff --git a/packages/app/e2e/regression/session-timeline-accessibility.spec.ts b/packages/app/e2e/regression/session-timeline-accessibility.spec.ts new file mode 100644 index 000000000000..598763c02253 --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-accessibility.spec.ts @@ -0,0 +1,22 @@ +import { expect, test } from "@playwright/test" +import { assistantMessage, setupTimeline, shell, userMessage } from "../performance/timeline-stability/fixture" + +test("space activates a focused timeline button instead of scrolling", async ({ page }) => { + const shellID = "prt_space_button_shell" + await setupTimeline(page, { + messages: [userMessage(), assistantMessage([shell(shellID, "completed", lines(5))])], + settings: { shellToolPartsExpanded: false }, + reducedMotion: true, + }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + const trigger = page.locator(`[data-timeline-part-id="${shellID}"] [data-slot="collapsible-trigger"]`) + await trigger.focus() + const before = await scroller.evaluate((element) => element.scrollTop) + await trigger.press("Space") + await expect(trigger).toHaveAttribute("aria-expanded", "true") + expect(await scroller.evaluate((element) => element.scrollTop)).toBe(before) +}) + +function lines(count: number) { + return Array.from({ length: count }, (_, index) => `line ${index + 1}`).join("\n") +} diff --git a/packages/app/e2e/regression/session-timeline-context-resize.spec.ts b/packages/app/e2e/regression/session-timeline-context-resize.spec.ts index 9ed5906bb045..a9a4738da928 100644 --- a/packages/app/e2e/regression/session-timeline-context-resize.spec.ts +++ b/packages/app/e2e/regression/session-timeline-context-resize.spec.ts @@ -1,6 +1,13 @@ import { expect, test, type Page } from "@playwright/test" import { mockOpenCodeServer } from "../utils/mock-server" import { expectAppVisible, expectSessionTitle } from "../utils/waits" +import { + analyzeVisualObservations, + defineVisualRegions, + startVisualProbe, + stopVisualProbe, + visualPlan, +} from "../utils/visual-stability" const directory = "C:/OpenCode/ContextResizeRegression" const projectID = "proj_context_resize_regression" @@ -36,6 +43,82 @@ test.describe("regression: session timeline context group resize", () => { expect(visibleOverlap).toEqual([]) expect(samples.at(-1)?.expanded).toBe("true") }) + + test("paints a stable exploring to explored transition", async ({ page }) => { + const events: { directory: string; payload: Record }[] = [] + await page.setViewportSize({ width: 1400, height: 900 }) + await mockServer(page, events, [ + ...Array.from({ length: 8 }, (_, index) => turn(index, false)).flat(), + ...turn(10, true, "running"), + ]) + await configurePage(page) + + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) + await expectSessionTitle(page, title) + const devtools = await page.context().newCDPSession(page) + await devtools.send("Emulation.setCPUThrottlingRate", { rate: 4 }) + const context = page.locator(`[data-timeline-part-ids="${contextIDs.join(",")}"]`).first() + await expectAppVisible(context) + await expect(context.locator('[data-component="tool-status-title"]')).toHaveAttribute("aria-label", "Exploring") + + const contextSelector = `[data-timeline-part-ids="${contextIDs.join(",")}"]` + const regions = defineVisualRegions({ + status: { + selector: `${contextSelector} [data-component="tool-status-title"]`, + opacitySelectors: ['[data-slot="tool-status-active"]', '[data-slot="tool-status-done"]'], + }, + context: { selector: contextSelector, closest: '[data-timeline-row="AssistantPart"]' }, + following: { + selector: `[data-timeline-part-id="${followingTextID}"]`, + closest: '[data-timeline-row="AssistantPart"]', + }, + }) + await startVisualProbe(page, regions) + for (const [index, delay] of [120, 350, 80, 500].entries()) { + events.push({ + directory, + payload: { + type: "message.part.updated", + properties: { + part: contextTool( + contextIDs[index]!, + id("msg_assistant", 10), + ["read", "glob", "grep", "list"][index]!, + [ + { filePath: "src/recent-a.ts" }, + { path: directory, pattern: "**/*.ts" }, + { path: directory, pattern: "Explored" }, + { path: "src" }, + ][index]!, + ), + }, + }, + }) + await page.waitForTimeout(delay) + } + + await expect(context.locator('[data-component="tool-status-title"]')).toHaveAttribute("aria-label", "Explored") + await page.waitForTimeout(700) + const trace = await stopVisualProbe(page) + const labels = trace.samples + .map((sample) => sample.regions.status?.label) + .filter((value): value is string => !!value) + .filter((value, index, all) => value !== all[index - 1]) + const issues = analyzeVisualObservations( + trace.samples, + visualPlan(regions, [ + { type: "required", regions: ["context", "following"] }, + { type: "opacity", regions: "all" }, + { type: "continuity", regions: "all" }, + { type: "motion", regions: "all" }, + { type: "label-stability", regions: "all" }, + { type: "flow", regions: ["context", "following"] }, + ]), + ) + + expect(labels).toEqual(["Exploring", "Explored"]) + expect(issues, JSON.stringify(trace.samples, null, 2)).toEqual([]) + }) }) async function configurePage(page: Page) { @@ -128,7 +211,7 @@ async function sampleExpansion(page: Page) { ) } -function turn(index: number, target: boolean): Message[] { +function turn(index: number, target: boolean, status: "running" | "completed" = "completed"): Message[] { const userID = id("msg_user", index) const assistantID = id("msg_assistant", index) return [ @@ -163,10 +246,22 @@ function turn(index: number, target: boolean): Message[] { }, parts: target ? [ - contextTool(contextIDs[0]!, assistantID, "read", { filePath: "src/recent-a.ts", offset: 0, limit: 120 }), - contextTool(contextIDs[1]!, assistantID, "glob", { path: directory, pattern: "**/*.ts" }), - contextTool(contextIDs[2]!, assistantID, "grep", { path: directory, pattern: "Explored", include: "*.ts" }), - contextTool(contextIDs[3]!, assistantID, "list", { path: "src" }), + contextTool( + contextIDs[0]!, + assistantID, + "read", + { filePath: "src/recent-a.ts", offset: 0, limit: 120 }, + status, + ), + contextTool(contextIDs[1]!, assistantID, "glob", { path: directory, pattern: "**/*.ts" }, status), + contextTool( + contextIDs[2]!, + assistantID, + "grep", + { path: directory, pattern: "Explored", include: "*.ts" }, + status, + ), + contextTool(contextIDs[3]!, assistantID, "list", { path: "src" }, status), { id: followingTextID, sessionID, @@ -188,7 +283,13 @@ function turn(index: number, target: boolean): Message[] { ] } -function contextTool(partID: string, messageID: string, tool: string, input: Record) { +function contextTool( + partID: string, + messageID: string, + tool: string, + input: Record, + status: "running" | "completed" = "completed", +) { return { id: partID, sessionID, @@ -197,7 +298,7 @@ function contextTool(partID: string, messageID: string, tool: string, input: Rec callID: `call_${partID}`, tool, state: { - status: "completed", + status, input, output: `Completed ${tool}.\n${"detail line\n".repeat(8)}`, title: input.filePath || input.path || input.pattern || "completed", @@ -207,13 +308,19 @@ function contextTool(partID: string, messageID: string, tool: string, input: Rec } } -async function mockServer(page: Page) { +async function mockServer( + page: Page, + events: { directory: string; payload: Record }[] = [], + fixtureMessages = messages, +) { await mockOpenCodeServer(page, { directory, project: project(), provider: provider(), sessions: [session()], - pageMessages: () => ({ items: messages }), + pageMessages: () => ({ items: fixtureMessages }), + events: () => events.splice(0, 1), + eventRetry: 50, }) } diff --git a/packages/app/e2e/regression/session-timeline-context-state.spec.ts b/packages/app/e2e/regression/session-timeline-context-state.spec.ts new file mode 100644 index 000000000000..37878325e14d --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-context-state.spec.ts @@ -0,0 +1,31 @@ +import { expect, test } from "@playwright/test" +import { + assistantMessage, + partUpdated, + setupTimeline, + toolPart, + userMessage, +} from "../performance/timeline-stability/fixture" + +test("preserves a collapsed context group through count and status updates", async ({ page }) => { + const ids = ["prt_closed_01_read", "prt_closed_02_glob"] + const inputs = { + read: { filePath: "src/a.ts", offset: 0, limit: 120 }, + glob: { path: ".", pattern: "**/*.ts" }, + } + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage( + [toolPart(ids[0]!, "read", "running", inputs.read), toolPart(ids[1]!, "glob", "running", inputs.glob)], + { completed: false }, + ), + ], + }) + const group = page.locator(`[data-timeline-part-ids="${ids.join(",")}"]`) + const trigger = group.locator('[data-slot="collapsible-trigger"]') + await expect(trigger).toHaveAttribute("aria-expanded", "false") + await timeline.send(partUpdated(toolPart(ids[0]!, "read", "completed", inputs.read)), 100) + await timeline.send(partUpdated(toolPart(ids[1]!, "glob", "completed", inputs.glob)), 300) + await expect(trigger).toHaveAttribute("aria-expanded", "false") +}) diff --git a/packages/app/e2e/regression/session-timeline-file-projection.spec.ts b/packages/app/e2e/regression/session-timeline-file-projection.spec.ts new file mode 100644 index 000000000000..a591ff9470f6 --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-file-projection.spec.ts @@ -0,0 +1,52 @@ +import { expect, test } from "@playwright/test" +import { assistantMessage, setupTimeline, toolPart, userMessage } from "../performance/timeline-stability/fixture" + +test("renders completed write content", async ({ page }) => { + const id = "prt_file_projection_write" + await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + toolPart(id, "write", "completed", { filePath: "src/write.ts", content: "export const written = true\n" }), + ]), + ], + settings: { editToolPartsExpanded: true }, + }) + + await expect(page.locator(`[data-timeline-part-id="${id}"] [data-component="write-content"]`)).toBeVisible() +}) + +test("renders a completed single-file patch", async ({ page }) => { + const id = "prt_file_projection_single_patch" + await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + toolPart( + id, + "patch", + "completed", + { files: ["src/a.ts"] }, + { + metadata: { + files: [ + { + filePath: "src/a.ts", + relativePath: "src/a.ts", + type: "update", + additions: 1, + deletions: 1, + before: "export const value = 1\n", + after: "export const value = 2\n", + }, + ], + }, + }, + ), + ]), + ], + settings: { editToolPartsExpanded: true }, + }) + + await expect(page.locator(`[data-timeline-part-id="${id}"] [data-component="apply-patch-file-diff"]`)).toBeVisible() +}) diff --git a/packages/app/e2e/regression/session-timeline-file-state.spec.ts b/packages/app/e2e/regression/session-timeline-file-state.spec.ts new file mode 100644 index 000000000000..f0871a0da3e4 --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-file-state.spec.ts @@ -0,0 +1,94 @@ +import { expect, test } from "@playwright/test" +import { + assistantMessage, + partUpdated, + setupTimeline, + toolPart, + userMessage, +} from "../performance/timeline-stability/fixture" + +test("updates edit diagnostics without resetting manual collapse state", async ({ page }) => { + const editID = "prt_diagnostics_edit" + const base = editPart(editID, []) + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistantMessage([base])], + settings: { editToolPartsExpanded: true }, + }) + const trigger = page.locator(`[data-timeline-part-id="${editID}"] [data-slot="collapsible-trigger"]`).first() + await trigger.click() + await expect(trigger).toHaveAttribute("aria-expanded", "false") + await timeline.send( + partUpdated(editPart(editID, [diagnostic("First failure", 2), diagnostic("Second failure", 4)])), + 300, + ) + await expect(trigger).toHaveAttribute("aria-expanded", "false") + await timeline.send(partUpdated(editPart(editID, [])), 300) + await expect(trigger).toHaveAttribute("aria-expanded", "false") +}) + +test("preserves nested patch file state through outer collapse and reopen", async ({ page }) => { + const patchID = "prt_nested_patch" + const files = [patchFile("src/a.ts", "update"), patchFile("src/b.ts", "add"), patchFile("src/old.ts", "delete")] + await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + toolPart( + patchID, + "patch", + "completed", + { files: files.map((file) => file.filePath) }, + { metadata: { files } }, + ), + ]), + ], + settings: { editToolPartsExpanded: true }, + }) + const wrapper = page.locator(`[data-timeline-part-id="${patchID}"]`) + const outer = wrapper.locator('[data-slot="collapsible-trigger"]').first() + const deleted = wrapper.locator('[data-scope="apply-patch"] [data-type="delete"]') + await deleted.getByRole("button").click() + await expect(deleted.getByRole("button")).toHaveAttribute("aria-expanded", "true") + await outer.click() + await expect(outer).toHaveAttribute("aria-expanded", "false") + await outer.click() + await expect(outer).toHaveAttribute("aria-expanded", "true") + await expect(deleted.getByRole("button")).toHaveAttribute("aria-expanded", "true") +}) + +function patchFile(filePath: string, type: "add" | "update" | "delete") { + return { + filePath, + relativePath: filePath, + type, + additions: type === "delete" ? 0 : 4, + deletions: type === "add" ? 0 : 3, + before: type === "add" ? undefined : source(false), + after: type === "delete" ? undefined : source(true), + } +} + +function editPart(id: string, diagnostics: Record[]) { + return toolPart( + id, + "edit", + "completed", + { filePath: "src/edit.ts" }, + { + metadata: { + filediff: { file: "src/edit.ts", additions: 1, deletions: 1, before: source(false), after: source(true) }, + diagnostics, + }, + }, + ) +} + +function diagnostic(message: string, line: number) { + return { message, severity: 1, range: { start: { line, character: 0 }, end: { line, character: 2 } } } +} + +function source(changed: boolean) { + return Array.from({ length: 12 }, (_, index) => `export const value${index} = ${changed ? index + 1 : index}\n`).join( + "", + ) +} diff --git a/packages/app/e2e/regression/session-timeline-history-root.spec.ts b/packages/app/e2e/regression/session-timeline-history-root.spec.ts new file mode 100644 index 000000000000..e5ef7998ea7f --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-history-root.spec.ts @@ -0,0 +1,242 @@ +import { base64Encode } from "@opencode-ai/core/util/encode" +import { expect, test, type Page } from "@playwright/test" +import { + assistantMessage, + directory, + messageUpdated, + project, + session, + sessionID, + status, + textPart, + title, + userID, + userMessage, +} from "../performance/timeline-stability/fixture" +import { mockOpenCodeServer } from "../utils/mock-server" +import { installSseTransport } from "../utils/sse-transport" +import { expectSessionTitle } from "../utils/waits" + +const initialPageSize = 20 +const historyPageSize = 200 +const assistants = Array.from({ length: initialPageSize + 1 }, (_, index) => + assistantMessage([textPart(`prt_history_root_${index}`, `Assistant response ${index}`)], { + id: `msg_${String(index + 1001).padStart(4, "0")}_history_root_assistant`, + parentID: userID, + created: 1700000001000 + index * 1_000, + completed: index < initialPageSize, + }), +) +const messages = [userMessage(), ...assistants] +const lastAssistant = assistants.at(-1)! +const lastPartID = assistants.at(-1)!.parts[0]!.id +const userPartID = `prt_${userID}_text` +const completed = { + ...lastAssistant.info, + time: { ...lastAssistant.info.time, completed: lastAssistant.info.time.created + 15_000 }, +} +const scenarios = [ + { name: "completion", info: completed, idleFirst: false, interrupted: false }, + { + name: "interruption", + info: { ...completed, error: { name: "MessageAbortedError", data: { message: "Stopped" } } }, + idleFirst: true, + interrupted: true, + }, +] as const + +test.use({ viewport: { width: 646, height: 1385 } }) + +for (const scenario of scenarios) { + test(`keeps visible timeline content visible through ${scenario.name}`, async ({ page }) => { + const requests: { before?: string; phase: "start" | "end" }[] = [] + const pages: { before?: string; limit: number }[] = [] + const roots: { sessionID: string; messageID: string }[] = [] + const sequence: string[] = [] + const history = Promise.withResolvers() + const transport = await installSseTransport<{ directory: string; payload: Record }>(page, { + server: `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}`, + retry: 20, + }) + await mockOpenCodeServer(page, { + directory, + project: project(), + provider: { + all: [ + { + id: "opencode", + name: "OpenCode", + models: { + "claude-opus-4-6": { + id: "claude-opus-4-6", + name: "Claude Opus 4.6", + limit: { context: 200_000 }, + }, + }, + }, + ], + connected: ["opencode"], + default: { providerID: "opencode", modelID: "claude-opus-4-6" }, + }, + sessions: [session()], + sessionStatus: { [sessionID]: { type: "busy" } }, + beforeMessagesResponse: (request) => (request.before ? history.promise : Promise.resolve()), + onMessages: (request) => { + requests.push(request) + sequence.push(`messages:${request.phase}:${request.before ?? "latest"}`) + }, + onMessage: (request) => { + roots.push(request) + sequence.push(`message:${request.messageID}`) + }, + message: (requestedSessionID, messageID) => { + if (requestedSessionID !== sessionID) return + return messages.find((item) => item.info.id === messageID) + }, + pageMessages: (_, limit, before) => { + pages.push({ before, limit }) + const end = before ? messages.findIndex((message) => message.info.id === before) : messages.length + const start = Math.max(0, end - limit) + return { + items: messages.slice(start, end), + cursor: start > 0 ? messages[start]!.info.id : undefined, + } + }, + }) + await page.addInitScript(() => { + const visibleParts = () => { + const virtual = document.querySelector("[data-timeline-virtual-content]") + const viewport = virtual?.closest(".scroll-view__viewport") + const view = viewport?.getBoundingClientRect() + if (!viewport || !view) return [] + return [...viewport.querySelectorAll("[data-timeline-part-id]")] + .filter((part) => { + const rect = part.getBoundingClientRect() + return rect.width > 0 && rect.height > 0 && rect.bottom > view.top && rect.top < view.bottom + }) + .flatMap((part) => (part.dataset.timelinePartId ? [part.dataset.timelinePartId] : [])) + } + const state = { + armed: false, + hidden: false, + visibleParts: [] as string[], + samples: 0, + stop: false, + arm() { + state.visibleParts = visibleParts() + state.armed = true + }, + } + ;(window as Window & { __historyRootProbe?: typeof state }).__historyRootProbe = state + const sample = () => { + if (state.armed) { + const virtual = document.querySelector("[data-timeline-virtual-content]") + const viewport = virtual?.closest(".scroll-view__viewport") + const view = viewport?.getBoundingClientRect() + const visible = (partID: string) => { + const part = viewport?.querySelector(`[data-timeline-part-id="${CSS.escape(partID)}"]`) + const rect = part?.getBoundingClientRect() + return ( + !!rect && !!view && rect.width > 0 && rect.height > 0 && rect.bottom > view.top && rect.top < view.bottom + ) + } + if (!virtual || state.visibleParts.length === 0 || state.visibleParts.some((partID) => !visible(partID))) + state.hidden = true + state.samples++ + } + if (!state.stop) requestAnimationFrame(() => setTimeout(sample, 0)) + } + requestAnimationFrame(() => setTimeout(sample, 0)) + }) + + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) + await transport.waitForConnection() + await expectSessionTitle(page, title) + await expect(page.locator(`[data-timeline-part-id="${lastPartID}"]`)).toBeVisible() + await expect(page.locator(`[data-timeline-part-id="${userPartID}"]`)).toBeVisible() + await expect.poll(() => requests.filter((request) => request.phase === "start").length).toBe(2) + expect(requests.filter((request) => request.phase === "end")).toHaveLength(1) + expect(sequence.slice(0, 4)).toEqual([ + "messages:start:latest", + "messages:end:latest", + `message:${userID}`, + `messages:start:${messages.at(-initialPageSize)!.info.id}`, + ]) + await expect(page.locator('[data-timeline-part-id^="prt_history_root_"]')).toHaveCount(initialPageSize) + await page.evaluate(() => { + ;( + window as Window & { + __historyRootProbe?: { arm(): void } + } + ).__historyRootProbe!.arm() + }) + await waitForProbeSamples(page, 0) + expect(await visibleContentHidden(page)).toBe(false) + const beforeHistory = await probeSamples(page) + history.resolve() + await expect(page.locator('[data-timeline-part-id^="prt_history_root_"]')).toHaveCount(assistants.length) + await expect.poll(() => requests.filter((request) => request.phase === "end").length).toBe(2) + await expect(page.getByRole("button", { name: "Stop" })).toBeVisible() + await waitForProbeSamples(page, beforeHistory) + expect(pages).toEqual([ + { before: undefined, limit: initialPageSize }, + { before: messages.at(-initialPageSize)!.info.id, limit: historyPageSize }, + ]) + expect(roots).toEqual([{ sessionID, messageID: userID }]) + + const message = messageUpdated(scenario.info) + const idle = status("idle") + for (const event of scenario.idleFirst ? [idle, message] : [message, idle]) { + const beforeEvent = await probeSamples(page) + await transport.send(event) + if (event === idle) await expect(page.getByRole("button", { name: "Stop" })).toHaveCount(0) + if (event === message && scenario.interrupted) + await expect(page.getByText("Interrupted", { exact: true })).toBeVisible() + await waitForProbeSamples(page, beforeEvent) + const current = await timelineState(page) + expect(current, JSON.stringify(current)).toMatchObject({ virtual: true }) + expect(current.rows, JSON.stringify(current)).toBeGreaterThan(0) + } + + expect(requests[0]).toEqual({ before: undefined, phase: "start", sessionID }) + expect(requests[1]).toEqual({ before: undefined, phase: "end", sessionID }) + await expect(page.getByRole("button", { name: "Stop" })).toHaveCount(0) + await expect(page.locator('[data-timeline-row="bottom-spacer"]')).toBeVisible() + if (scenario.interrupted) await expect(page.getByText("Interrupted", { exact: true })).toBeVisible() + expect( + await page.evaluate(() => { + const state = (window as Window & { __historyRootProbe?: { hidden: boolean; stop: boolean } }) + .__historyRootProbe! + state.stop = true + return state.hidden + }), + ).toBe(false) + }) +} + +function timelineState(page: Page) { + return page.evaluate(() => ({ + virtual: !!document.querySelector("[data-timeline-virtual-content]"), + rows: document.querySelectorAll("[data-timeline-key]").length, + })) +} + +function probeSamples(page: Page) { + return page.evaluate( + () => (window as Window & { __historyRootProbe?: { samples: number } }).__historyRootProbe!.samples, + ) +} + +async function waitForProbeSamples(page: Page, after: number) { + await page.waitForFunction( + (after) => + (window as Window & { __historyRootProbe?: { samples: number } }).__historyRootProbe!.samples >= after + 3, + after, + ) +} + +function visibleContentHidden(page: Page) { + return page.evaluate( + () => (window as Window & { __historyRootProbe?: { hidden: boolean } }).__historyRootProbe!.hidden, + ) +} diff --git a/packages/app/e2e/regression/session-timeline-lifecycle-state.spec.ts b/packages/app/e2e/regression/session-timeline-lifecycle-state.spec.ts new file mode 100644 index 000000000000..b303071c87f7 --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-lifecycle-state.spec.ts @@ -0,0 +1,111 @@ +import { expect, test } from "@playwright/test" +import { + assistantMessage, + completedAssistantInfo, + messageUpdated, + partUpdated, + reasoningPart, + setupTimeline, + shell, + status, + textPart, + userMessage, +} from "../performance/timeline-stability/fixture" + +for (const expanded of [false, true]) { + test(`preserves shell user intent from a ${expanded ? "expanded" : "collapsed"} default`, async ({ page }) => { + const id = `prt_shell_default_${expanded}` + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistantMessage([shell(id, "completed", lines(3))])], + settings: { shellToolPartsExpanded: expanded }, + }) + const trigger = page.locator(`[data-timeline-part-id="${id}"] [data-slot="collapsible-trigger"]`) + await expect(trigger).toHaveAttribute("aria-expanded", String(expanded)) + await trigger.click() + await expect(trigger).toHaveAttribute("aria-expanded", String(!expanded)) + + await timeline.send(partUpdated(shell(id, "completed", lines(6))), 180) + await timeline.send(partUpdated(textPart(`prt_sibling_${expanded}`, "Sibling content")), 180) + await timeline.send(status("busy"), 100) + await timeline.send(status("idle"), 250) + await expect(trigger).toHaveAttribute("aria-expanded", String(!expanded)) + }) +} + +test("shows and expands a running shell command without shimmering it", async ({ page }) => { + const id = "prt_shell_running_command" + const command = "sleep 10 && echo done" + await setupTimeline(page, { + messages: [userMessage(), assistantMessage([shell(id, "running", "still running", command)], { completed: false })], + settings: { shellToolPartsExpanded: false }, + }) + + const tool = page.locator(`[data-timeline-part-id="${id}"]`) + await expect(tool.locator('[data-component="text-shimmer"]')).toHaveAttribute("data-active", "true") + await expect(tool.locator('[data-component="shell-submessage"]')).toHaveText(command) + await expect(tool.locator('[data-component="shell-submessage"] [data-component="text-shimmer"]')).toHaveCount(0) + await tool.locator('[data-slot="collapsible-trigger"]').click() + await expect(tool.locator('[data-slot="collapsible-trigger"]')).toHaveAttribute("aria-expanded", "true") + await expect(tool.locator('[data-slot="bash-pre"]')).toContainText("still running") +}) + +test("transitions thinking and hidden reasoning through busy to idle", async ({ page }) => { + const reasoningID = "prt_reasoning_hidden" + const assistant = assistantMessage([reasoningPart(reasoningID, "## Inspecting stability")], { completed: false }) + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistant], + settings: { showReasoningSummaries: false }, + cpuRate: 4, + }) + await timeline.send(status("busy"), 150) + + await expect(page.locator('[data-timeline-row="Thinking"]')).toBeVisible() + await expect(page.getByText("Inspecting stability", { exact: true })).toBeVisible() + await expect(page.locator(`[data-timeline-part-id="${reasoningID}"]`)).toHaveCount(0) + await timeline.send(partUpdated(shell("prt_reasoning_shell", "running")), 160) + await expect(page.locator('[data-timeline-row="Thinking"]')).toBeVisible() + await timeline.send(partUpdated(shell("prt_reasoning_shell", "completed", "done")), 180) + await timeline.send(messageUpdated(completedAssistantInfo(assistant.info)), 100) + await timeline.send(status("idle"), 300) + await expect(page.locator('[data-timeline-row="Thinking"]')).toHaveCount(0) + await expect(page.locator(`[data-timeline-part-id="${reasoningID}"]`)).toHaveCount(0) +}) + +test("moves busy through retry and recovery to final idle content", async ({ page }) => { + const assistant = assistantMessage([], { completed: false }) + const timeline = await setupTimeline(page, { + messages: [ + userMessage(undefined, { + summary: { + diffs: [ + { + file: "src/retry.ts", + additions: 1, + deletions: 1, + patch: "@@ -1 +1 @@\n-export const retry = false\n+export const retry = true", + }, + ], + }, + }), + assistant, + ], + }) + await timeline.send(status("busy"), 140) + await expect(page.locator('[data-timeline-row="Thinking"]')).toBeVisible() + await expect(page.locator('[data-timeline-row="DiffSummary"]')).toHaveCount(0) + await timeline.send(status("retry"), 180) + await expect(page.locator('[data-timeline-row="Retry"]')).toBeVisible() + await expect(page.locator('[data-timeline-row="Thinking"]')).toHaveCount(0) + await timeline.send(status("busy", 2), 180) + await expect(page.locator('[data-timeline-row="Thinking"]')).toBeVisible() + await timeline.send(partUpdated(textPart("prt_recovered", "Recovered response")), 140) + await timeline.send(messageUpdated(completedAssistantInfo(assistant.info)), 100) + await timeline.send(status("idle"), 350) + await expect(page.locator('[data-timeline-row="Retry"]')).toHaveCount(0) + await expect(page.locator('[data-timeline-row="Thinking"]')).toHaveCount(0) + await expect(page.locator('[data-timeline-row="DiffSummary"]')).toBeVisible() +}) + +function lines(count: number) { + return Array.from({ length: count }, (_, index) => `line ${index + 1}`).join("\n") +} diff --git a/packages/app/e2e/regression/session-timeline-locale-projection.spec.ts b/packages/app/e2e/regression/session-timeline-locale-projection.spec.ts new file mode 100644 index 000000000000..3901f8865e3f --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-locale-projection.spec.ts @@ -0,0 +1,25 @@ +import { expect, test } from "@playwright/test" +import { assistantMessage, setupTimeline, toolPart, userMessage } from "../performance/timeline-stability/fixture" + +for (const profile of [ + { locale: "de", label: "Erkundet" }, + { locale: "ar", label: "تم الاستكشاف" }, +] as const) { + test(`projects translated context status in ${profile.locale}`, async ({ page }) => { + const ids = [`prt_locale_${profile.locale}_01_read`, `prt_locale_${profile.locale}_02_glob`] + await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + toolPart(ids[0]!, "read", "completed", { filePath: "src/a.ts" }), + toolPart(ids[1]!, "glob", "completed", { path: ".", pattern: "**/*.ts" }), + ]), + ], + locale: profile.locale, + }) + + const group = page.locator(`[data-timeline-part-ids="${ids.join(",")}"]`) + await expect(group.locator('[data-component="tool-status-title"]')).toHaveAttribute("aria-label", profile.label) + await expect(page.locator("html")).toHaveAttribute("lang", profile.locale) + }) +} diff --git a/packages/app/e2e/regression/session-timeline-projection.spec.ts b/packages/app/e2e/regression/session-timeline-projection.spec.ts new file mode 100644 index 000000000000..1ebda4347862 --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-projection.spec.ts @@ -0,0 +1,285 @@ +import { expect, test } from "@playwright/test" +import { + assistantMessage, + setupTimeline, + status, + toolPart, + userMessage, + userText, + type PartSeed, +} from "../performance/timeline-stability/fixture" + +test.describe("session timeline projection", () => { + test("renders every admitted tool family and hides timeline-only exclusions", async ({ page }) => { + const parts = [ + toolPart("prt_01_read", "read", "completed", { filePath: "src/a.ts" }), + toolPart("prt_02_glob", "glob", "completed", { path: ".", pattern: "**/*.ts" }), + toolPart("prt_03_grep", "grep", "completed", { path: ".", pattern: "value" }), + toolPart("prt_04_list", "list", "completed", { path: "src" }), + toolPart("prt_webfetch", "webfetch", "completed", { url: "https://example.com" }), + toolPart( + "prt_websearch", + "websearch", + "completed", + { query: "timeline stability" }, + { output: "https://example.com/result" }, + ), + toolPart("prt_task", "task", "completed", { description: "Inspect timeline", subagent_type: "explore" }), + toolPart( + "prt_bash", + "bash", + "completed", + { command: "printf stable" }, + { output: "stable", title: "printf stable" }, + ), + editPart("prt_edit"), + toolPart("prt_write", "write", "completed", { filePath: "src/new.ts", content: "export const stable = true\n" }), + patchPart("prt_patch"), + toolPart( + "prt_question", + "question", + "completed", + { questions: [{ question: "Keep stable?", header: "Stability", options: [] }] }, + { metadata: { answers: [["Yes"]] } }, + ), + toolPart("prt_skill", "skill", "completed", { name: "stability" }), + toolPart("prt_custom", "custom_mcp_tool", "completed", { target: "timeline", count: 2 }), + ] + await setupTimeline(page, { messages: [userMessage(), assistantMessage(parts)] }) + + await expect( + page.locator('[data-timeline-part-ids="prt_01_read,prt_02_glob,prt_03_grep,prt_04_list"]'), + ).toBeVisible() + for (const id of [ + "prt_webfetch", + "prt_websearch", + "prt_task", + "prt_bash", + "prt_edit", + "prt_write", + "prt_patch", + "prt_question", + "prt_skill", + "prt_custom", + ]) { + await expect(page.locator(`[data-timeline-part-id="${id}"]`).first(), id).toBeVisible() + } + }) + + test("projects gaps, dividers, assistant parts, and errors together", async ({ page }) => { + const firstUser = userMessage( + [ + userText("The user made the following comment regarding lines 4 through 8 of src/a.ts: Keep this stable", { + id: "prt_comment", + synthetic: true, + metadata: { + opencodeComment: { + path: "src/a.ts", + selection: { startLine: 4, startChar: 0, endLine: 8, endChar: 0 }, + comment: "Keep this stable", + }, + }, + }), + userText("Continue after the comment", { id: "prt_visible_user" }), + ], + { summary: { diffs: Array.from({ length: 11 }, (_, index) => summaryDiff(index)) } }, + ) + const aborted = assistantMessage( + [ + { id: "prt_before_abort", type: "text", text: "Before interruption" }, + { id: "prt_compaction", type: "compaction", auto: true }, + ], + { + id: "msg_1001_assistant_aborted", + error: { name: "MessageAbortedError", data: { message: "Stopped" } }, + }, + ) + const failed = assistantMessage([{ id: "prt_after_abort", type: "text", text: "After interruption" }], { + id: "msg_1002_assistant_failed", + error: { + name: "APIError", + data: { + message: JSON.stringify({ error: { type: "provider_error", message: "Visible provider failure" } }), + isRetryable: false, + }, + }, + created: 1700000003000, + }) + const nextUser = userMessage([userText("Second turn", { id: "prt_second_user" })], { + id: "msg_2000_second_user", + created: 1700000005000, + }) + const nextAssistant = assistantMessage([{ id: "prt_second_text", type: "text", text: "Second response" }], { + id: "msg_2001_second_assistant", + parentID: "msg_2000_second_user", + created: 1700000006000, + }) + const timeline = await setupTimeline(page, { messages: [firstUser, aborted, failed, nextUser, nextAssistant] }) + await timeline.send(status("idle"), 100) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + await scroller.evaluate((element) => (element.scrollTop = 0)) + + await expect(page.locator('[data-timeline-row="TurnDivider"]')).toHaveCount(1) + await expect(page.getByText("Session compacted", { exact: true })).toBeVisible() + await expect(page.getByText("Visible provider failure")).toBeVisible() + await scroller.evaluate((element) => (element.scrollTop = element.scrollHeight)) + await expect(page.locator('[data-timeline-row="TurnGap"]')).toBeVisible() + }) + + test("renders comment strips and historical diff summary overflow", async ({ page }) => { + const user = userMessage( + [ + userText("The user made the following comment regarding lines 4 through 8 of src/a.ts: Keep this stable", { + id: "prt_comment_only", + synthetic: true, + metadata: { + opencodeComment: { + path: "src/a.ts", + selection: { startLine: 4, startChar: 0, endLine: 8, endChar: 0 }, + comment: "Keep this stable", + }, + }, + }), + userText("Continue after the comment", { id: "prt_comment_visible" }), + ], + { summary: { diffs: Array.from({ length: 11 }, (_, index) => summaryDiff(index)) } }, + ) + const nextUser = userMessage(undefined, { id: "msg_2000_diff_next_user", created: 1700000010000 }) + const nextAssistant = assistantMessage([], { + id: "msg_2001_diff_next_assistant", + parentID: "msg_2000_diff_next_user", + created: 1700000011000, + }) + await setupTimeline(page, { + messages: [user, assistantMessage(), nextUser, nextAssistant], + settings: { newLayoutDesigns: false }, + }) + const scroller = page.locator(".scroll-view__viewport", { has: page.locator("[data-timeline-row]") }) + await scroller.evaluate((element) => (element.scrollTop = 0)) + + await expect(page.locator('[data-timeline-row="CommentStrip"]')).toBeVisible() + await expect(page.getByText("Keep this stable", { exact: true })).toBeVisible() + await expect(page.locator('[data-timeline-row="DiffSummary"]')).toBeVisible() + await expect(page.getByText(/show all/i)).toBeVisible() + }) + + test("renders interruption independently when the turn is not compacted", async ({ page }) => { + const user = userMessage() + const before = assistantMessage([{ id: "prt_before", type: "text", text: "Before" }], { + id: "msg_1001_before", + error: { name: "MessageAbortedError", data: { message: "Stopped" } }, + }) + const after = assistantMessage([{ id: "prt_after", type: "text", text: "After" }], { + id: "msg_1002_after", + created: 1700000003000, + }) + await setupTimeline(page, { messages: [user, before, after] }) + + await expect(page.getByText("Interrupted", { exact: true })).toBeVisible() + const rows = await page + .locator('[data-timeline-row="AssistantPart"], [data-timeline-row="TurnDivider"]') + .evaluateAll((elements) => elements.map((element) => element.getAttribute("data-timeline-row"))) + expect(rows).toEqual(["AssistantPart", "TurnDivider", "AssistantPart"]) + }) + + test("renders user image, file attachment, file reference, and agent reference", async ({ page }) => { + const text = "Use @explore with @src/a.ts and inspect the attachments" + const parts: PartSeed<"user">[] = [ + userText(text, { id: "prt_user_rich" }), + { + id: "prt_user_image", + type: "file", + mime: "image/png", + filename: "pixel.png", + url: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==", + }, + { + id: "prt_user_attachment", + type: "file", + mime: "application/json", + filename: "tsconfig.json", + url: "data:application/json;base64,e30=", + }, + { + id: "prt_user_reference", + type: "file", + mime: "text/plain", + filename: "a.ts", + url: "src/a.ts", + source: { type: "file", path: "src/a.ts", text: { value: "@src/a.ts", start: 18, end: 27 } }, + }, + { + id: "prt_user_agent", + type: "agent", + name: "explore", + source: { value: "@explore", start: 4, end: 12 }, + }, + ] + await setupTimeline(page, { messages: [userMessage(parts), assistantMessage()] }) + + await expect(page.getByAltText("pixel.png")).toBeVisible() + await expect(page.getByText("tsconfig.json")).toBeVisible() + await expect(page.getByText("@src/a.ts", { exact: true })).toBeVisible() + await expect(page.getByText("@explore", { exact: true })).toBeVisible() + }) +}) + +function editPart(id: string) { + return toolPart( + id, + "edit", + "completed", + { filePath: "src/a.ts" }, + { + metadata: { + filediff: { + file: "src/a.ts", + additions: 1, + deletions: 1, + before: "export const value = 1\n", + after: "export const value = 2\n", + }, + }, + }, + ) +} + +function patchPart(id: string) { + return toolPart( + id, + "patch", + "completed", + { files: ["src/a.ts", "src/b.ts"] }, + { + metadata: { + files: [ + patchFile("src/a.ts", "update"), + patchFile("src/b.ts", "add"), + patchFile("src/old.ts", "delete"), + { ...patchFile("src/moved.ts", "move"), move: "src/new-place.ts" }, + ], + }, + }, + ) +} + +function patchFile(filePath: string, type: "add" | "update" | "delete" | "move") { + return { + filePath, + relativePath: filePath, + type, + additions: type === "delete" ? 0 : 1, + deletions: type === "add" ? 0 : 1, + before: type === "add" ? undefined : "export const before = true\n", + after: type === "delete" ? undefined : "export const after = true\n", + } +} + +function summaryDiff(index: number) { + return { + file: `src/diff-${index}.ts`, + additions: 1, + deletions: 1, + patch: `@@ -1 +1 @@\n-export const value = ${index}\n+export const value = ${index + 1}`, + } +} diff --git a/packages/app/e2e/regression/session-timeline-reasoning-projection.spec.ts b/packages/app/e2e/regression/session-timeline-reasoning-projection.spec.ts new file mode 100644 index 000000000000..7c0864e5845b --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-reasoning-projection.spec.ts @@ -0,0 +1,93 @@ +import { expect, test } from "@playwright/test" +import { + assistantMessage, + reasoningPart, + setupTimeline, + status, + textPart, + toolPart, + userMessage, +} from "../performance/timeline-stability/fixture" + +const profiles = [ + { name: "summaries off no reasoning", summaries: false, reasoning: "", other: false, thinking: true, body: false }, + { + name: "summaries off reasoning heading", + summaries: false, + reasoning: "## Inspecting stability", + other: false, + thinking: true, + body: false, + }, + { + name: "summaries off with visible tool", + summaries: false, + reasoning: "## Inspecting stability", + other: true, + thinking: true, + body: false, + }, + { name: "summaries on no content", summaries: true, reasoning: "", other: false, thinking: true, body: false }, + { + name: "summaries on blank reasoning", + summaries: true, + reasoning: " ", + other: false, + thinking: true, + body: false, + }, + { + name: "summaries on visible reasoning", + summaries: true, + reasoning: "## Inspecting stability", + other: false, + thinking: false, + body: true, + }, + { + name: "summaries on visible tool no reasoning", + summaries: true, + reasoning: "", + other: true, + thinking: false, + body: false, + }, +] as const + +for (const profile of profiles) { + test(`projects busy reasoning profile ${profile.name}`, async ({ page }) => { + const reasoningID = `prt_reasoning_matrix_${profiles.indexOf(profile)}` + const parts = [ + ...(profile.reasoning ? [reasoningPart(reasoningID, profile.reasoning)] : []), + ...(profile.other + ? [toolPart(`prt_reasoning_tool_${profiles.indexOf(profile)}`, "skill", "running", { name: "inspect" })] + : []), + ] + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistantMessage(parts, { completed: false })], + settings: { showReasoningSummaries: profile.summaries }, + }) + await timeline.send(status("busy"), 150) + + await expect(page.locator('[data-timeline-row="Thinking"]')).toHaveCount(profile.thinking ? 1 : 0) + await expect(page.locator(`[data-timeline-part-id="${reasoningID}"]`)).toHaveCount(profile.body ? 1 : 0) + if (!profile.summaries && profile.reasoning.trim()) { + await expect(page.getByText("Inspecting stability", { exact: true })).toBeVisible() + } + }) +} + +test("does not infer reasoning visibility from provider identity", async ({ page }) => { + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([textPart("prt_provider_text", "No reasoning payload")], { completed: false }), + ], + settings: { showReasoningSummaries: true }, + }) + await timeline.send(status("busy"), 150) + + await expect(page.locator('[data-timeline-row="Thinking"]')).toHaveCount(0) + await expect(page.locator('[data-timeline-part-id*="reasoning"]')).toHaveCount(0) + await expect(page.locator('[data-timeline-part-id="prt_provider_text"]')).toBeVisible() +}) diff --git a/packages/app/e2e/regression/session-timeline-reducer-projection.spec.ts b/packages/app/e2e/regression/session-timeline-reducer-projection.spec.ts new file mode 100644 index 000000000000..ad35eef601cb --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-reducer-projection.spec.ts @@ -0,0 +1,43 @@ +import { expect, test } from "@playwright/test" +import { + assistantMessage, + completedAssistantInfo, + messageUpdated, + partUpdated, + setupTimeline, + shell, + status, + textPart, + toolPart, + userMessage, +} from "../performance/timeline-stability/fixture" + +test("groups singleton and separated context operations at correct boundaries", async ({ page }) => { + const parts = [ + toolPart("prt_boundary_01_read", "read", "completed", { filePath: "src/a.ts" }), + textPart("prt_boundary_02_text", "Boundary text"), + toolPart("prt_boundary_03_glob", "glob", "completed", { path: ".", pattern: "**/*.ts" }), + toolPart("prt_boundary_04_grep", "grep", "completed", { path: ".", pattern: "stable" }), + shell("prt_boundary_05_shell", "completed", "done"), + toolPart("prt_boundary_06_list", "list", "completed", { path: "src" }), + ] + await setupTimeline(page, { messages: [userMessage(), assistantMessage(parts)] }) + + await expect(page.locator('[data-timeline-part-ids="prt_boundary_01_read"]')).toBeVisible() + await expect(page.locator('[data-timeline-part-ids="prt_boundary_03_glob,prt_boundary_04_grep"]')).toBeVisible() + await expect(page.locator('[data-timeline-part-ids="prt_boundary_06_list"]')).toBeVisible() + await expect(page.locator('[data-timeline-row="AssistantPart"]')).toHaveCount(5) +}) + +test("reducer-hardening: converges when idle arrives before final part and message completion", async ({ page }) => { + const textID = "prt_event_order_text" + const assistant = assistantMessage([textPart(textID, "Partial")], { completed: false }) + const timeline = await setupTimeline(page, { messages: [userMessage(), assistant] }) + await timeline.send(status("busy"), 100) + await timeline.send(status("idle"), 100) + await timeline.send(partUpdated(textPart(textID, "Final after early idle")), 120) + await timeline.send(messageUpdated(completedAssistantInfo(assistant.info)), 250) + + await expect(page.locator('[data-timeline-row="Thinking"]')).toHaveCount(0) + await expect(page.locator(`[data-timeline-part-id="${textID}"]`)).toContainText("Final after early idle") +}) diff --git a/packages/app/e2e/regression/session-timeline-shell-outline.spec.ts b/packages/app/e2e/regression/session-timeline-shell-outline.spec.ts new file mode 100644 index 000000000000..54139cc3711b --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-shell-outline.spec.ts @@ -0,0 +1,228 @@ +import { expect, test, type Locator, type Page } from "@playwright/test" +import { + assistantMessage, + setupTimeline, + shell, + textPart, + toolPart, + userMessage, +} from "../performance/timeline-stability/fixture" + +for (const deviceScaleFactor of [1.25, 1.5]) { + test(`keeps the shell outline inside a fractionally short virtual row at ${deviceScaleFactor}x`, async ({ page }) => { + const shellID = "prt_shell_outline" + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistantMessage([shell(shellID, "completed", "shell output")])], + settings: { newLayoutDesigns: true, shellToolPartsExpanded: true }, + reducedMotion: true, + deviceScaleFactor, + }) + const part = page.locator(`[data-timeline-part-id="${shellID}"]`) + const output = part.locator('[data-component="bash-output"]') + const row = page.locator("[data-timeline-key]", { has: part }) + await expect(output).toBeVisible() + await timeline.settle() + + const geometry = await row.evaluate((element) => { + const output = element.querySelector('[data-component="bash-output"]') + if (!output) throw new Error("Shell output is unavailable") + const rowRect = element.getBoundingClientRect() + const outputRect = output.getBoundingClientRect() + // Match a rounded-down measurement at a fractional device-pixel phase. + element.style.height = `${outputRect.bottom - rowRect.top - 0.49}px` + element.style.transform = "translateY(0.25px)" + output.style.setProperty("--v2-border-border-base", "rgb(255, 0, 255)") + output.style.setProperty("background", "rgb(0, 0, 0)", "important") + const style = getComputedStyle(output) + return { + outputWidth: outputRect.width, + outputHeight: outputRect.height, + borderColor: style.borderTopColor, + boxShadow: style.boxShadow, + clipMargin: getComputedStyle(element).overflowClipMargin, + } + }) + await timeline.settle() + + const clipped = await row.evaluate((element) => { + const output = element.querySelector('[data-component="bash-output"]')! + return output.getBoundingClientRect().bottom - element.getBoundingClientRect().bottom + }) + expect(clipped).toBeCloseTo(0.49, 1) + + expect(await page.evaluate(() => devicePixelRatio)).toBe(deviceScaleFactor) + const edges = await captureCardEdges(page, output) + + expect(edges.box.width).toBeCloseTo(geometry.outputWidth, 2) + expect(edges.box.height).toBeCloseTo(geometry.outputHeight, 2) + expect(geometry.borderColor).toBe("rgb(255, 0, 255)") + expect(geometry.boxShadow).toBe("none") + expect(geometry.clipMargin).toBe("0.5px") + expect(edges.magenta.top).toBeGreaterThan(0.75) + expect(edges.magenta.bottom).toBeGreaterThan(0.75) + expect(edges.magenta.vertical).toBeGreaterThanOrEqual(2) + }) +} + +test("keeps the patch card inside a fractionally short virtual row", async ({ page }) => { + const patchID = "prt_patch_outline" + const file = { + filePath: "src/outline.ts", + relativePath: "src/outline.ts", + type: "update", + additions: 1, + deletions: 1, + before: "const outline = false\n", + after: "const outline = true\n", + } + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + toolPart(patchID, "apply_patch", "completed", { files: [file.filePath] }, { metadata: { files: [file] } }), + ]), + ], + settings: { editToolPartsExpanded: true, newLayoutDesigns: true }, + reducedMotion: true, + }) + const part = page.locator(`[data-timeline-part-id="${patchID}"]`) + const card = part.locator('[data-component="accordion"][data-scope="apply-patch"]') + const row = page.locator("[data-timeline-key]", { has: part }) + await expect(card).toBeVisible() + await timeline.settle() + + const geometry = await row.evaluate((element) => { + const card = element.querySelector('[data-component="accordion"][data-scope="apply-patch"]') + if (!card) throw new Error("Patch card is unavailable") + const rowRect = element.getBoundingClientRect() + const cardRect = card.getBoundingClientRect() + element.style.height = `${cardRect.bottom - rowRect.top - 0.49}px` + const clipMargin = getComputedStyle(element).overflowClipMargin + const bottom = element.getBoundingClientRect().bottom + return { + overflow: card.getBoundingClientRect().bottom - bottom, + paintOverflow: card.getBoundingClientRect().bottom - bottom - Number.parseFloat(clipMargin), + clipMargin, + cardWidth: cardRect.width, + cardHeight: cardRect.height, + } + }) + await timeline.settle() + + expect(geometry.overflow).toBeCloseTo(0.49, 1) + expect(geometry.paintOverflow).toBeLessThanOrEqual(0) + const edges = await captureCardEdges(page, card) + expect(edges.box.width).toBeCloseTo(geometry.cardWidth, 2) + expect(edges.box.height).toBeCloseTo(geometry.cardHeight, 2) + expect(edges.luminance.top).toBeLessThan(245) + expect(edges.luminance.bottom).toBeLessThan(245) + expect(Math.abs(edges.luminance.bottom - edges.luminance.top)).toBeLessThan(10) + expect(geometry.clipMargin).toBe("0.5px") +}) + +test("allows paint rounding for every framed row but not fixed turn gaps", async ({ page }) => { + const secondUserID = "msg_outline_second_user" + await setupTimeline(page, { + messages: [ + userMessage(undefined, { + summary: { + diffs: [ + { + file: "src/summary.ts", + additions: 1, + deletions: 1, + patch: "@@ -1 +1 @@\n-export const value = 1\n+export const value = 2", + }, + ], + }, + }), + assistantMessage([textPart("prt_outline_text", "Assistant text")]), + userMessage(undefined, { id: secondUserID, created: 1700000010000 }), + assistantMessage([], { + id: "msg_outline_second_assistant", + parentID: secondUserID, + created: 1700000011000, + }), + ], + }) + await expect(page.locator('[data-timeline-row="DiffSummary"]')).toBeVisible() + await expect(page.locator('[data-timeline-row="TurnGap"]')).toBeVisible() + + const rows = await page.locator("[data-timeline-key]").evaluateAll((elements) => + elements.map((element) => ({ + tag: element.querySelector("[data-timeline-row]")?.dataset.timelineRow, + clipMargin: getComputedStyle(element).overflowClipMargin, + })), + ) + expect(rows.filter((row) => row.tag !== "TurnGap").every((row) => row.clipMargin === "0.5px")).toBe(true) + expect(rows.filter((row) => row.tag === "TurnGap")).toEqual([{ tag: "TurnGap", clipMargin: "0px" }]) +}) + +async function captureCardEdges(page: Page, card: Locator) { + const box = await card.boundingBox() + if (!box) throw new Error("Tool card bounds are unavailable") + const viewport = page.viewportSize() + if (!viewport) throw new Error("Viewport bounds are unavailable") + const screenshot = await page.screenshot() + return page.evaluate( + async ({ source, box, viewport }) => { + const image = new Image() + image.src = source + await image.decode() + const canvas = document.createElement("canvas") + canvas.width = image.naturalWidth + canvas.height = image.naturalHeight + const context = canvas.getContext("2d") + if (!context) throw new Error("2D canvas is unavailable") + context.drawImage(image, 0, 0) + const scale = { + x: image.naturalWidth / viewport.width, + y: image.naturalHeight / viewport.height, + } + const rows = (candidates: number[]) => { + const left = Math.floor((box.x + 8) * scale.x) + const width = Math.floor((box.width - 16) * scale.x) + return candidates.map((row) => { + const pixels = context.getImageData(left, row, width, 1).data + const indexes = Array.from({ length: width }, (_, index) => index * 4) + return { + luminance: + indexes + .map((index) => (pixels[index]! + pixels[index + 1]! + pixels[index + 2]!) / 3) + .reduce((sum, value) => sum + value, 0) / width, + magenta: + indexes.filter((index) => pixels[index]! > 200 && pixels[index + 1]! < 180 && pixels[index + 2]! > 200) + .length / width, + } + }) + } + const pixels = context.getImageData(0, 0, image.naturalWidth, image.naturalHeight).data + const columns = new Uint32Array(image.naturalWidth) + for (let index = 0; index < pixels.length; index += 4) { + if (pixels[index]! <= 200 || pixels[index + 1]! >= 180 || pixels[index + 2]! <= 200) continue + columns[(index / 4) % image.naturalWidth] = columns[(index / 4) % image.naturalWidth]! + 1 + } + const top = box.y * scale.y + const bottom = (box.y + box.height) * scale.y + const topRows = rows([Math.floor(top) - 1, Math.floor(top), Math.ceil(top)]) + const bottomRows = rows([Math.floor(bottom) - 2, Math.floor(bottom) - 1, Math.ceil(bottom) - 1]) + return { + box, + luminance: { + top: Math.min(...topRows.map((row) => row.luminance)), + bottom: rows([Math.ceil(bottom) - 1])[0]!.luminance, + }, + magenta: { + top: Math.max(...topRows.map((row) => row.magenta)), + bottom: Math.max(...bottomRows.map((row) => row.magenta)), + vertical: Array.from(columns).filter((count) => count > box.height * scale.y * 0.75).length, + }, + } + }, + { + source: `data:image/png;base64,${screenshot.toString("base64")}`, + viewport, + box, + }, + ) +} diff --git a/packages/app/e2e/regression/session-timeline-tool-projection.spec.ts b/packages/app/e2e/regression/session-timeline-tool-projection.spec.ts new file mode 100644 index 000000000000..4c2c1c4eadb8 --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-tool-projection.spec.ts @@ -0,0 +1,97 @@ +import { expect, test } from "@playwright/test" +import { + assistantMessage, + partUpdated, + setupTimeline, + toolPart, + userMessage, +} from "../performance/timeline-stability/fixture" + +test("renders every tool error outcome without leaking hidden tools", async ({ page }) => { + const ordinary = ["bash", "edit", "write", "patch", "webfetch", "websearch", "task", "skill", "mcp_probe"] + const parts = ordinary.map((tool, index) => + toolPart(`prt_error_${index}`, tool, "error", errorInput(tool), { error: `${tool} failed visibly` }), + ) + parts.push( + toolPart("prt_question_dismissed", "question", "error", questionInput(), { + error: "The user dismissed this question", + }), + toolPart("prt_question_error", "question", "error", questionInput(), { error: "Question transport failed" }), + ) + await setupTimeline(page, { messages: [userMessage(), assistantMessage(parts)] }) + + await expect(page.locator('[data-kind="tool-error-card"]')).toHaveCount(ordinary.length + 1) + await expect(page.getByText(/dismissed/i)).toBeVisible() + for (let index = 0; index < ordinary.length; index++) { + await expect(page.locator(`[data-timeline-part-id="prt_error_${index}"]`)).toBeVisible() + } +}) + +test("transitions shell and question through running error outcomes", async ({ page }) => { + const shellID = "prt_transition_error_shell" + const questionID = "prt_transition_error_question" + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage( + [ + toolPart(shellID, "bash", "pending", { command: "exit 1" }), + toolPart(questionID, "question", "pending", questionInput()), + ], + { completed: false }, + ), + ], + }) + await timeline.waitForPart(shellID) + await expect(page.locator(`[data-timeline-part-id="${questionID}"]`)).toHaveCount(0) + await timeline.send(partUpdated(toolPart(shellID, "bash", "running", { command: "exit 1" })), 120) + await timeline.send(partUpdated(toolPart(questionID, "question", "running", questionInput())), 180) + await expect(page.locator(`[data-timeline-part-id="${questionID}"]`)).toHaveCount(0) + await timeline.send( + partUpdated(toolPart(shellID, "bash", "error", { command: "exit 1" }, { error: "Command exited 1" })), + 180, + ) + await timeline.send( + partUpdated( + toolPart(questionID, "question", "error", questionInput(), { error: "The user dismissed this question" }), + ), + 250, + ) + + await expect(page.locator(`[data-timeline-part-id="${shellID}"] [data-kind="tool-error-card"]`)).toBeVisible() + await expect(page.locator(`[data-timeline-part-id="${questionID}"]`)).toContainText(/dismissed/i) +}) + +test("labels all web search provider variants", async ({ page }) => { + const parts = [ + toolPart( + "prt_search_parallel", + "websearch", + "completed", + { query: "parallel" }, + { metadata: { provider: "parallel" } }, + ), + toolPart("prt_search_exa", "websearch", "completed", { query: "exa" }, { metadata: { provider: "exa" } }), + toolPart("prt_search_generic", "websearch", "completed", { query: "generic" }), + ] + await setupTimeline(page, { messages: [userMessage(), assistantMessage(parts)] }) + + await expect(page.getByRole("button", { name: /Parallel Web Search/ })).toBeVisible() + await expect(page.getByRole("button", { name: /Exa Web Search/ })).toBeVisible() + await expect(page.getByRole("button", { name: /^Web Search/ })).toBeVisible() +}) + +function questionInput() { + return { questions: [{ header: "Stability", question: "Keep it stable?", options: [] }] } +} + +function errorInput(tool: string) { + if (tool === "bash") return { command: "exit 1" } + if (["edit", "write"].includes(tool)) return { filePath: "src/error.ts", content: "" } + if (tool === "patch") return { files: ["src/error.ts"] } + if (tool === "webfetch") return { url: "https://example.com" } + if (tool === "websearch") return { query: "failure" } + if (tool === "task") return { description: "Fail task", subagent_type: "explore" } + if (tool === "skill") return { name: "failure" } + return { target: "failure" } +} diff --git a/packages/app/e2e/regression/session-timeline-tool-state.spec.ts b/packages/app/e2e/regression/session-timeline-tool-state.spec.ts new file mode 100644 index 000000000000..63646f4454c6 --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-tool-state.spec.ts @@ -0,0 +1,77 @@ +import { expect, test } from "@playwright/test" +import { + assistantMessage, + partUpdated, + setupTimeline, + toolPart, + userMessage, +} from "../performance/timeline-stability/fixture" + +test("updates expanded web search links without resetting expansion", async ({ page }) => { + const searchID = "prt_websearch_mutation" + const input = { query: "timeline stability" } + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([toolPart(searchID, "websearch", "completed", input, { output: "https://example.com/one" })]), + ], + }) + const wrapper = page.locator(`[data-timeline-part-id="${searchID}"]`) + const trigger = wrapper.locator('[data-slot="collapsible-trigger"]') + await trigger.click() + await expect(trigger).toHaveAttribute("aria-expanded", "true") + await timeline.send( + partUpdated( + toolPart(searchID, "websearch", "completed", input, { + output: "https://example.com/one\nhttps://example.com/two", + }), + ), + 300, + ) + await expect(trigger).toHaveAttribute("aria-expanded", "true") + await expect(wrapper.locator('a[href="https://example.com/two"]')).toBeVisible() +}) + +test("preserves an expanded tool error card across duplicate delivery", async ({ page }) => { + const toolID = "prt_duplicate_error" + const failed = toolPart(toolID, "bash", "error", { command: "exit 1" }, { error: "Command failed visibly" }) + const timeline = await setupTimeline(page, { messages: [userMessage(), assistantMessage([failed])] }) + const wrapper = page.locator(`[data-timeline-part-id="${toolID}"]`) + const trigger = wrapper.locator('[data-slot="collapsible-trigger"]') + await trigger.click() + await expect(trigger).toHaveAttribute("aria-expanded", "true") + await timeline.send(partUpdated(failed), 150) + await timeline.send(partUpdated(failed), 250) + await expect(trigger).toHaveAttribute("aria-expanded", "true") + await expect(wrapper).toContainText("Command failed visibly") +}) + +test("renders multiple question answers and preserves open state on answer updates", async ({ page }) => { + const questionID = "prt_multi_question" + const input = { + questions: [ + { header: "First", question: "First choice?", options: [] }, + { header: "Second", question: "Second choice?", options: [], multiple: true }, + ], + } + const timeline = await setupTimeline(page, { + messages: [ + userMessage(), + assistantMessage([ + toolPart(questionID, "question", "completed", input, { metadata: { answers: [["A"], ["B", "C"]] } }), + ]), + ], + }) + const wrapper = page.locator(`[data-timeline-part-id="${questionID}"]`) + const trigger = wrapper.locator('[data-slot="collapsible-trigger"]') + await expect(trigger).toHaveAttribute("aria-expanded", "true") + await timeline.send( + partUpdated( + toolPart(questionID, "question", "completed", input, { metadata: { answers: [["Updated"], ["B", "C"]] } }), + ), + 300, + ) + await expect(trigger).toHaveAttribute("aria-expanded", "true") + await expect(wrapper).toContainText("Updated") + await expect(wrapper).toContainText("B, C") +}) diff --git a/packages/app/e2e/regression/session-timeline-transport.spec.ts b/packages/app/e2e/regression/session-timeline-transport.spec.ts new file mode 100644 index 000000000000..778ff3a3af94 --- /dev/null +++ b/packages/app/e2e/regression/session-timeline-transport.spec.ts @@ -0,0 +1,116 @@ +import { expect, test } from "@playwright/test" +import { + assistantMessage, + partUpdated, + setupTimeline, + status, + textPart, + userMessage, +} from "../performance/timeline-stability/fixture" + +test("keeps one connection open while delivering multiple events", async ({ page }) => { + const timeline = await setupTimeline(page) + + const first = await timeline.transport.send(partUpdated(textPart("prt_transport_first", "first event"))) + const second = await timeline.transport.send(partUpdated(textPart("prt_transport_second", "second event"))) + + await timeline.waitForPart("prt_transport_first") + await timeline.waitForPart("prt_transport_second") + expect(first.connectionID).toBe(second.connectionID) + expect(await timeline.transport.connections()).toHaveLength(1) + expect(await timeline.transport.acknowledgements()).toHaveLength(2) +}) + +test("delivers a burst from one stream chunk", async ({ page }) => { + const timeline = await setupTimeline(page) + const acknowledgements = await timeline.transport.burst([ + partUpdated(textPart("prt_transport_burst_a", "burst a")), + partUpdated(textPart("prt_transport_burst_b", "burst b")), + ]) + + await timeline.waitForPart("prt_transport_burst_a") + await timeline.waitForPart("prt_transport_burst_b") + expect(acknowledgements.map((item) => item.chunkCount)).toEqual([1, 1]) + expect(new Set(acknowledgements.map((item) => item.deliveryID)).size).toBe(2) +}) + +test("parses split JSON and a split multibyte code point", async ({ page }) => { + const timeline = await setupTimeline(page) + const payload = partUpdated(textPart("prt_transport_split", "split snowman \u2603\u2603\u2603")) + const encoded = new TextEncoder().encode(`data: ${JSON.stringify(payload)}\n\n`) + const snowman = new TextEncoder().encode("\u2603")[0]! + const multibyte = encoded.indexOf(snowman) + + const acknowledgement = await timeline.transport.split(payload, [9, multibyte + 1, multibyte + 2]) + + await timeline.waitForPart("prt_transport_split") + await expect(page.locator('[data-timeline-part-id="prt_transport_split"]')).toContainText( + "split snowman \u2603\u2603\u2603", + ) + expect(acknowledgement.chunkCount).toBe(4) +}) + +test("delivers server heartbeat without mutating the timeline", async ({ page }) => { + const timeline = await setupTimeline(page, { + messages: [userMessage(), assistantMessage([textPart("prt_transport_steady", "steady")])], + }) + const before = await page.locator("[data-timeline-row]").allTextContents() + + await timeline.transport.heartbeat() + await timeline.settle() + + expect(await page.locator("[data-timeline-row]").allTextContents()).toEqual(before) + expect(await timeline.transport.connections()).toHaveLength(1) +}) + +test("reconnects after a clean close", async ({ page }) => { + const timeline = await setupTimeline(page, { eventRetry: 10 }) + const first = await timeline.transport.waitForConnection() + + await timeline.transport.close() + const second = await timeline.transport.waitForConnection({ after: first.id }) + await timeline.transport.send(partUpdated(textPart("prt_transport_close", "after close"))) + + await timeline.waitForPart("prt_transport_close") + expect(second.id).toBeGreaterThan(first.id) + expect((await timeline.transport.connections())[0]?.endedBy).toBe("close") +}) + +test("reconnects after a stream error", async ({ page }) => { + const timeline = await setupTimeline(page, { eventRetry: 10 }) + const first = await timeline.transport.waitForConnection() + + await timeline.transport.error("contract failure") + const second = await timeline.transport.waitForConnection({ after: first.id }) + await timeline.transport.send(status("busy")) + + await expect.poll(async () => (await timeline.transport.connections()).length).toBe(2) + expect(second.id).toBeGreaterThan(first.id) + expect((await timeline.transport.connections())[0]?.endedBy).toBe("error") +}) + +test("does not request replay when reconnecting the volatile V2 event stream", async ({ page }) => { + const timeline = await setupTimeline(page, { eventRetry: 10, protocol: "v2" }) + const first = await timeline.transport.send(partUpdated(textPart("prt_transport_id", "event with id")), { + id: "timeline-event-7", + }) + await timeline.waitForPart("prt_transport_id") + + await timeline.transport.error("retry with event id") + const connection = await timeline.transport.waitForConnection({ after: first.connectionID }) + + expect(first.eventID).toBe("timeline-event-7") + expect(connection.headers["last-event-id"]).toBeUndefined() +}) + +test("passes through non-event fetches", async ({ page }) => { + const timeline = await setupTimeline(page) + + const health = await page.evaluate(async () => { + const response = await fetch("/global/health") + return response.json() + }) + + expect(health).toEqual({ healthy: true }) + expect(await timeline.transport.connections()).toHaveLength(1) +}) diff --git a/packages/app/e2e/regression/session-todo-dock-navigation.spec.ts b/packages/app/e2e/regression/session-todo-dock-navigation.spec.ts deleted file mode 100644 index fd0b00f71cdd..000000000000 --- a/packages/app/e2e/regression/session-todo-dock-navigation.spec.ts +++ /dev/null @@ -1,186 +0,0 @@ -import { base64Encode } from "@opencode-ai/core/util/encode" -import { expect, test, type Page } from "@playwright/test" -import { mockOpenCodeServer } from "../utils/mock-server" -import { expectSessionTitle } from "../utils/waits" - -const directory = "C:/OpenCode/TodoDockNavigation" -const projectID = "proj_todo_dock_navigation" -const sourceID = "ses_todo_dock_source" -const otherID = "ses_todo_dock_other" -const sourceTitle = "Todo dock animation" -const otherTitle = "Separate session" - -const activeTodos = [ - { id: "todo-1", content: "Receive todos in the active session", status: "completed", priority: "high" }, - { id: "todo-2", content: "Keep the dock visible across tabs", status: "completed", priority: "high" }, - { id: "todo-3", content: "Close after the final todo", status: "in_progress", priority: "high" }, -] - -type EventPayload = { - directory: string - payload: Record -} - -test.use({ viewport: { width: 1440, height: 900 }, reducedMotion: "no-preference" }) - -test("animates todo lifecycle without replaying it across session tabs", async ({ page }) => { - test.setTimeout(90_000) - const events: EventPayload[] = [] - const todos: Record = { [sourceID]: [], [otherID]: [] } - - await mockOpenCodeServer(page, { - directory, - project: { - id: projectID, - worktree: directory, - vcs: "git", - name: "todo-dock-navigation", - time: { created: 1700000000000, updated: 1700000000000 }, - sandboxes: [], - }, - provider: { - all: [ - { - id: "opencode", - name: "OpenCode", - models: { - "claude-opus-4-6": { - id: "claude-opus-4-6", - name: "Claude Opus 4.6", - limit: { context: 200_000 }, - }, - }, - }, - ], - connected: ["opencode"], - default: { providerID: "opencode", modelID: "claude-opus-4-6" }, - }, - sessions: [session(sourceID, sourceTitle, 1700000000000), session(otherID, otherTitle, 1700000001000)], - pageMessages: () => ({ items: [] }), - events: () => events.splice(0, 1), - eventRetry: 16, - todos: (sessionID) => todos[sessionID] ?? [], - }) - await configurePage(page) - - await page.goto(sessionHref(sourceID)) - await expectSessionTitle(page, sourceTitle) - const dock = page.locator('[data-component="session-todo-dock"]') - await expect(dock).toHaveCount(0) - - events.push(statusEvent(sourceID, "busy")) - await expect(page.getByRole("button", { name: "Stop" })).toBeVisible() - - await page.waitForTimeout(700) - const opening = sampleDock(page, 1_000) - todos[sourceID] = activeTodos - events.push(todoEvent(sourceID, activeTodos)) - await expect(dock).toBeVisible() - await expect(dock.locator('[data-state="in_progress"]')).toHaveCount(1) - expect((await opening).some((sample) => sample.opacity > 0.05 && sample.opacity < 0.95)).toBe(true) - - await switchSession(page, otherID, otherTitle) - await expect(dock).toHaveCount(0) - - const returningOpen = sampleDock(page, 700) - await switchSession(page, sourceID, sourceTitle) - const openSamples = (await returningOpen).filter((sample) => sample.present) - expect(openSamples.length).toBeGreaterThan(0) - expect(openSamples[0]!.opacity).toBeGreaterThan(0.98) - expect(openSamples[0]!.height).toBeGreaterThan(70) - await expect(dock.locator('[data-state="in_progress"]')).toHaveCount(1) - - const completedTodos = activeTodos.map((todo) => ({ ...todo, status: "completed" })) - const closing = sampleDock(page, 1_000) - todos[sourceID] = completedTodos - events.push(todoEvent(sourceID, completedTodos)) - await expect(dock).toHaveCount(0) - expect((await closing).some((sample) => sample.opacity > 0.05 && sample.opacity < 0.95)).toBe(true) - todos[sourceID] = [] - events.push(todoEvent(sourceID, [])) - - await switchSession(page, otherID, otherTitle) - const returningEmpty = sampleDock(page, 700) - await switchSession(page, sourceID, sourceTitle) - await expect(dock).toHaveCount(0) - expect((await returningEmpty).every((sample) => !sample.present)).toBe(true) -}) - -function session(id: string, title: string, created: number) { - return { - id, - slug: id, - projectID, - directory, - title, - version: "dev", - time: { created, updated: created }, - } -} - -function statusEvent(sessionID: string, type: "busy" | "idle"): EventPayload { - return { - directory, - payload: { type: "session.status", properties: { sessionID, status: { type } } }, - } -} - -function todoEvent(sessionID: string, next: typeof activeTodos): EventPayload { - return { - directory, - payload: { type: "todo.updated", properties: { sessionID, todos: next } }, - } -} - -async function configurePage(page: Page) { - const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` - await page.addInitScript( - ({ directory, dirBase64, server, sessionIDs }) => { - localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) - localStorage.setItem( - "opencode.global.dat:server", - JSON.stringify({ - projects: { local: [{ worktree: directory, expanded: true }] }, - lastProject: { local: directory }, - }), - ) - localStorage.setItem( - "opencode.global.dat:tabs", - JSON.stringify(sessionIDs.map((sessionId) => ({ type: "session", server, dirBase64, sessionId }))), - ) - }, - { directory, dirBase64: base64Encode(directory), server, sessionIDs: [sourceID, otherID] }, - ) -} - -function sessionHref(sessionID: string) { - const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` - return `/server/${base64Encode(server)}/session/${sessionID}` -} - -async function switchSession(page: Page, sessionID: string, title: string) { - const href = sessionHref(sessionID) - const tab = page.locator(`[data-slot="titlebar-tabs"] a[href="${href}"]`).first() - await expect(tab).toBeVisible() - await tab.click() - await expectSessionTitle(page, title) -} - -function sampleDock(page: Page, duration: number) { - return page.evaluate(async (duration) => { - const samples: { present: boolean; height: number; opacity: number }[] = [] - const start = performance.now() - while (performance.now() - start < duration) { - const dock = document.querySelector('[data-component="session-todo-dock"]') - const clip = dock?.parentElement?.parentElement - const label = dock?.querySelector('[data-action="session-todo-toggle"] span[aria-label]') - samples.push({ - present: !!dock, - height: clip?.getBoundingClientRect().height ?? 0, - opacity: label ? Number.parseFloat(getComputedStyle(label).opacity) : 0, - }) - await new Promise(requestAnimationFrame) - } - return samples - }, duration) -} diff --git a/packages/app/e2e/regression/subagent-child-navigation.spec.ts b/packages/app/e2e/regression/subagent-child-navigation.spec.ts new file mode 100644 index 000000000000..19d2c29af025 --- /dev/null +++ b/packages/app/e2e/regression/subagent-child-navigation.spec.ts @@ -0,0 +1,200 @@ +import { base64Encode } from "@opencode-ai/core/util/encode" +import { expect, test, type Page } from "@playwright/test" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectSessionTitle } from "../utils/waits" + +const directory = "C:/OpenCode/SubagentNavigation" +const projectID = "proj_subagent_navigation" +const parentID = "ses_subagent_parent" +const childID = "ses_subagent_child" +const parentTitle = "Parent session" +const childTitle = "Subagent child session" +// Child session pages derive their heading from the task part that spawned them. +const taskDescription = "Inspect child navigation" + +type EventPayload = { directory: string; payload: Record } + +test.use({ viewport: { width: 1440, height: 900 } }) + +test("navigates to a subagent child session missing from the session list", async ({ page }) => { + await setup(page) + await openChildFromParent(page) + + await expectSessionTitle(page, taskDescription) + await expect(page.getByRole("heading", { name: parentTitle })).toHaveCount(0) + + const titlebarRight = page.locator("#opencode-titlebar-right") + await expect(titlebarRight.getByRole("button", { name: "Toggle review" })).toHaveCount(1) +}) + +test("shows the not found fallback when the viewed session is deleted", async ({ page }) => { + const events: EventPayload[] = [] + await setup(page, () => events.splice(0, 1)) + await openChildFromParent(page) + await expectSessionTitle(page, taskDescription) + + events.push({ + directory, + payload: { type: "session.deleted", properties: { info: childSession() } }, + }) + + await expect(page.getByText("This session cannot be found")).toBeVisible() + await expect(page.getByRole("button", { name: "Close Tab" })).toBeVisible() + await expect(page.getByRole("heading", { name: taskDescription })).toHaveCount(0) +}) + +async function setup(page: Page, events?: () => EventPayload[]) { + await mockOpenCodeServer(page, { + directory, + project: { + id: projectID, + worktree: directory, + vcs: "git", + name: "subagent-navigation", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { + all: [ + { + id: "opencode", + name: "OpenCode", + models: { + "claude-opus-4-6": { id: "claude-opus-4-6", name: "Claude Opus 4.6", limit: { context: 200_000 } }, + }, + }, + ], + connected: ["opencode"], + default: { providerID: "opencode", modelID: "claude-opus-4-6" }, + }, + sessions: [session(parentID, parentTitle, 1700000000000), childSession()], + pageMessages: (sessionID) => ({ items: sessionID === parentID ? parentMessages() : [] }), + events, + eventRetry: events ? 16 : undefined, + }) + // The child session resolves via /session/:id but is absent from the /session list, + // matching a subagent session that has not been loaded into the list cache yet. + await page.route( + (url) => url.pathname === "/session" && url.port === (process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"), + (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + headers: { "access-control-allow-origin": "*" }, + body: JSON.stringify([session(parentID, parentTitle, 1700000000000)]), + }), + ) + await configurePage(page) +} + +async function openChildFromParent(page: Page) { + await page.goto(sessionHref(parentID)) + await expectSessionTitle(page, parentTitle) + + const card = page.locator(`a[href="${sessionHref(childID)}"]`) + await expect(card).toBeVisible() + await card.click() + + await expect(page).toHaveURL(new RegExp(`/server/.+/session/${childID}$`), { timeout: 15_000 }) +} + +function session(id: string, title: string, created: number, extra?: Record) { + return { + id, + slug: id, + projectID, + directory, + title, + version: "dev", + time: { created, updated: created }, + ...extra, + } +} + +function childSession() { + return session(childID, childTitle, 1700000001000, { parentID }) +} + +function parentMessages() { + const userID = "msg_user_0001" + const assistantID = "msg_assistant_0001" + return [ + { + info: { + id: userID, + sessionID: parentID, + role: "user", + time: { created: 1700000000000 }, + agent: "build", + model: { providerID: "opencode", modelID: "claude-opus-4-6" }, + }, + parts: [ + { + id: "prt_user_text_0001", + sessionID: parentID, + messageID: userID, + type: "text", + text: "Delegate work to a subagent", + }, + ], + }, + { + info: { + id: assistantID, + sessionID: parentID, + role: "assistant", + time: { created: 1700000001000, completed: 1700000002000 }, + parentID: userID, + modelID: "claude-opus-4-6", + providerID: "opencode", + mode: "build", + agent: "build", + path: { cwd: directory, root: directory }, + cost: 0.01, + tokens: { input: 100, output: 200, reasoning: 0, cache: { read: 0, write: 0 } }, + finish: "stop", + }, + parts: [ + { + id: "prt_tool_task_0001", + sessionID: parentID, + messageID: assistantID, + type: "tool", + callID: "call_task_0001", + tool: "task", + state: { + status: "completed", + input: { description: taskDescription, subagent_type: "explore" }, + output: "Subagent finished", + title: taskDescription, + metadata: { sessionId: childID }, + time: { start: 1700000001000, end: 1700000002000 }, + }, + }, + ], + }, + ] +} + +async function configurePage(page: Page) { + const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` + await page.addInitScript( + ({ directory, server, sessionId }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem( + "opencode.global.dat:server", + JSON.stringify({ + projects: { local: [{ worktree: directory, expanded: true }] }, + lastProject: { local: directory }, + }), + ) + localStorage.setItem("opencode.window.browser.dat:tabs", JSON.stringify([{ type: "session", server, sessionId }])) + }, + { directory, server, sessionId: parentID }, + ) +} + +function sessionHref(sessionID: string) { + const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` + return `/server/${base64Encode(server)}/session/${sessionID}` +} diff --git a/packages/app/e2e/regression/tab-navigate-mousedown.spec.ts b/packages/app/e2e/regression/tab-navigate-mousedown.spec.ts new file mode 100644 index 000000000000..6bc417af8085 --- /dev/null +++ b/packages/app/e2e/regression/tab-navigate-mousedown.spec.ts @@ -0,0 +1,108 @@ +import { expect, test, type Page, type Route } from "@playwright/test" +import { base64Encode } from "@opencode-ai/core/util/encode" + +const server = "http://127.0.0.1:4096" +const sessionA = session("ses_tab_a", "Tab A session") +const sessionB = session("ses_tab_b", "Tab B session") + +test("pressing mouse down on a tab navigates before mouse up", async ({ page }) => { + await mockServer(page) + await page.addInitScript( + ({ server, sessionA, sessionB }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem( + "opencode.window.browser.dat:tabs", + JSON.stringify([ + { type: "session", server, sessionId: sessionA }, + { type: "session", server, sessionId: sessionB }, + ]), + ) + }, + { server, sessionA: sessionA.id, sessionB: sessionB.id }, + ) + + const hrefA = `/server/${base64Encode(server)}/session/${sessionA.id}` + const hrefB = `/server/${base64Encode(server)}/session/${sessionB.id}` + await page.goto(hrefA) + await expect(page.getByText(sessionA.title).first()).toBeVisible() + + const linkB = page.locator(`a[data-titlebar-tab-link][href="${hrefB}"]`) + await expect(linkB).toBeVisible() + const box = await linkB.boundingBox() + if (!box) throw new Error("tab link has no bounding box") + await page.mouse.move(box.x + box.width / 2, box.y + box.height / 2) + await page.mouse.down() + + // Navigation must happen on mousedown, before the button is released. + await expect(page).toHaveURL(new RegExp(`${hrefB.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}$`)) + await page.mouse.up() + await expect(page).toHaveURL(new RegExp(`${hrefB.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}$`)) +}) + +function session(id: string, title: string) { + return { + id, + slug: id, + projectID: "project-tabs", + directory: "C:/tab-project", + title, + version: "dev", + time: { created: 1, updated: 1 }, + } +} + +async function mockServer(page: Page) { + const sessions = [sessionA, sessionB] + await page.route("**/*", async (route) => { + const url = new URL(route.request().url()) + if (url.origin !== server) return route.fallback() + if (url.pathname === "/global/event" || url.pathname === "/event") return sse(route) + if (url.pathname === "/global/health") return json(route, { healthy: true }) + if (url.pathname === "/session") return json(route, sessions) + const byId = sessions.find((item) => url.pathname === `/session/${item.id}`) + if (byId) return json(route, byId) + if (/^\/session\/[^/]+$/.test(url.pathname)) return json(route, { name: "NotFoundError" }, 404) + if (/^\/session\/[^/]+\/message$/.test(url.pathname)) return json(route, []) + if (/^\/session\/[^/]+\/(children|diff)$/.test(url.pathname)) return json(route, []) + if (["/skill", "/command", "/lsp", "/formatter", "/permission", "/question", "/vcs/diff"].includes(url.pathname)) + return json(route, []) + if (["/global/config", "/config", "/provider/auth", "/mcp", "/session/status"].includes(url.pathname)) + return json(route, {}) + if (url.pathname === "/provider") + return json(route, { all: [], connected: [], default: { providerID: "", modelID: "" } }) + if (url.pathname === "/agent") return json(route, [{ name: "build", mode: "primary" }]) + if (url.pathname === "/project" || url.pathname === "/project/current") { + const project = { + id: sessionA.projectID, + worktree: sessionA.directory, + vcs: "git", + time: { created: 1, updated: 1 }, + sandboxes: [], + } + return json(route, url.pathname === "/project" ? [project] : project) + } + if (url.pathname === "/path") + return json(route, { + state: sessionA.directory, + config: sessionA.directory, + worktree: sessionA.directory, + directory: sessionA.directory, + home: sessionA.directory, + }) + if (url.pathname === "/vcs") return json(route, { branch: "main", default_branch: "main" }) + return json(route, {}) + }) +} + +function json(route: Route, body: unknown, status = 200) { + return route.fulfill({ + status, + contentType: "application/json", + headers: { "access-control-allow-origin": "*" }, + body: JSON.stringify(body), + }) +} + +function sse(route: Route) { + return route.fulfill({ status: 200, contentType: "text/event-stream", body: ": ok\n\n" }) +} diff --git a/packages/app/e2e/regression/terminal-composer-focus.spec.ts b/packages/app/e2e/regression/terminal-composer-focus.spec.ts new file mode 100644 index 000000000000..f67260278228 --- /dev/null +++ b/packages/app/e2e/regression/terminal-composer-focus.spec.ts @@ -0,0 +1,209 @@ +import { base64Encode } from "@opencode-ai/core/util/encode" +import { expect, test, type Page } from "@playwright/test" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectSessionTitle } from "../utils/waits" + +const directory = "C:/OpenCode/TerminalComposerFocus" +const projectID = "proj_terminal_composer_focus" +const sessionID = "ses_terminal_composer_focus" +const ptyID = "pty_terminal_composer_focus" +const newPtyID = "pty_terminal_composer_focus_new" + +test.use({ viewport: { width: 1440, height: 900 } }) + +test.beforeEach(async ({ page }) => { + await mockOpenCodeServer(page, { + directory, + project: { + id: projectID, + worktree: directory, + vcs: "git", + name: "terminal-composer-focus", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { + all: [ + { + id: "opencode", + name: "OpenCode", + models: { test: { id: "test", name: "Test", limit: { context: 200_000 } } }, + }, + ], + connected: ["opencode"], + default: { providerID: "opencode", modelID: "test" }, + }, + sessions: [ + { + id: sessionID, + slug: "terminal-composer-focus", + projectID, + directory, + title: "Terminal composer focus", + version: "dev", + time: { created: 1700000000000, updated: 1700000000000 }, + }, + ], + pageMessages: () => ({ items: [] }), + }) + await page.route("**/pty", (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify({ id: ptyID, title: "Terminal 1" }), + }), + ) + await page.route(`**/pty/${ptyID}`, (route) => + route.fulfill({ status: 200, contentType: "application/json", body: "{}" }), + ) + await page.route(`**/pty/${ptyID}/connect-token*`, (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + headers: { "access-control-allow-origin": "*" }, + body: JSON.stringify({ ticket: "e2e-ticket" }), + }), + ) + await page.routeWebSocket(new RegExp(`/pty/${ptyID}/connect`), () => undefined) + await page.addInitScript(() => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + }) +}) + +test("routes typing to the composer unless the open terminal is focused", async ({ page }) => { + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) + await expectSessionTitle(page, "Terminal composer focus") + + const composer = page.locator('[data-component="prompt-input"]') + const terminal = page.locator('[data-component="terminal"]') + await page.keyboard.press("Control+Backquote") + await expect(terminal).toBeVisible() + await expect.poll(() => terminal.evaluate((element) => element.contains(document.activeElement))).toBe(true) + + await page.keyboard.type("x") + await expect(composer).toHaveText("") + + await page.waitForTimeout(300) + await page.evaluate(() => (document.activeElement as HTMLElement | null)?.blur()) + await page.keyboard.type("a") + + await expect(composer).toBeFocused() + await expect(composer).toHaveText("a") +}) + +test("keeps composer focus when a cached terminal finishes mounting", async ({ page }) => { + const ghostty = Promise.withResolvers() + const release = Promise.withResolvers() + const created = { count: 0 } + await page.route("**/pty", (route) => { + created.count += 1 + return route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify({ id: ptyID, title: "Terminal 1" }), + }) + }) + await page.route(/ghostty-web/, async (route) => { + ghostty.resolve() + await release.promise + await route.continue() + }) + await seedCachedTerminal(page) + + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`, { waitUntil: "commit" }) + await expectSessionTitle(page, "Terminal composer focus") + + const composer = page.locator('[data-component="prompt-input"]') + const terminal = page.locator('[data-component="terminal"]') + await expect(terminal).toBeVisible() + expect(created.count).toBe(0) + await ghostty.promise + await composer.click() + await expect(composer).toBeFocused() + + release.resolve() + await expect(terminal.locator("textarea")).toHaveCount(1) + await page.waitForTimeout(300) + await expect(composer).toBeFocused() +}) + +test("keeps newer composer focus while an explicit terminal open finishes", async ({ page }) => { + const ghostty = Promise.withResolvers() + const release = Promise.withResolvers() + await page.route(/ghostty-web/, async (route) => { + ghostty.resolve() + await release.promise + await route.continue() + }) + + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) + await expectSessionTitle(page, "Terminal composer focus") + + const composer = page.locator('[data-component="prompt-input"]') + const terminal = page.locator('[data-component="terminal"]') + await page.keyboard.press("Control+Backquote") + await expect(terminal).toBeVisible() + await ghostty.promise + await composer.click() + await expect(composer).toBeFocused() + + release.resolve() + await expect(terminal.locator("textarea")).toHaveCount(1) + await page.waitForTimeout(50) + await expect(composer).toBeFocused() +}) + +test("focuses a terminal created from the new-terminal button", async ({ page }) => { + const created = { count: 0 } + await page.route("**/pty", (route) => { + created.count += 1 + const next = created.count === 1 ? { id: ptyID, title: "Terminal 1" } : { id: newPtyID, title: "Terminal 2" } + return route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify(next), + }) + }) + await page.route(`**/pty/${newPtyID}`, (route) => + route.fulfill({ status: 200, contentType: "application/json", body: "{}" }), + ) + await page.route(`**/pty/${newPtyID}/connect-token*`, (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + headers: { "access-control-allow-origin": "*" }, + body: JSON.stringify({ ticket: "e2e-ticket" }), + }), + ) + await page.routeWebSocket(new RegExp(`/pty/${newPtyID}/connect`), () => undefined) + + await page.goto(`/${base64Encode(directory)}/session/${sessionID}`) + await expectSessionTitle(page, "Terminal composer focus") + + const composer = page.locator('[data-component="prompt-input"]') + const terminal = page.locator('[data-component="terminal"]') + await page.keyboard.press("Control+Backquote") + await expect(terminal.locator("textarea")).toHaveCount(1) + await composer.click() + await expect(composer).toBeFocused() + + await page.getByRole("button", { name: "New terminal" }).click() + await expect(page.getByRole("tab", { name: "Terminal 2" })).toHaveAttribute("aria-selected", "true") + await expect.poll(() => terminal.evaluate((element) => element.contains(document.activeElement))).toBe(true) +}) + +function seedCachedTerminal(page: Page) { + return page.addInitScript( + ({ terminalKey, ptyID }) => { + localStorage.setItem("opencode.global.dat:layout", JSON.stringify({ terminal: { height: 320, opened: true } })) + localStorage.setItem( + terminalKey, + JSON.stringify({ + active: ptyID, + all: [{ id: ptyID, title: "Terminal 1", titleNumber: 1 }], + }), + ) + }, + { terminalKey: `${base64Encode(directory)}/terminal.v1`, ptyID }, + ) +} diff --git a/packages/app/e2e/regression/terminal-hidden.spec.ts b/packages/app/e2e/regression/terminal-hidden.spec.ts index 357d9ac203e3..73821580af07 100644 --- a/packages/app/e2e/regression/terminal-hidden.spec.ts +++ b/packages/app/e2e/regression/terminal-hidden.spec.ts @@ -7,7 +7,7 @@ const projectID = "proj_hidden_terminal_regression" const sessionID = "ses_hidden_terminal_regression" const title = "Hidden terminal regression" -test("unmounts the terminal renderer while the pane is hidden", async ({ page }) => { +test("unmounts the terminal panel while it is hidden", async ({ page }) => { await page.setViewportSize({ width: 1400, height: 900 }) await mockOpenCodeServer(page, { directory, @@ -64,13 +64,14 @@ test("unmounts the terminal renderer while the pane is hidden", async ({ page }) await expect(page.locator('[data-component="terminal"]')).toBeVisible() await page.keyboard.press("Control+Backquote") - await expect(panel).toHaveAttribute("aria-hidden", "true") + await expect(panel).toHaveCount(0) await expect(page.locator('[data-component="terminal"]')).toHaveCount(0) await page.setViewportSize({ width: 1200, height: 700 }) await expect(page.locator('[data-component="terminal"]')).toHaveCount(0) await page.keyboard.press("Control+Backquote") + await expect(panel).toBeVisible() await expect(page.locator('[data-component="terminal"]')).toBeVisible() }) diff --git a/packages/app/e2e/regression/terminal-tab-switch.spec.ts b/packages/app/e2e/regression/terminal-tab-switch.spec.ts new file mode 100644 index 000000000000..cbb72958ad3a --- /dev/null +++ b/packages/app/e2e/regression/terminal-tab-switch.spec.ts @@ -0,0 +1,145 @@ +import { base64Encode } from "@opencode-ai/core/util/encode" +import { expect, test, type Page } from "@playwright/test" +import { mockOpenCodeServer } from "../utils/mock-server" +import { expectSessionTitle } from "../utils/waits" + +const directory = "C:/OpenCode/TerminalTabSwitch" +const projectID = "proj_terminal_tab_switch" +const sessionA = "ses_terminal_tab_a" +const sessionB = "ses_terminal_tab_b" +const titleA = "Alpha session" +const titleB = "Beta session" +const ptyID = "pty_tab_switch" +const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}` +// Marks the terminal DOM node so a remount (fresh node) is detectable. +const PROBE = "original" + +test.use({ viewport: { width: 1440, height: 900 } }) + +// Terminals are workspace-scoped: switching between session tabs in the same +// workspace must keep the terminal mounted and its PTY connection open instead +// of tearing it down and reconnecting. +test("keeps the terminal session alive when switching session tabs in a workspace", async ({ page }) => { + const connections = await setup(page) + + await page.goto(sessionHref(sessionA)) + await expectSessionTitle(page, titleA) + + await page.keyboard.press("Control+Backquote") + const terminal = page.locator('[data-component="terminal"]') + await expect(terminal).toBeVisible() + await expect.poll(() => connections.length).toBe(1) + await writeProbe(page) + + await switchTab(page, titleB) + await expectSessionTitle(page, titleB) + await expect(terminal).toBeVisible() + expect(await readProbe(page)).toBe(PROBE) + expect(connections.length).toBe(1) + + await switchTab(page, titleA) + await expectSessionTitle(page, titleA) + await expect(terminal).toBeVisible() + expect(await readProbe(page)).toBe(PROBE) + expect(connections.length).toBe(1) +}) + +type Probed = HTMLElement & { __e2eProbe?: string } + +async function switchTab(page: Page, title: string) { + await page.locator("[data-titlebar-tab-slot]", { hasText: title }).click() +} + +async function writeProbe(page: Page) { + await page.locator('[data-component="terminal"]').evaluate((el, probe) => { + ;(el as Probed).__e2eProbe = probe + }, PROBE) +} + +async function readProbe(page: Page) { + return page.locator('[data-component="terminal"]').evaluate((el) => (el as Probed).__e2eProbe) +} + +async function setup(page: Page) { + await mockOpenCodeServer(page, { + directory, + project: { + id: projectID, + worktree: directory, + vcs: "git", + name: "terminal-tab-switch", + time: { created: 1700000000000, updated: 1700000000000 }, + sandboxes: [], + }, + provider: { + all: [ + { + id: "opencode", + name: "OpenCode", + models: { test: { id: "test", name: "Test", limit: { context: 200_000 } } }, + }, + ], + connected: ["opencode"], + default: { providerID: "opencode", modelID: "test" }, + }, + sessions: [session(sessionA, titleA, 1700000000000), session(sessionB, titleB, 1700000001000)], + pageMessages: () => ({ items: [] }), + }) + await page.route("**/pty", (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + body: JSON.stringify({ id: ptyID, title: "Terminal 1" }), + }), + ) + await page.route(`**/pty/${ptyID}`, (route) => + route.fulfill({ status: 200, contentType: "application/json", body: "{}" }), + ) + await page.route(`**/pty/${ptyID}/connect-token*`, (route) => + route.fulfill({ + status: 200, + contentType: "application/json", + headers: { "access-control-allow-origin": "*" }, + body: JSON.stringify({ ticket: "e2e-ticket" }), + }), + ) + const connections: string[] = [] + await page.routeWebSocket(new RegExp(`/pty/${ptyID}/connect`), (ws) => { + connections.push(ws.url()) + }) + + await page.addInitScript( + ({ directory, server, sessions }) => { + localStorage.setItem("settings.v3", JSON.stringify({ general: { newLayoutDesigns: true } })) + localStorage.setItem( + "opencode.global.dat:server", + JSON.stringify({ + projects: { local: [{ worktree: directory, expanded: true }] }, + lastProject: { local: directory }, + }), + ) + localStorage.setItem( + "opencode.window.browser.dat:tabs", + JSON.stringify(sessions.map((sessionId: string) => ({ type: "session", server, sessionId }))), + ) + }, + { directory, server, sessions: [sessionA, sessionB] }, + ) + return connections +} + +function session(id: string, title: string, created: number) { + return { + id, + slug: id, + projectID, + directory, + title, + version: "dev", + time: { created, updated: created }, + } +} + +function sessionHref(sessionID: string) { + return `/server/${base64Encode(server)}/session/${sessionID}` +} diff --git a/packages/app/e2e/reproduction/timeline-suspense/index.html b/packages/app/e2e/reproduction/timeline-suspense/index.html new file mode 100644 index 000000000000..995008a9f7a6 --- /dev/null +++ b/packages/app/e2e/reproduction/timeline-suspense/index.html @@ -0,0 +1,34 @@ + + + + + + Timeline Suspense Reproduction + + + +
+ + + diff --git a/packages/app/e2e/reproduction/timeline-suspense/main.tsx b/packages/app/e2e/reproduction/timeline-suspense/main.tsx new file mode 100644 index 000000000000..cdcd809be3be --- /dev/null +++ b/packages/app/e2e/reproduction/timeline-suspense/main.tsx @@ -0,0 +1,315 @@ +import { createResource, createSignal, For, onMount, Suspense } from "solid-js" +import { render } from "solid-js/web" +import { createVirtualizer, observeElementOffset, observeElementRect } from "@tanstack/solid-virtual" +import { observeElementOffsetReconnectAware } from "../../../src/pages/session/timeline/observe-element-offset" + +const rowCount = 2_000 +const rowHeight = 40 +const parameters = new URLSearchParams(location.search) +const resourceMode = parameters.get("resource") === "guard" ? "guard" : "baseline" +const reconnectMode = parameters.get("reconnect") === "candidate" ? "candidate" : "baseline" + +type MutationEvent = { + kind: "removed" | "added" + callbackTime: number + callbackFrame: number + routeConnectedInCallback: boolean + nativeOffsetInCallback: number +} + +type Snapshot = { + mode: { + resource: "baseline" | "guard" + reconnect: "baseline" | "candidate" + } + operation: { + sequence: number + phase: string + time: number + frame: number + } + resourceState: string + routeConnected: boolean + viewportConnected: boolean + viewportOwnedByRoute: boolean + sameRoute: boolean + sameViewport: boolean + sameSurface: boolean + sameMountedRows: boolean + nativeOffset: number + coreOffset: number + rangeStart: number + rangeEnd: number + indexes: number[] + domIndexes: number[] + logicalSurfaceHeight: number + renderedSurfaceHeight: number + viewportClientHeight: number + viewportScrollHeight: number + visibleRows: number + minimumRowTop: number + domScrollEvents: number + lastScrollTrusted: boolean + coreOffsetCallbackCalls: number + offsetCallbackSources: "observer"[] + rectObserverCallbacks: number + ignoredDetachedZeroRects: number + syntheticScrollDispatches: number + mutationEvents: MutationEvent[] +} + +declare global { + interface Window { + timelineSuspense: { + prepare: () => Promise + trigger: () => void + resolve: () => void + frames: (count?: number) => Promise + snapshot: () => Snapshot + } + } +} + +function App() { + const [refresh, setRefresh] = createSignal(false) + let resolveResource: (() => void) | undefined + const [resource] = createResource( + refresh, + (version) => + new Promise((resolve) => { + resolveResource = () => resolve(`settled-${version}`) + }), + { initialValue: "settled" }, + ) + + function Route() { + let route: HTMLElement | undefined + let viewport: HTMLDivElement | undefined + let surface: HTMLDivElement | undefined + let initialRoute: HTMLElement | undefined + let initialViewport: HTMLDivElement | undefined + let initialSurface: HTMLDivElement | undefined + let initialRows: HTMLElement[] = [] + let phase = "mounting" + let browserFrame = 0 + let snapshotSequence = 0 + let domScrollEvents = 0 + let lastScrollTrusted = false + let coreOffsetCallbackCalls = 0 + let rectObserverCallbacks = 0 + let ignoredDetachedZeroRects = 0 + const offsetCallbackSources: "observer"[] = [] + const mutationEvents: MutationEvent[] = [] + const virtualizer = createVirtualizer({ + count: rowCount, + getScrollElement: () => viewport ?? null, + estimateSize: () => rowHeight, + initialRect: { width: 900, height: 600 }, + overscan: 2, + observeElementRect: (instance, callback) => + observeElementRect(instance, (rect) => { + rectObserverCallbacks++ + // A fixed 600px viewport has no usable geometry while detached. Keep the last connected rect. + if (!instance.scrollElement?.isConnected && rect.height === 0) { + ignoredDetachedZeroRects++ + return + } + callback(rect) + }), + observeElementOffset: (instance, callback) => { + const deliver = (offset: number, isScrolling: boolean) => { + coreOffsetCallbackCalls++ + offsetCallbackSources.push("observer") + callback(offset, isScrolling) + } + if (reconnectMode === "candidate") return observeElementOffsetReconnectAware(instance, deliver) + return observeElementOffset(instance, deliver) + }, + }) + + const frames = async (count = 2) => { + for (let index = 0; index < count; index++) { + await new Promise((resolve) => requestAnimationFrame(() => resolve())) + } + } + const mountedRows = () => [...(surface?.querySelectorAll("[data-row-index]") ?? [])] + const snapshot = (): Snapshot => { + const rows = mountedRows() + const view = viewport?.getBoundingClientRect() + const visibleRows = + viewport?.isConnected && view + ? rows.filter((row) => { + const rect = row.getBoundingClientRect() + return rect.bottom > view.top && rect.top < view.bottom + }).length + : 0 + return { + mode: { resource: resourceMode, reconnect: reconnectMode }, + operation: { + sequence: ++snapshotSequence, + phase, + time: performance.now(), + frame: browserFrame, + }, + resourceState: resource.state, + routeConnected: route?.isConnected ?? false, + viewportConnected: viewport?.isConnected ?? false, + viewportOwnedByRoute: !!route && !!viewport && route.contains(viewport), + sameRoute: route === initialRoute, + sameViewport: viewport === initialViewport, + sameSurface: surface === initialSurface, + sameMountedRows: + initialRows.length > 0 && + initialRows.length === rows.length && + initialRows.every((row, index) => row === rows[index]), + nativeOffset: viewport?.scrollTop ?? -1, + coreOffset: virtualizer.scrollOffset ?? -1, + rangeStart: virtualizer.range?.startIndex ?? -1, + rangeEnd: virtualizer.range?.endIndex ?? -1, + indexes: virtualizer.getVirtualItems().map((item) => item.index), + domIndexes: rows.map((row) => Number(row.dataset.rowIndex)), + logicalSurfaceHeight: Number.parseFloat(surface?.style.height ?? "-1"), + renderedSurfaceHeight: surface?.getBoundingClientRect().height ?? -1, + viewportClientHeight: viewport?.clientHeight ?? -1, + viewportScrollHeight: viewport?.scrollHeight ?? -1, + visibleRows, + minimumRowTop: + rows.length && view ? Math.min(...rows.map((row) => row.getBoundingClientRect().top - view.top)) : -1, + domScrollEvents, + lastScrollTrusted, + coreOffsetCallbackCalls, + offsetCallbackSources: [...offsetCallbackSources], + rectObserverCallbacks, + ignoredDetachedZeroRects, + syntheticScrollDispatches: 0, + mutationEvents: mutationEvents.map((event) => ({ ...event })), + } + } + + onMount(() => { + if (!route || !viewport || !surface) throw new Error("Timeline fixture did not mount") + const routeRoot = route.parentElement + if (!routeRoot) throw new Error("Timeline route root did not mount") + initialRoute = route + initialViewport = viewport + initialSurface = surface + viewport.addEventListener("scroll", (event) => { + domScrollEvents++ + lastScrollTrusted = event.isTrusted + }) + const countFrames = () => { + browserFrame++ + requestAnimationFrame(countFrames) + } + requestAnimationFrame(countFrames) + new MutationObserver((records) => { + const callbackTime = performance.now() + records.forEach((record) => { + ;([...(record.removedNodes ?? [])] as Node[]).forEach((node) => { + if (node !== route) return + phase = "detached" + mutationEvents.push({ + kind: "removed", + callbackTime, + callbackFrame: browserFrame, + routeConnectedInCallback: route.isConnected, + nativeOffsetInCallback: viewport.scrollTop, + }) + }) + ;([...(record.addedNodes ?? [])] as Node[]).forEach((node) => { + if (node !== route) return + phase = "reinserted" + mutationEvents.push({ + kind: "added", + callbackTime, + callbackFrame: browserFrame, + routeConnectedInCallback: route.isConnected, + nativeOffsetInCallback: viewport.scrollTop, + }) + }) + }) + }).observe(routeRoot, { childList: true }) + window.timelineSuspense = { + prepare: async () => { + phase = "preparing" + await frames(2) + viewport.scrollTop = viewport.scrollHeight + await frames(3) + await new Promise((resolve) => setTimeout(resolve, 200)) + await frames(2) + initialRows = mountedRows() + phase = "prepared" + return snapshot() + }, + trigger: () => { + phase = "triggering" + setRefresh(true) + }, + resolve: () => { + if (!resolveResource) throw new Error("Resource is not pending") + phase = "resolving" + resolveResource() + }, + frames, + snapshot, + } + }) + + return ( +
+ +
+
+ + {(item) => ( +
+ logical row {item.index} +
+ )} +
+
+
+
+ ) + } + + return ( +
+ + + +
+ ) +} + +render(() => , document.getElementById("root")!) diff --git a/packages/app/e2e/reproduction/timeline-suspense/playwright.config.ts b/packages/app/e2e/reproduction/timeline-suspense/playwright.config.ts new file mode 100644 index 000000000000..7fff1737aef1 --- /dev/null +++ b/packages/app/e2e/reproduction/timeline-suspense/playwright.config.ts @@ -0,0 +1,34 @@ +import { defineConfig, devices } from "@playwright/test" + +const port = Number(process.env.PLAYWRIGHT_TIMELINE_SUSPENSE_PORT ?? 4317) + +export default defineConfig({ + testDir: ".", + testMatch: "timeline-suspense.repro.ts", + outputDir: "../../test-results/timeline-suspense", + fullyParallel: false, + workers: 1, + retries: 0, + reporter: "line", + timeout: 30_000, + expect: { + timeout: 10_000, + }, + webServer: { + command: `bunx vite --config vite.config.ts --host 127.0.0.1 --port ${port} --strictPort`, + cwd: import.meta.dirname, + url: `http://127.0.0.1:${port}`, + reuseExistingServer: false, + }, + use: { + baseURL: `http://127.0.0.1:${port}`, + trace: "retain-on-failure", + screenshot: "only-on-failure", + }, + projects: [ + { + name: "chromium", + use: { ...devices["Desktop Chrome"] }, + }, + ], +}) diff --git a/packages/app/e2e/reproduction/timeline-suspense/timeline-suspense.repro.ts b/packages/app/e2e/reproduction/timeline-suspense/timeline-suspense.repro.ts new file mode 100644 index 000000000000..3edae33a9ba6 --- /dev/null +++ b/packages/app/e2e/reproduction/timeline-suspense/timeline-suspense.repro.ts @@ -0,0 +1,179 @@ +import { expect, test, type Page } from "@playwright/test" + +test.beforeEach(async ({ page }) => { + page.on("pageerror", (error) => console.error(error)) + await page.goto("/") + await expect.poll(() => page.evaluate(() => !!window.timelineSuspense)).toBe(true) +}) + +test("desired: preserves visible timeline continuity across descendant resource suspension", async ({ page }) => { + await page.goto("/?reconnect=candidate") + await expect.poll(() => page.evaluate(() => window.timelineSuspense.snapshot().mode.reconnect)).toBe("candidate") + const before = await prepare(page) + await triggerBaselineSuspension(page) + const pending = await page.evaluate(() => window.timelineSuspense.snapshot()) + expect(pending.nativeOffset).toBe(0) + expect(pending.coreOffset).toBe(before.coreOffset) + expect(pending.indexes).toEqual(before.indexes) + expect(pending.sameRoute).toBe(true) + expect(pending.sameViewport).toBe(true) + expect(pending.sameSurface).toBe(true) + expect(pending.sameMountedRows).toBe(true) + + await resolveSuspension(page) + await expect.poll(() => page.evaluate(() => window.timelineSuspense.snapshot().coreOffset)).toBe(0) + await page.waitForTimeout(250) + await page.evaluate(() => window.timelineSuspense.frames(2)) + const after = await page.evaluate(() => window.timelineSuspense.snapshot()) + expect(after.sameRoute).toBe(true) + expect(after.sameViewport).toBe(true) + expect(after.sameSurface).toBe(true) + expect(after.nativeOffset).toBe(0) + expect(after.coreOffset).toBe(0) + expect(after.rangeStart).toBeLessThan(10) + expect(after.visibleRows, diagnostic({ before, pending, after })).toBeGreaterThan(0) + expect(after.domScrollEvents).toBe(before.domScrollEvents) + expect(after.coreOffsetCallbackCalls).toBe(before.coreOffsetCallbackCalls + 1) + expect(after.offsetCallbackSources.at(-1)).toBe("observer") + expect(after.syntheticScrollDispatches).toBe(0) +}) + +test("forensic: proves detached same-node viewport leaves TanStack's bottom range blank until a real scroll", async ({ + page, +}) => { + const before = await prepare(page) + const beforeRows = before.domIndexes + expect(before.mode).toEqual({ resource: "baseline", reconnect: "baseline" }) + expect(before.logicalSurfaceHeight).toBe(80_000) + expect(before.renderedSurfaceHeight).toBe(80_000) + expect(before.viewportClientHeight).toBe(600) + expect(before.viewportScrollHeight).toBe(80_000) + expect(before.rangeStart).toBeGreaterThan(1_900) + expect(before.nativeOffset).toBe(before.coreOffset) + expect(before.visibleRows).toBeGreaterThan(0) + + await triggerBaselineSuspension(page) + const pending = await page.evaluate(() => window.timelineSuspense.snapshot()) + expect(pending.resourceState).toBe("refreshing") + expect(pending.routeConnected).toBe(false) + expect(pending.viewportConnected).toBe(false) + expect(pending.viewportOwnedByRoute).toBe(true) + expect(pending.nativeOffset).toBe(0) + expect(pending.coreOffset).toBe(before.coreOffset) + expect(pending.rangeStart).toBe(before.rangeStart) + expect(pending.rangeEnd).toBe(before.rangeEnd) + expect(pending.indexes).toEqual(before.indexes) + expect(pending.domIndexes).toEqual(beforeRows) + expect(pending.sameMountedRows).toBe(true) + expect(pending.domScrollEvents).toBe(before.domScrollEvents) + expect(pending.coreOffsetCallbackCalls).toBe(before.coreOffsetCallbackCalls) + expect(pending.ignoredDetachedZeroRects).toBeGreaterThan(before.ignoredDetachedZeroRects) + expect(pending.mutationEvents).toHaveLength(1) + expect(pending.mutationEvents[0]).toMatchObject({ + kind: "removed", + routeConnectedInCallback: false, + nativeOffsetInCallback: 0, + }) + expect(pending.mutationEvents[0]!.callbackTime).toBeLessThanOrEqual(pending.operation.time) + expect(pending.mutationEvents[0]!.callbackFrame).toBeLessThanOrEqual(pending.operation.frame) + + const after = await resolveSuspension(page) + expect(after.resourceState).toBe("ready") + expect(after.routeConnected).toBe(true) + expect(after.viewportConnected).toBe(true) + expect(after.viewportOwnedByRoute).toBe(true) + expect(after.sameRoute).toBe(true) + expect(after.sameViewport).toBe(true) + expect(after.sameSurface).toBe(true) + expect(after.sameMountedRows).toBe(true) + expect(after.nativeOffset).toBe(0) + expect(after.coreOffset).toBe(before.coreOffset) + expect(after.rangeStart).toBe(before.rangeStart) + expect(after.rangeEnd).toBe(before.rangeEnd) + expect(after.indexes).toEqual(before.indexes) + expect(after.domIndexes).toEqual(beforeRows) + expect(after.domScrollEvents).toBe(before.domScrollEvents) + expect(after.coreOffsetCallbackCalls).toBe(before.coreOffsetCallbackCalls) + expect(after.mutationEvents).toHaveLength(2) + expect(after.mutationEvents[1]).toMatchObject({ + kind: "added", + routeConnectedInCallback: true, + nativeOffsetInCallback: 0, + }) + expect(after.mutationEvents[1]!.callbackTime).toBeLessThanOrEqual(after.operation.time) + expect(after.mutationEvents[1]!.callbackFrame).toBeLessThanOrEqual(after.operation.frame) + expect(after.visibleRows).toBe(0) + expect(after.minimumRowTop).toBeGreaterThan(50_000) + expect(after.syntheticScrollDispatches).toBe(0) + + await page.locator("[data-viewport]").hover() + await page.mouse.wheel(0, 80) + await expect + .poll(() => + page.evaluate(() => { + const value = window.timelineSuspense.snapshot() + return value.nativeOffset > 0 && value.coreOffset === value.nativeOffset + }), + ) + .toBe(true) + await page.evaluate(() => window.timelineSuspense.frames(2)) + const recovered = await page.evaluate(() => window.timelineSuspense.snapshot()) + expect(recovered.domScrollEvents).toBeGreaterThan(after.domScrollEvents) + expect(recovered.coreOffsetCallbackCalls).toBeGreaterThan(after.coreOffsetCallbackCalls) + expect(recovered.offsetCallbackSources.at(-1)).toBe("observer") + expect(recovered.lastScrollTrusted).toBe(true) + expect(recovered.rangeStart).toBeLessThan(10) + expect(recovered.visibleRows).toBeGreaterThan(0) +}) + +test("matrix: fixture-only settled-resource guard keeps the route connected", async ({ page }) => { + await page.goto("/?resource=guard") + await expect.poll(() => page.evaluate(() => window.timelineSuspense.snapshot().mode.resource)).toBe("guard") + const before = await prepare(page) + + await page.evaluate(() => window.timelineSuspense.trigger()) + await expect.poll(() => page.evaluate(() => window.timelineSuspense.snapshot().resourceState)).toBe("refreshing") + await page.evaluate(() => window.timelineSuspense.frames(3)) + const pending = await page.evaluate(() => window.timelineSuspense.snapshot()) + expect(pending.routeConnected).toBe(true) + expect(pending.mutationEvents).toEqual([]) + expect(pending.nativeOffset).toBe(before.nativeOffset) + expect(pending.coreOffset).toBe(before.coreOffset) + expect(pending.visibleRows).toBeGreaterThan(0) + + const after = await resolveSuspension(page) + expect(after.routeConnected).toBe(true) + expect(after.nativeOffset).toBe(before.nativeOffset) + expect(after.coreOffset).toBe(before.coreOffset) + expect(after.visibleRows).toBeGreaterThan(0) +}) + +async function prepare(page: Page) { + const before = await page.evaluate(() => window.timelineSuspense.prepare()) + expect(before.routeConnected).toBe(true) + expect(before.viewportConnected).toBe(true) + expect(before.viewportOwnedByRoute).toBe(true) + expect(before.sameMountedRows).toBe(true) + expect(before.rangeStart).toBeGreaterThan(1_900) + expect(before.nativeOffset).toBe(before.coreOffset) + return before +} + +async function triggerBaselineSuspension(page: Page) { + await page.evaluate(() => window.timelineSuspense.trigger()) + await expect.poll(() => page.evaluate(() => window.timelineSuspense.snapshot().resourceState)).toBe("refreshing") + await expect.poll(() => page.evaluate(() => window.timelineSuspense.snapshot().routeConnected)).toBe(false) + await page.evaluate(() => window.timelineSuspense.frames(3)) +} + +async function resolveSuspension(page: Page) { + await page.evaluate(() => window.timelineSuspense.resolve()) + await expect.poll(() => page.evaluate(() => window.timelineSuspense.snapshot().resourceState)).toBe("ready") + await expect.poll(() => page.evaluate(() => window.timelineSuspense.snapshot().routeConnected)).toBe(true) + await page.evaluate(() => window.timelineSuspense.frames(3)) + return page.evaluate(() => window.timelineSuspense.snapshot()) +} + +function diagnostic(value: unknown) { + return JSON.stringify(value, null, 2) +} diff --git a/packages/app/e2e/reproduction/timeline-suspense/vite.config.ts b/packages/app/e2e/reproduction/timeline-suspense/vite.config.ts new file mode 100644 index 000000000000..efb75ab731c6 --- /dev/null +++ b/packages/app/e2e/reproduction/timeline-suspense/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from "vite" +import solid from "vite-plugin-solid" + +export default defineConfig({ + root: import.meta.dirname, + plugins: [solid()], +}) diff --git a/packages/app/e2e/smoke/session-timeline.fixture.ts b/packages/app/e2e/smoke/session-timeline.fixture.ts index 3dce37cafd9d..beb2d7cf75ee 100644 --- a/packages/app/e2e/smoke/session-timeline.fixture.ts +++ b/packages/app/e2e/smoke/session-timeline.fixture.ts @@ -120,7 +120,7 @@ function toolPart( outputLength = 160, ): MessagePart { const metadata = - tool === "apply_patch" + tool === "patch" ? { files: [patchFile(index, "update"), patchFile(index + 1, index % 2 === 0 ? "add" : "delete")] } : tool === "edit" || tool === "write" ? { @@ -199,7 +199,7 @@ function turn(index: number): Message[] { ? [toolPart(index, 7, "write", { filePath: `src/generated/write-${index}.ts`, content: code(index, 28) }, 560)] : []), ...(index % 8 === 0 - ? [toolPart(index, 8, "apply_patch", { files: [`src/generated/patch-${index}.ts`] }, 620)] + ? [toolPart(index, 8, "patch", { files: [`src/generated/patch-${index}.ts`] }, 620)] : []), ...(index % 7 === 0 ? [toolPart(index, 4, "bash", { command: "bun typecheck" }, 620)] : []), ...(index % 10 === 0 ? [toolPart(index, 9, "webfetch", { url: "https://example.com/docs/sample" }, 120)] : []), @@ -229,7 +229,6 @@ const sourceMessages = Array.from({ length: 12 }, (_, index) => [ ]).flat() function renderable(part: MessagePart) { - if (part.type === "tool" && part.tool === "todowrite") return false if (part.type === "text") return !!part.text.trim() if (part.type === "reasoning") return !!part.text.trim() return part.type !== "step-start" && part.type !== "step-finish" && part.type !== "patch" diff --git a/packages/app/e2e/smoke/session-timeline.spec.ts b/packages/app/e2e/smoke/session-timeline.spec.ts index 5bca533e6a60..bdf3f55bdc10 100644 --- a/packages/app/e2e/smoke/session-timeline.spec.ts +++ b/packages/app/e2e/smoke/session-timeline.spec.ts @@ -127,7 +127,7 @@ test.describe("smoke: session timeline", () => { await page.addInitScript( ({ dirBase64, sourceID, targetID }) => { localStorage.setItem( - "opencode.global.dat:tabs", + "opencode.window.browser.dat:tabs", JSON.stringify( [sourceID, targetID].map((sessionId) => ({ type: "session", @@ -253,7 +253,7 @@ test.describe("smoke: session timeline", () => { await page.addInitScript( ({ dirBase64, sourceID, targetID }) => { localStorage.setItem( - "opencode.global.dat:tabs", + "opencode.window.browser.dat:tabs", JSON.stringify( [sourceID, targetID].map((sessionId) => ({ type: "session", @@ -736,5 +736,5 @@ async function switchTitlebarSession(page: Page, sessionID: string, title: strin } async function expectSessionReady(page: Page) { - await expectAppVisible(page.getByRole("textbox", { name: /Ask anything/i })) + await expectAppVisible(page.getByRole("textbox", { name: "Prompt" })) } diff --git a/packages/app/e2e/tsconfig.json b/packages/app/e2e/tsconfig.json index 3f1cad80cb60..4a6046e4faaf 100644 --- a/packages/app/e2e/tsconfig.json +++ b/packages/app/e2e/tsconfig.json @@ -5,5 +5,16 @@ "rootDir": "..", "types": ["node", "bun"] }, - "include": ["./**/*.ts"] + "include": [ + "./performance/timeline-stability/**/*.spec.ts", + "./performance/timeline-stability/fixture.test.ts", + "./performance/timeline-stability/fixture.ts", + "./performance/unit/visual-stability.test.ts", + "./reproduction/timeline-suspense/**/*.ts", + "./reproduction/timeline-suspense/**/*.tsx", + "../src/pages/session/timeline/observe-element-offset.ts", + "./regression/new-session-panel-corner.spec.ts", + "./regression/session-timeline-context-resize.spec.ts", + "./utils/**/*.ts" + ] } diff --git a/packages/app/e2e/utils/mock-server.ts b/packages/app/e2e/utils/mock-server.ts index 875c3b7a96c3..5cca83895f50 100644 --- a/packages/app/e2e/utils/mock-server.ts +++ b/packages/app/e2e/utils/mock-server.ts @@ -1,9 +1,10 @@ import type { Page, Route } from "@playwright/test" const emptyList = new Set(["/skill", "/command", "/lsp", "/formatter", "/vcs/status", "/vcs/diff"]) -const emptyObject = new Set(["/global/config", "/config", "/provider/auth", "/mcp", "/session/status"]) +const emptyObject = new Set(["/global/config", "/config", "/provider/auth", "/mcp", "/experimental/resource"]) export interface MockServerConfig { + protocol?: "v1" | "v2" provider: unknown directory: string project: unknown @@ -11,12 +12,18 @@ export interface MockServerConfig { pageMessages: (sessionId: string, limit: number, before?: string) => { items: unknown[]; cursor?: string } vcsDiff?: unknown[] messageDelay?: number + beforeMessagesResponse?: (input: { sessionID: string; before?: string }) => Promise onMessages?: (input: { sessionID: string; before?: string; phase: "start" | "end" }) => void + message?: (sessionID: string, messageID: string) => unknown + onMessage?: (input: { sessionID: string; messageID: string }) => void events?: () => unknown[] eventRetry?: number - todos?: (sessionID: string) => unknown[] permissions?: unknown[] | (() => unknown[]) questions?: unknown[] | (() => unknown[]) + fileList?: (path: string) => unknown | Promise + fileContent?: (path: string) => unknown | Promise + findFiles?: (input: { query: string; dirs?: string; limit?: number }) => unknown + sessionStatus?: unknown } export async function mockOpenCodeServer(page: Page, config: MockServerConfig) { @@ -47,34 +54,217 @@ export async function mockOpenCodeServer(page: Page, config: MockServerConfig) { if (url.port !== targetPort && url.port !== appPort) return route.fallback() const path = url.pathname - if (path === "/global/event" || path === "/event") return sse(route, config.events?.(), config.eventRetry) - if (path === "/global/health") return json(route, { healthy: true }) + if (path === "/global/event" || path === "/event" || path === "/api/event") { + const events = config.events?.() + return sse( + route, + path === "/api/event" + ? [{ id: "evt_mock_connected", type: "server.connected", data: {} }, ...(events?.map(currentEvent) ?? [])] + : events, + config.eventRetry, + ) + } + if (path === "/global/health") + return config.protocol === "v2" ? json(route, {}, undefined, 404) : json(route, { healthy: true }) + if (path === "/api/health" && config.protocol === "v2") + return json(route, { healthy: true, version: "2.0.0", pid: 1 }) + if (path === "/experimental/capabilities") return json(route, { backgroundSubagents: true }) if (path === "/permission") return json(route, typeof config.permissions === "function" ? config.permissions() : (config.permissions ?? [])) if (path === "/question") return json(route, typeof config.questions === "function" ? config.questions() : (config.questions ?? [])) + if (path === "/session/status") return json(route, config.sessionStatus ?? {}) if (path === "/vcs/diff" && config.vcsDiff) return json(route, config.vcsDiff) + if (path === "/file" && config.fileList) + return json(route, await config.fileList(url.searchParams.get("path") ?? "")) + if (path === "/file/content" && config.fileContent) + return json(route, await config.fileContent(url.searchParams.get("path") ?? "")) + if (path === "/find/file" && config.findFiles) + return json( + route, + await config.findFiles({ + query: url.searchParams.get("query") ?? "", + dirs: url.searchParams.get("dirs") ?? undefined, + limit: url.searchParams.has("limit") ? Number(url.searchParams.get("limit")) : undefined, + }), + ) + if (path === "/api/reference") + return json(route, { + location: { + directory: config.directory, + project: { id: (config.project as { id?: string }).id, directory: config.directory }, + }, + data: [], + }) + if (path === "/api/agent") + return json(route, { + location: location(config), + data: [ + { + id: "build", + name: "Build", + mode: "primary", + hidden: false, + request: { settings: {}, headers: {}, body: {} }, + permissions: [], + }, + ], + }) + if (path === "/api/command") return json(route, { location: location(config), data: [] }) + if (path === "/api/mcp") return json(route, { location: location(config), data: [] }) + if (path === "/api/mcp/resource") + return json(route, { location: location(config), data: { resources: [], templates: [] } }) + const integration = path.match(/^\/api\/integration\/([^/]+)$/)?.[1] + if (integration && route.request().method() === "GET") + return json(route, { + location: location(config), + data: { id: integration, name: integration, methods: [{ type: "key", label: "API key" }], connections: [] }, + }) + if (/^\/api\/integration\/[^/]+\/connect\/key$/.test(path) && route.request().method() === "POST") + return route.fulfill({ status: 204, headers: { "access-control-allow-origin": "*" } }) + if (path === "/api/project") return json(route, [config.project]) + if (path === "/api/project/current") + return json(route, { id: (config.project as { id?: string }).id, directory: config.directory }) + if (path.startsWith("/api/project/") && route.request().method() === "PATCH") return json(route, config.project) + if (path === "/api/path") + return json(route, { + state: config.directory, + config: config.directory, + worktree: config.directory, + directory: config.directory, + home: "C:/OpenCode", + }) + if (path === "/api/permission/request") + return json(route, { + location: location(config), + data: (typeof config.permissions === "function" ? config.permissions() : (config.permissions ?? [])).map( + currentPermission, + ), + }) + if (path === "/api/question/request") + return json(route, { + location: location(config), + data: typeof config.questions === "function" ? config.questions() : (config.questions ?? []), + }) + if (path === "/api/vcs") + return json(route, { location: location(config), data: { branch: "main", defaultBranch: "main" } }) + if (path === "/api/vcs/status") return json(route, { location: location(config), data: [] }) + if (path === "/api/vcs/diff") return json(route, { location: location(config), data: config.vcsDiff ?? [] }) + if (path === "/api/pty/shells") return json(route, { location: location(config), data: [] }) + if (/^\/api\/pty\/[^/]+\/connect-token$/.test(path)) + return json(route, { location: location(config), data: { ticket: "e2e-ticket", expires_in: 60 } }) if (emptyObject.has(path)) return json(route, {}) if (emptyList.has(path)) return json(route, []) + if (path === "/api/session") { + const directory = url.searchParams.get("directory") + const parentID = url.searchParams.get("parentID") + const limit = Number(url.searchParams.get("limit") ?? 50) + const offset = Number(url.searchParams.get("cursor") ?? 0) + const sessions = config.sessions + .filter((session) => !directory || session.directory === directory) + .filter((session) => parentID !== "null" || session.parentID === undefined) + .filter((session) => { + const search = url.searchParams.get("search")?.toLowerCase() + return ( + !search || + String(session.title ?? "") + .toLowerCase() + .includes(search) + ) + }) + const ordered = url.searchParams.get("order") === "asc" ? sessions.toReversed() : sessions + const data = ordered.slice(offset, offset + limit) + const next = offset + limit < ordered.length ? String(offset + limit) : undefined + return json(route, { + data: data.map((session) => currentSession(session, config.directory)), + cursor: { next }, + }) + } + if (path === "/api/session/active") { + const statuses = (config.sessionStatus ?? {}) as Record + return json(route, { + data: Object.fromEntries( + Object.entries(statuses).flatMap(([id, status]) => + status.type === "idle" ? [] : [[id, { type: "running" }]], + ), + ), + }) + } + if (/^\/api\/session\/[^/]+\/shell$/.test(path) && route.request().method() === "POST") { + return route.fulfill({ status: 204, headers: { "access-control-allow-origin": "*" } }) + } + if (/^\/api\/session\/[^/]+\/question\/[^/]+\/(reply|reject)$/.test(path) && route.request().method() === "POST") { + return route.fulfill({ status: 204, headers: { "access-control-allow-origin": "*" } }) + } + if (/^\/api\/session\/[^/]+\/permission\/[^/]+\/reply$/.test(path) && route.request().method() === "POST") { + return route.fulfill({ status: 204, headers: { "access-control-allow-origin": "*" } }) + } + if ( + /^\/api\/session\/[^/]+\/(archive|rename|interrupt|revert\/clear|revert\/commit)$/.test(path) && + route.request().method() === "POST" + ) { + return route.fulfill({ status: 204, headers: { "access-control-allow-origin": "*" } }) + } + if (/^\/api\/session\/[^/]+$/.test(path) && route.request().method() === "DELETE") { + return route.fulfill({ status: 204, headers: { "access-control-allow-origin": "*" } }) + } if (path in staticRoutes) return json(route, staticRoutes[path]) + const currentSessionMatch = path.match(/^\/api\/session\/([^/]+)$/) + if (currentSessionMatch) { + const session = config.sessions.find((item) => item.id === currentSessionMatch[1]) + if (!session) return json(route, { error: "Session not found" }, undefined, 404) + return json(route, { + data: currentSession(session, config.directory), + }) + } + const sessionMatch = path.match(/^\/session\/([^/]+)$/) if (sessionMatch) { const session = config.sessions.find((s) => s.id === sessionMatch[1]) return json(route, session ?? {}) } - const todoMatch = path.match(/^\/session\/([^/]+)\/todo$/) - if (todoMatch) return json(route, config.todos?.(todoMatch[1]!) ?? []) + const projectMatch = path.match(/^\/project\/([^/]+)$/) + if (projectMatch) return json(route, config.project) + + const messageMatch = path.match(/^\/session\/([^/]+)\/message\/([^/]+)$/) + if (messageMatch) { + config.onMessage?.({ sessionID: messageMatch[1]!, messageID: messageMatch[2]! }) + if (config.messageDelay !== undefined) await new Promise((resolve) => setTimeout(resolve, config.messageDelay)) + const message = config.message?.(messageMatch[1]!, messageMatch[2]!) + if (message === undefined) return json(route, { error: "Message not found" }, undefined, 404) + return json(route, message) + } + if (/^\/session\/[^/]+\/(children|diff)$/.test(path)) return json(route, []) + const currentMessagesMatch = path.match(/^\/api\/session\/([^/]+)\/message$/) + if (currentMessagesMatch) { + const token = url.searchParams.get("cursor") ?? undefined + const before = token ? cursors.get(token) : undefined + if (token && !before) return json(route, { error: "Invalid cursor" }, undefined, 400) + config.onMessages?.({ sessionID: currentMessagesMatch[1], before, phase: "start" }) + await config.beforeMessagesResponse?.({ sessionID: currentMessagesMatch[1]!, before }) + if (config.messageDelay !== undefined) await new Promise((resolve) => setTimeout(resolve, config.messageDelay)) + const pageData = config.pageMessages(currentMessagesMatch[1], Number(url.searchParams.get("limit") ?? 50), before) + config.onMessages?.({ sessionID: currentMessagesMatch[1], before, phase: "end" }) + const cursor = pageData.cursor ? `cursor_${++nextCursor}` : undefined + if (cursor) cursors.set(cursor, pageData.cursor!) + return json(route, { + data: pageData.items.map(currentMessage).reverse(), + cursor: { next: cursor }, + }) + } + const messagesMatch = path.match(/^\/session\/([^/]+)\/message$/) if (messagesMatch) { const token = url.searchParams.get("before") ?? undefined const before = token ? cursors.get(token) : undefined if (token && !before) return json(route, { error: "Invalid cursor" }, undefined, 400) config.onMessages?.({ sessionID: messagesMatch[1], before, phase: "start" }) - if (config.messageDelay) await new Promise((resolve) => setTimeout(resolve, config.messageDelay)) + await config.beforeMessagesResponse?.({ sessionID: messagesMatch[1]!, before }) + if (config.messageDelay !== undefined) await new Promise((resolve) => setTimeout(resolve, config.messageDelay)) const limit = Number(url.searchParams.get("limit") ?? 80) const pageData = config.pageMessages(messagesMatch[1], limit, before) config.onMessages?.({ sessionID: messagesMatch[1], before, phase: "end" }) @@ -89,6 +279,115 @@ export async function mockOpenCodeServer(page: Page, config: MockServerConfig) { }) } +function location(config: MockServerConfig) { + return { + directory: config.directory, + project: { id: (config.project as { id?: string }).id, directory: config.directory }, + } +} + +function currentPermission(value: unknown) { + const permission = value as Record + if (permission.action) return permission + const tool = permission.tool as { messageID?: string; callID?: string } | undefined + return { + id: permission.id, + sessionID: permission.sessionID, + action: permission.permission, + resources: permission.patterns ?? [], + save: permission.always, + metadata: permission.metadata, + source: + tool?.messageID && tool.callID ? { type: "tool", messageID: tool.messageID, callID: tool.callID } : undefined, + } +} + +export function currentSession(session: { id: string } & Record, fallbackDirectory?: string) { + const time = session.time && typeof session.time === "object" ? session.time : {} + return { + id: session.id, + parentID: session.parentID, + projectID: session.projectID ?? "project", + agent: session.agent ?? "build", + model: session.model ?? { id: "mock-model", providerID: "mock-provider" }, + cost: session.cost ?? 0, + tokens: session.tokens ?? { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } }, + time: { + created: "created" in time && typeof time.created === "number" ? time.created : 0, + updated: "updated" in time && typeof time.updated === "number" ? time.updated : 0, + ...(session.time && typeof session.time === "object" && "archived" in session.time + ? { archived: session.time.archived } + : {}), + }, + title: session.title ?? session.id, + location: { + directory: typeof session.directory === "string" ? session.directory : fallbackDirectory, + ...(typeof session.workspaceID === "string" ? { workspaceID: session.workspaceID } : {}), + }, + subpath: session.path, + revert: session.revert, + } +} + +function currentMessage(value: unknown) { + const item = value as { + info: Record & { id: string; role: "user" | "assistant"; time: { created: number } } + parts: Array & { type: string }> + } + if (item.info.role === "user") { + return { + id: item.info.id, + type: "user", + time: item.info.time, + text: item.parts + .flatMap((part) => (part.type === "text" && typeof part.text === "string" ? [part.text] : [])) + .join("\n"), + } + } + return { + id: item.info.id, + type: "assistant", + time: item.info.time, + agent: item.info.agent ?? "build", + model: { id: item.info.modelID ?? "model", providerID: item.info.providerID ?? "provider" }, + cost: item.info.cost, + tokens: item.info.tokens, + error: item.info.error, + content: item.parts.flatMap((part) => { + if (part.type === "text" || part.type === "reasoning") return [{ type: part.type, text: part.text ?? "" }] + if (part.type !== "tool") return [] + const state = part.state as Record + return [ + { + type: "tool", + id: part.id, + name: part.tool, + time: state.time ?? { created: item.info.time.created }, + state: + state.status === "pending" + ? { status: "streaming", input: state.raw ?? JSON.stringify(state.input ?? {}) } + : state.status === "completed" + ? { + status: "completed", + input: state.input ?? {}, + structured: state.metadata ?? {}, + content: [{ type: "text", text: state.output ?? "" }], + } + : state.status === "error" + ? { + status: "error", + input: state.input ?? {}, + structured: state.metadata ?? {}, + content: [], + error: { type: "ToolError", message: state.error ?? "Tool failed" }, + } + : { status: "running", input: state.input ?? {}, structured: state.metadata ?? {}, content: [] }, + }, + ] + }), + } +} + function json(route: Route, body: unknown, headers?: Record, status = 200) { return route.fulfill({ status, @@ -109,3 +408,18 @@ function sse(route: Route, events?: unknown[], retry?: number) { body: `${retry === undefined ? "" : `retry: ${retry}\n\n`}${events?.map((event) => `data: ${JSON.stringify(event)}\n\n`).join("") || ": ok\n\n"}`, }) } + +function currentEvent(input: unknown) { + if (!input || typeof input !== "object" || !("payload" in input)) return input + const envelope = input as { directory?: string; payload?: unknown } + if (!envelope.payload || typeof envelope.payload !== "object") return input + const payload = envelope.payload as { id?: string; type?: string; properties?: unknown } + if (!payload.type) return input + return { + id: payload.id ?? `evt_mock_${Date.now()}`, + created: Date.now(), + type: payload.type, + data: payload.properties ?? {}, + location: envelope.directory && envelope.directory !== "global" ? { directory: envelope.directory } : undefined, + } +} diff --git a/packages/app/e2e/utils/sse-transport.ts b/packages/app/e2e/utils/sse-transport.ts new file mode 100644 index 000000000000..15c3577279f6 --- /dev/null +++ b/packages/app/e2e/utils/sse-transport.ts @@ -0,0 +1,304 @@ +import type { Page } from "@playwright/test" + +export type SseConnectionRecord = { + id: number + url: string + path: "/global/event" | "/event" | "/api/event" + headers: Record + openedAt: number + endedAt?: number + endedBy?: "close" | "disconnect" | "error" | "abort" + error?: string +} + +export type SseDeliveryAcknowledgement = { + deliveryID: number + connectionID: number + bytes: number + chunkCount: number + deliveredAt: number + eventID?: string +} + +export type SseEventOptions = { + id?: string + event?: string + retry?: number + marker?: string +} + +export type SseTransport = { + server: string + waitForConnection(options?: { after?: number; timeout?: number }): Promise + send(payload: T, options?: SseEventOptions): Promise + burst(payloads: readonly T[], options?: readonly SseEventOptions[]): Promise + split(payload: T, cuts: readonly number[], options?: SseEventOptions): Promise + heartbeat(options?: SseEventOptions): Promise + writeRaw(value: string | Uint8Array, cuts?: readonly number[], marker?: string): Promise + close(): Promise + disconnect(message?: string): Promise + error(message?: string): Promise + connections(): Promise + acknowledgements(): Promise +} + +type BrowserCommand = + | { type: "send"; deliveries: { payload: T; options?: SseEventOptions }[]; burst: boolean; cuts?: number[] } + | { type: "raw"; bytes: number[]; cuts?: number[]; marker?: string } + | { type: "end"; mode: "close" | "disconnect" | "error"; message?: string } + | { type: "connections" } + | { type: "acknowledgements" } + +type BrowserTransport = Window & { + __testSseTransport?: { + command: (command: BrowserCommand) => unknown + } +} + +export async function installSseTransport( + page: Page, + options: { server: string; retry?: number }, +): Promise> { + const server = new URL(options.server).origin + await page.addInitScript( + ({ server, retry }) => { + type Connection = SseConnectionRecord & { controller: ReadableStreamDefaultController } + type ProbeWindow = Window & { + __visualStabilityProbe?: { startedAt: number; markers: { at: number; label: string }[] } + } + const originalFetch = window.fetch.bind(window) + const connections: Connection[] = [] + const acknowledgements: SseDeliveryAcknowledgement[] = [] + const encoder = new TextEncoder() + let nextConnectionID = 0 + let nextDeliveryID = 0 + + const current = () => connections.findLast((connection) => connection.endedAt === undefined) + const chunks = (bytes: Uint8Array, cuts?: readonly number[]) => { + const boundaries = [...new Set(cuts ?? [])] + .filter((cut) => Number.isInteger(cut) && cut > 0 && cut < bytes.byteLength) + .sort((a, b) => a - b) + return [0, ...boundaries].map((start, index) => bytes.slice(start, boundaries[index] ?? bytes.byteLength)) + } + const marker = (label?: string) => { + if (!label) return + const probe = (window as ProbeWindow).__visualStabilityProbe + if (!probe) return + probe.markers.push({ at: performance.now() - probe.startedAt, label }) + } + const frame = (payload: unknown, eventOptions: SseEventOptions = {}) => + [ + eventOptions.event === undefined ? "" : `event: ${eventOptions.event}\n`, + eventOptions.id === undefined ? "" : `id: ${eventOptions.id}\n`, + eventOptions.retry === undefined ? "" : `retry: ${eventOptions.retry}\n`, + `data: ${JSON.stringify(payload)}\n\n`, + ].join("") + const currentEvent = (input: unknown) => { + if (!input || typeof input !== "object" || !("payload" in input)) return input + const envelope = input as { directory?: string; payload?: unknown } + if (!envelope.payload || typeof envelope.payload !== "object") return input + const payload = envelope.payload as { id?: string; type?: string; properties?: unknown } + if (!payload.type) return input + return { + id: payload.id ?? `evt_mock_${Date.now()}`, + created: Date.now(), + type: payload.type, + data: payload.properties ?? {}, + location: + envelope.directory && envelope.directory !== "global" ? { directory: envelope.directory } : undefined, + } + } + const acknowledge = ( + connection: Connection, + bytes: number, + chunkCount: number, + eventID?: string, + ): SseDeliveryAcknowledgement => { + const acknowledgement = { + deliveryID: ++nextDeliveryID, + connectionID: connection.id, + bytes, + chunkCount, + deliveredAt: performance.now(), + ...(eventID === undefined ? {} : { eventID }), + } + acknowledgements.push(acknowledgement) + return acknowledgement + } + const end = (mode: "close" | "disconnect" | "error", message?: string) => { + const connection = current() + if (!connection) throw new Error("SSE transport has no active connection") + connection.endedAt = performance.now() + connection.endedBy = mode + if (message) connection.error = message + if (mode === "close") { + connection.controller.close() + return + } + const error = new DOMException( + message ?? "SSE connection disconnected", + mode === "error" ? "Error" : "NetworkError", + ) + connection.controller.error(error) + } + + const command = (input: BrowserCommand) => { + if (input.type === "connections") + return connections.map(({ controller: _controller, ...connection }) => connection) + if (input.type === "acknowledgements") return acknowledgements + if (input.type === "end") return end(input.mode, input.message) + const connection = current() + if (!connection) throw new Error("SSE transport has no active connection") + if (input.type === "raw") { + marker(input.marker) + const output = chunks(new Uint8Array(input.bytes), input.cuts) + output.forEach((chunk) => connection.controller.enqueue(chunk)) + return acknowledge(connection, input.bytes.length, output.length) + } + const encoded = input.deliveries.map((delivery) => { + const payload = connection.path === "/api/event" ? currentEvent(delivery.payload) : delivery.payload + return { delivery, payload, bytes: encoder.encode(frame(payload, delivery.options)) } + }) + encoded.forEach((item) => marker(item.delivery.options?.marker)) + if (input.burst) { + const bytes = encoder.encode(encoded.map((item) => frame(item.payload, item.delivery.options)).join("")) + connection.controller.enqueue(bytes) + return encoded.map((item) => acknowledge(connection, item.bytes.byteLength, 1, item.delivery.options?.id)) + } + const output = chunks(encoded[0]!.bytes, input.cuts) + output.forEach((chunk) => connection.controller.enqueue(chunk)) + return acknowledge(connection, encoded[0]!.bytes.byteLength, output.length, encoded[0]!.delivery.options?.id) + } + + ;(window as BrowserTransport).__testSseTransport = { command } + const fetch = (input: RequestInfo | URL, init?: RequestInit) => { + const request = new Request(input, init) + const url = new URL(request.url) + if ( + url.origin !== server || + (url.pathname !== "/global/event" && url.pathname !== "/event" && url.pathname !== "/api/event") + ) + return originalFetch(request) + + const id = ++nextConnectionID + const record = { + id, + url: url.href, + path: url.pathname, + headers: Object.fromEntries(request.headers.entries()), + openedAt: performance.now(), + } as Connection + const stream = new ReadableStream({ + start(controller) { + record.controller = controller + connections.push(record) + if (retry !== undefined) controller.enqueue(encoder.encode(`retry: ${retry}\n\n`)) + if (url.pathname === "/api/event") + controller.enqueue( + encoder.encode(frame({ id: `evt_mock_connected_${id}`, type: "server.connected", data: {} })), + ) + request.signal.addEventListener( + "abort", + () => { + if (record.endedAt !== undefined) return + record.endedAt = performance.now() + record.endedBy = "abort" + controller.error(request.signal.reason ?? new DOMException("The operation was aborted", "AbortError")) + }, + { once: true }, + ) + }, + cancel() { + if (record.endedAt !== undefined) return + record.endedAt = performance.now() + record.endedBy = "disconnect" + }, + }) + return Promise.resolve( + new Response(stream, { + status: 200, + headers: { + "cache-control": "no-cache", + "content-type": "text/event-stream", + }, + }), + ) + } + Object.defineProperty(window, "fetch", { configurable: true, writable: true, value: fetch }) + }, + { server, retry: options.retry }, + ) + + const command = (input: BrowserCommand) => + page.evaluate((input) => { + const transport = (window as BrowserTransport).__testSseTransport + if (!transport) throw new Error("SSE transport was not installed before page load") + return transport.command(input as BrowserCommand) + }, input) as Promise + + return { + server, + async waitForConnection(input = {}) { + await page.waitForFunction( + (after) => { + const transport = (window as BrowserTransport).__testSseTransport + const connections = transport?.command({ type: "connections" }) as SseConnectionRecord[] | undefined + return connections?.some((connection) => connection.id > after) + }, + input.after ?? 0, + { timeout: input.timeout }, + ) + return (await command({ type: "connections" })).findLast( + (connection) => connection.id > (input.after ?? 0), + )! + }, + send(payload, eventOptions) { + return command({ type: "send", deliveries: [{ payload, options: eventOptions }], burst: false }) + }, + burst(payloads, eventOptions = []) { + return command({ + type: "send", + deliveries: payloads.map((payload, index) => ({ payload, options: eventOptions[index] })), + burst: true, + }) + }, + split(payload, cuts, eventOptions) { + return command({ type: "send", deliveries: [{ payload, options: eventOptions }], burst: false, cuts: [...cuts] }) + }, + heartbeat(eventOptions) { + return command({ + type: "send", + deliveries: [ + { + payload: { directory: "global", payload: { type: "server.heartbeat", properties: {} } } as T, + options: eventOptions, + }, + ], + burst: false, + }) + }, + writeRaw(value, cuts, marker) { + return command({ + type: "raw", + bytes: Array.from(typeof value === "string" ? new TextEncoder().encode(value) : value), + cuts: cuts ? [...cuts] : undefined, + marker, + }) + }, + close() { + return command({ type: "end", mode: "close" }) + }, + disconnect(message) { + return command({ type: "end", mode: "disconnect", message }) + }, + error(message) { + return command({ type: "end", mode: "error", message }) + }, + connections() { + return command({ type: "connections" }) + }, + acknowledgements() { + return command({ type: "acknowledgements" }) + }, + } +} diff --git a/packages/app/e2e/utils/visual-stability.ts b/packages/app/e2e/utils/visual-stability.ts new file mode 100644 index 000000000000..2c56864ed8dd --- /dev/null +++ b/packages/app/e2e/utils/visual-stability.ts @@ -0,0 +1,54 @@ +import type { Page, TestInfo } from "@playwright/test" +import { analyzeVisualObservations, analyzeVisualTraceByMarker } from "./visual-stability/analyzer" +import { legacyVisualPlan, type LegacyVisualStabilityOptions } from "./visual-stability/invariant" +import type { CapturedFrame, VisualStabilityTrace } from "./visual-stability/model" +import { markVisualProbe, startVisualProbe, stopVisualProbe } from "./visual-stability/probe" +import type { VisualRegionDefinition } from "./visual-stability/regions" +import { reportVisualStability } from "./visual-stability/reporter" + +export * from "./visual-stability/index" + +const capturedFrames = Symbol("capturedFrames") + +export async function startVisualStabilityProbe(page: Page, regions: Record) { + await startVisualProbe(page, regions) +} + +export async function stopVisualStabilityProbe(page: Page) { + const result = await stopVisualProbe(page) + const trace: VisualStabilityTrace = { markers: result.markers, samples: result.samples } + Object.defineProperty(trace, capturedFrames, { value: result.frames }) + return trace +} + +export async function markVisualStability(page: Page, label: string) { + await markVisualProbe(page, label) +} + +export function analyzeVisualStability(trace: VisualStabilityTrace, options: LegacyVisualStabilityOptions = {}) { + return analyzeVisualObservations(trace.samples, legacyVisualPlan(options)) +} + +export function analyzeVisualStabilityByMarker( + trace: VisualStabilityTrace, + options: LegacyVisualStabilityOptions = {}, +) { + return analyzeVisualTraceByMarker(trace, legacyVisualPlan(options)) +} + +export async function expectVisualStability( + testInfo: TestInfo, + name: string, + trace: VisualStabilityTrace, + options: LegacyVisualStabilityOptions = {}, +) { + await reportVisualStability( + testInfo, + name, + { + ...trace, + frames: (trace as VisualStabilityTrace & { [capturedFrames]?: CapturedFrame[] })[capturedFrames] ?? [], + }, + legacyVisualPlan(options), + ) +} diff --git a/packages/app/e2e/utils/visual-stability/analyzer.ts b/packages/app/e2e/utils/visual-stability/analyzer.ts new file mode 100644 index 000000000000..902d222e1da8 --- /dev/null +++ b/packages/app/e2e/utils/visual-stability/analyzer.ts @@ -0,0 +1,209 @@ +import type { VisualInvariant, VisualPlan } from "./invariant" +import type { VisualObservation, VisualStabilityTrace } from "./model" + +export function analyzeVisualObservations( + observations: readonly VisualObservation[], + plan: VisualPlan, +) { + const issues: string[] = [] + const invariants = plan.invariants + const names = [...new Set(observations.flatMap((sample) => Object.keys(sample.regions) as RegionName[]))] + const required = regions(invariants, "required") + const continuousAny = invariants.filter( + (invariant): invariant is Extract, { type: "continuous-any" }> => + invariant.type === "continuous-any", + ) + const unique = new Set(regions(invariants, "unique")) + const stable = new Set(regions(invariants, "stable")) + const fixed = invariants.filter( + (invariant): invariant is Extract, { type: "fixed" }> => invariant.type === "fixed", + ) + const opacity = invariants.filter( + (invariant): invariant is Extract, { type: "opacity" }> => invariant.type === "opacity", + ) + const continuity = invariants.filter( + (invariant): invariant is Extract, { type: "continuity" }> => + invariant.type === "continuity", + ) + const motion = invariants.filter( + (invariant): invariant is Extract, { type: "motion" }> => invariant.type === "motion", + ) + const labelStability = invariants.filter( + (invariant): invariant is Extract, { type: "label-stability" }> => + invariant.type === "label-stability", + ) + + for (const name of new Set(required)) { + if (!observations.some((sample) => sample.regions[name]?.visible)) issues.push(`${name} never rendered`) + } + for (const invariant of continuousAny) { + if (!invariant.regions.some((name) => observations.some((sample) => sample.regions[name]?.visible))) + issues.push(`${invariant.regions.join(" | ")} never rendered`) + } + + for (const name of names) { + const samples = observations.flatMap((observation) => { + const region = observation.regions[name] + if (!region) return [] + const clipped = + observation.viewport && (region.bottom <= observation.viewport.top || region.top >= observation.viewport.bottom) + return [{ at: observation.at, ...region, visible: region.visible && !clipped }] + }) + const visible = samples.filter((sample) => sample.visible) + if (visible.length === 0) continue + if (unique.has(name)) { + const duplicate = samples.find((sample) => sample.count > 1) + if (duplicate) issues.push(`${name} appeared ${duplicate.count} times at ${Math.round(duplicate.at)}ms`) + } + if (stable.has(name)) { + const identities = [...new Set(visible.map((sample) => sample.node).filter((node) => node > 0))] + if (identities.length > 1) issues.push(`${name} remounted ${identities.length - 1} times`) + } + for (const invariant of fixed.filter((invariant) => includes(invariant.regions, name))) { + const origin = visible[0] + const movement = origin ? Math.max(0, ...visible.map((sample) => Math.abs(sample.top - origin.top))) : 0 + if (movement > (invariant.tolerance ?? 1)) + issues.push(`${name} moved ${Math.round(movement * 10) / 10}px in the viewport`) + } + for (const invariant of opacity.filter((invariant) => includes(invariant.regions, name))) { + for (const sample of visible) { + if (sample.opacity < (invariant.floor ?? 0.65)) + issues.push(`${name} opacity fell to ${sample.opacity} at ${Math.round(sample.at)}ms`) + } + } + if (continuity.some((invariant) => includes(invariant.regions, name))) { + const firstPresent = samples.findIndex((sample) => sample.present) + const lastPresent = samples.findLastIndex((sample) => sample.present) + if (samples.slice(firstPresent, lastPresent + 1).some((sample) => !sample.present)) + issues.push(`${name} disappeared between present frames`) + const firstVisible = samples.findIndex((sample) => sample.visible) + const lastVisible = samples.findLastIndex((sample) => sample.visible) + if ( + firstVisible >= 0 && + samples.slice(firstVisible, lastVisible + 1).some((sample) => !sample.visible && sample.inViewport) + ) + issues.push(`${name} blanked between visible frames`) + } + for (const invariant of motion.filter((invariant) => includes(invariant.regions, name))) { + for (const metric of ["top", "bottom", "width", "height"] as const) { + const directions = visible + .slice(1) + .map((sample, index) => sample[metric] - visible[index]![metric]) + .filter((delta) => Math.abs(delta) > (invariant.tolerance ?? 1)) + .map(Math.sign) + const reversals = directions.slice(1).filter((direction, index) => direction !== directions[index]).length + const allowed = + metric === "top" || metric === "bottom" + ? (invariant.maxPositionReversals ?? invariant.maxReversals ?? 1) + : (invariant.maxReversals ?? 1) + if (reversals > allowed) issues.push(`${name} ${metric} reversed ${reversals} times`) + } + } + if (labelStability.some((invariant) => includes(invariant.regions, name))) { + const labels = samples + .map((sample) => sample.label) + .filter((label) => label.length > 0) + .filter((label, index, all) => label !== all[index - 1]) + if (labels.some((label, index) => labels.indexOf(label) !== index)) + issues.push(`${name} label reverted: ${labels.join(" -> ")}`) + } + } + + if (invariants.some((invariant) => invariant.type === "preserve-bottom-anchor")) { + const viewports = observations.flatMap((sample) => (sample.viewport ? [sample.viewport] : [])) + if (viewports[0] && viewports[0].distanceFromBottom <= 4) { + const lost = viewports.find((viewport) => viewport.distanceFromBottom > 4) + if (lost) issues.push(`bottom anchor moved to ${lost.distanceFromBottom}px`) + } + } + if (invariants.some((invariant) => invariant.type === "acquire-bottom-anchor")) { + const final = observations.findLast((sample) => sample.viewport)?.viewport + if (!final || final.distanceFromBottom > 4) + issues.push(`did not acquire bottom anchor${final ? ` (${final.distanceFromBottom}px away)` : ""}`) + } + + for (const invariant of continuousAny) { + const active = observations.map((sample) => invariant.regions.some((name) => sample.regions[name]?.visible)) + const first = active.indexOf(true) + const last = active.lastIndexOf(true) + if (first >= 0 && active.slice(first, last + 1).some((value) => !value)) + issues.push(`${invariant.regions.join(" | ")} blanked between visible frames`) + } + + for (const invariant of invariants.filter( + (item): item is Extract, { type: "flow" }> => item.type === "flow", + )) { + for (const [before, after] of invariant.regions + .slice(1) + .map((after, index) => [invariant.regions[index]!, after])) { + let maximum: { overlap: number; at: number } | undefined + let inverted: { at: number } | undefined + for (const sample of observations) { + const first = sample.regions[before] + const second = sample.regions[after] + if (!first?.visible || !second?.visible) continue + if ( + sample.viewport && + (first.bottom <= sample.viewport.top || + first.top >= sample.viewport.bottom || + second.bottom <= sample.viewport.top || + second.top >= sample.viewport.bottom) + ) + continue + const overlap = first.bottom - second.top + if (first.top > second.top && !inverted) inverted = { at: sample.at } + if (overlap > (invariant.overlapTolerance ?? 0.5) && (!maximum || overlap > maximum.overlap)) + maximum = { overlap, at: sample.at } + } + if (inverted) issues.push(`${before} rendered after ${after} at ${Math.round(inverted.at)}ms`) + if (maximum) + issues.push( + `${before} overlapped ${after} by ${Math.round(maximum.overlap * 10) / 10}px at ${Math.round(maximum.at)}ms`, + ) + } + } + return [...new Set(issues)] +} + +export function analyzeVisualTraceByMarker( + trace: VisualStabilityTrace, + plan: VisualPlan, +) { + if (trace.markers.length === 0) return analyzeVisualObservations(trace.samples, plan) + const required = [...new Set(plan.markerRequired ?? regions(plan.invariants, "required"))].flatMap((name) => + trace.samples.some((sample) => sample.regions[name]?.visible) ? [] : [`${name} never rendered`], + ) + const withoutRequired = plan.invariants.filter((invariant) => invariant.type !== "required") + const windows = trace.markers.flatMap((marker, index) => { + const end = trace.markers[index + 1]?.at ?? Infinity + const before = trace.samples.findLast((sample) => sample.at < marker.at) + const samples = [ + ...(before ? [before] : []), + ...trace.samples.filter((sample) => sample.at >= marker.at && sample.at < end), + ] + if (samples.length < 2) return [] + return analyzeVisualObservations(samples, { ...plan, perMarker: false, invariants: withoutRequired }).map( + (issue) => `${marker.label}: ${issue}`, + ) + }) + const aggregateMotion = + plan.aggregateMotion === false + ? [] + : analyzeVisualObservations(trace.samples, { + invariants: plan.invariants.filter((invariant) => invariant.type === "motion"), + }).filter((issue) => / (?:top|bottom|width|height) reversed \d+ times$/.test(issue)) + return [...new Set([...required, ...aggregateMotion, ...windows])] +} + +function regions["type"]>( + invariants: readonly VisualInvariant[], + type: Type, +) { + return invariants.flatMap((invariant) => + invariant.type === type && "regions" in invariant && invariant.regions !== "all" ? [...invariant.regions] : [], + ) as RegionName[] +} + +function includes(regions: readonly RegionName[] | "all", name: RegionName) { + return regions === "all" || regions.includes(name) +} diff --git a/packages/app/e2e/utils/visual-stability/capture.ts b/packages/app/e2e/utils/visual-stability/capture.ts new file mode 100644 index 000000000000..3bb583a9d5a4 --- /dev/null +++ b/packages/app/e2e/utils/visual-stability/capture.ts @@ -0,0 +1,51 @@ +import type { CDPSession, Page } from "@playwright/test" +import type { CapturedFrame } from "./model" + +export type VisualCapture = { + session: CDPSession + frames: CapturedFrame[] + startedAtEpoch: number + running: boolean + capture: Promise +} + +export async function startVisualCapture(page: Page, startedAtEpoch: number) { + if (process.env.OPENCODE_STABILITY_CAPTURE !== "1") return + const session = await page.context().newCDPSession(page) + await session.send("Page.enable") + const recording: VisualCapture = { + session, + frames: [], + startedAtEpoch, + running: true, + capture: Promise.resolve(), + } + recording.capture = (async () => { + try { + while (recording.running && recording.frames.length < 900) { + const frame = await session.send("Page.captureScreenshot", { + format: "jpeg", + quality: 80, + captureBeyondViewport: false, + optimizeForSpeed: true, + }) + recording.frames.push({ at: Date.now() - recording.startedAtEpoch, data: frame.data }) + await new Promise((resolve) => setTimeout(resolve, 50)) + } + } catch { + recording.running = false + } + })() + return recording +} + +export async function stopVisualCapture(recording: VisualCapture | undefined) { + if (!recording) return [] + recording.running = false + try { + await recording.capture + } finally { + await recording.session.detach().catch(() => undefined) + } + return recording.frames +} diff --git a/packages/app/e2e/utils/visual-stability/index.ts b/packages/app/e2e/utils/visual-stability/index.ts new file mode 100644 index 000000000000..6fdbf4acfc60 --- /dev/null +++ b/packages/app/e2e/utils/visual-stability/index.ts @@ -0,0 +1,8 @@ +export * from "./analyzer" +export * from "./capture" +export * from "./invariant" +export * from "./model" +export * from "./probe" +export * from "./regions" +export * from "./reporter" +export * from "./scenario" diff --git a/packages/app/e2e/utils/visual-stability/invariant.ts b/packages/app/e2e/utils/visual-stability/invariant.ts new file mode 100644 index 000000000000..17f6ef191361 --- /dev/null +++ b/packages/app/e2e/utils/visual-stability/invariant.ts @@ -0,0 +1,112 @@ +import type { VisualRegionDefinition } from "./regions" + +type RegionSet = readonly RegionName[] | "all" + +export type VisualInvariant = + | { type: "required"; regions: readonly RegionName[] } + | { type: "continuous-any"; regions: readonly RegionName[] } + | { type: "unique"; regions: readonly RegionName[] } + | { type: "stable"; regions: readonly RegionName[] } + | { type: "fixed"; regions: readonly RegionName[]; tolerance?: number } + | { type: "opacity"; regions: RegionSet; floor?: number } + | { + type: "motion" + regions: RegionSet + tolerance?: number + maxReversals?: number + maxPositionReversals?: number + } + | { type: "continuity"; regions: RegionSet } + | { type: "label-stability"; regions: RegionSet } + | { type: "flow"; regions: readonly RegionName[]; overlapTolerance?: number } + | { type: "preserve-bottom-anchor" } + | { type: "acquire-bottom-anchor" } + +export type VisualPlan = { + regionNames?: readonly RegionName[] + invariants: readonly VisualInvariant[] + markerRequired?: readonly RegionName[] + perMarker?: boolean + aggregateMotion?: boolean +} + +export type LegacyVisualStabilityOptions = { + flow?: RegionName[] + motionTolerance?: number + opacityFloor?: number + overlapTolerance?: number + maxReversals?: number + maxPositionReversals?: number + stable?: RegionName[] + fixed?: RegionName[] + motion?: RegionName[] + unique?: RegionName[] + preserveBottomAnchor?: boolean + acquireBottomAnchor?: boolean + perMarker?: boolean + continuousAny?: RegionName[][] + required?: RegionName[] + aggregateMotion?: boolean + inferRequired?: boolean +} + +export function visualPlan>( + regions: Regions, + invariants: readonly VisualInvariant>[], + options: Omit>, "regionNames" | "invariants"> = {}, +): VisualPlan> { + return { ...options, regionNames: Object.keys(regions) as Extract[], invariants } +} + +export function legacyVisualPlan( + options: LegacyVisualStabilityOptions = {}, +): VisualPlan { + const inferred = + options.inferRequired === false + ? [] + : [ + ...(options.stable ?? []), + ...(options.fixed ?? []), + ...(options.unique ?? []), + ...(options.motion ?? []), + ...(options.flow ?? []), + ] + return { + perMarker: options.perMarker, + aggregateMotion: options.aggregateMotion, + markerRequired: [ + ...(options.required ?? []), + ...(options.stable ?? []), + ...(options.fixed ?? []), + ...(options.unique ?? []), + ...(options.motion ?? []), + ...(options.flow ?? []), + ], + invariants: [ + { type: "required", regions: [...(options.required ?? []), ...inferred] }, + ...(options.continuousAny ?? []).map( + (regions): VisualInvariant => ({ type: "continuous-any", regions }), + ), + ...(options.unique ? [{ type: "unique" as const, regions: options.unique }] : []), + ...(options.stable ? [{ type: "stable" as const, regions: options.stable }] : []), + ...(options.fixed + ? [{ type: "fixed" as const, regions: options.fixed, tolerance: options.motionTolerance }] + : []), + { type: "opacity", regions: "all", floor: options.opacityFloor }, + { type: "continuity", regions: "all" }, + { + type: "motion", + regions: options.motion ?? "all", + tolerance: options.motionTolerance, + maxReversals: options.maxReversals, + maxPositionReversals: options.maxPositionReversals, + }, + { type: "label-stability", regions: "all" }, + ...(options.preserveBottomAnchor ? [{ type: "preserve-bottom-anchor" as const }] : []), + ...(options.acquireBottomAnchor ? [{ type: "acquire-bottom-anchor" as const }] : []), + ...(options.flow + ? [{ type: "flow" as const, regions: options.flow, overlapTolerance: options.overlapTolerance }] + : []), + ], + } +} diff --git a/packages/app/e2e/utils/visual-stability/model.ts b/packages/app/e2e/utils/visual-stability/model.ts new file mode 100644 index 000000000000..1b966638c9ce --- /dev/null +++ b/packages/app/e2e/utils/visual-stability/model.ts @@ -0,0 +1,47 @@ +export type VisualRegionSample = { + present: boolean + visible: boolean + inViewport: boolean + cssHidden?: boolean + top: number + bottom: number + layoutTop?: number + layoutBottom?: number + width: number + height: number + opacity: number + count: number + node: number + label: string + text: string +} + +export type VisualViewportSample = { + top: number + bottom: number + scrollTop: number + scrollHeight: number + clientHeight: number + distanceFromBottom: number +} + +export type VisualObservation = { + at: number + regions: string extends RegionName + ? Record + : Partial> + viewport?: VisualViewportSample +} + +export type VisualMarker = { at: number; label: string } + +export type VisualStabilityTrace = { + markers: VisualMarker[] + samples: VisualObservation[] +} + +export type CapturedFrame = { at: number; data: string } + +export type VisualProbeResult = VisualStabilityTrace & { + frames: CapturedFrame[] +} diff --git a/packages/app/e2e/utils/visual-stability/probe.ts b/packages/app/e2e/utils/visual-stability/probe.ts new file mode 100644 index 000000000000..abf274d3592a --- /dev/null +++ b/packages/app/e2e/utils/visual-stability/probe.ts @@ -0,0 +1,226 @@ +import type { Page } from "@playwright/test" +import { startVisualCapture, stopVisualCapture, type VisualCapture } from "./capture" +import type { VisualMarker, VisualObservation, VisualProbeResult } from "./model" +import type { VisualRegionDefinition } from "./regions" + +type ProbeWindow = Window & { + __visualStabilityProbe?: { + startedAt: number + markers: VisualMarker[] + samples: VisualObservation[] + stop: () => void + } +} + +const captures = new WeakMap() + +export async function startVisualProbe>( + page: Page, + regions: Regions, +) { + await stopCapture(page) + await page.evaluate(() => { + ;(window as ProbeWindow).__visualStabilityProbe?.stop() + }) + const startedAtEpoch = await page.evaluate((regions) => { + const samples: VisualObservation[] = [] + const markers: VisualMarker[] = [] + const startedAt = performance.now() + const nodes = new WeakMap() + const lastBounds = new Map() + let nextNode = 1 + let running = true + const round = (value: number) => Math.round(value * 10) / 10 + const opacity = (element: Element) => Number(getComputedStyle(element).opacity) + const sample = () => { + if (!running) return + setTimeout(() => { + if (!running) return + const viewport = [...document.querySelectorAll(".scroll-view__viewport")].find((element) => + element.querySelector("[data-timeline-row]"), + ) + const viewportRect = viewport?.getBoundingClientRect() + samples.push({ + at: performance.now() - startedAt, + viewport: viewport + ? { + top: round(viewportRect!.top), + bottom: round(viewportRect!.bottom), + scrollTop: round(viewport.scrollTop), + scrollHeight: round(viewport.scrollHeight), + clientHeight: round(viewport.clientHeight), + distanceFromBottom: round(viewport.scrollHeight - viewport.clientHeight - viewport.scrollTop), + } + : undefined, + regions: Object.fromEntries( + Object.entries(regions).map(([name, config]) => { + const found = document.querySelector(config.selector) + const count = document.querySelectorAll(config.selector).length + const element = config.closest ? found?.closest(config.closest) : found + if (!element) + return [ + name, + { + present: false, + visible: false, + inViewport: false, + top: 0, + bottom: 0, + width: 0, + height: 0, + opacity: 0, + count, + node: 0, + label: "", + text: "", + }, + ] + const rect = element.getBoundingClientRect() + const style = getComputedStyle(element) + if (rect.height > 0) lastBounds.set(name, { top: rect.top, bottom: rect.bottom }) + const known = rect.height > 0 ? rect : lastBounds.get(name) + const painted = (() => { + const result = { top: rect.top, bottom: rect.bottom, left: rect.left, right: rect.right } + let parent = element.parentElement + while (parent) { + const parentStyle = getComputedStyle(parent) + if (["hidden", "clip", "scroll", "auto"].includes(parentStyle.overflowY)) { + const parentRect = parent.getBoundingClientRect() + result.top = Math.max(result.top, parentRect.top) + result.bottom = Math.min(result.bottom, parentRect.bottom) + } + if (["hidden", "clip", "scroll", "auto"].includes(parentStyle.overflowX)) { + const parentRect = parent.getBoundingClientRect() + result.left = Math.max(result.left, parentRect.left) + result.right = Math.min(result.right, parentRect.right) + } + if (parent === viewport) break + parent = parent.parentElement + } + if (viewportRect) { + result.top = Math.max(result.top, viewportRect.top) + result.bottom = Math.min(result.bottom, viewportRect.bottom) + result.left = Math.max(result.left, viewportRect.left) + result.right = Math.min(result.right, viewportRect.right) + } + return result + })() + const contentOpacity = config.opacitySelectors?.length + ? Math.max( + 0, + ...config.opacitySelectors.flatMap((selector) => + [...element.querySelectorAll(selector)].map((node) => { + let value = 1 + let current: Element | null = node + while (current) { + value *= opacity(current) + if (current === element) break + current = current.parentElement + } + return value + }), + ), + ) + : opacity(element) + let visibleOpacity = contentOpacity + let ancestor = element.parentElement + let ancestorHidden = false + while (ancestor) { + const ancestorStyle = getComputedStyle(ancestor) + visibleOpacity *= Number(ancestorStyle.opacity) + if (ancestorStyle.display === "none" || ancestorStyle.visibility === "hidden") ancestorHidden = true + if (ancestor === viewport) break + ancestor = ancestor.parentElement + } + const cssHidden = + ancestorHidden || style.display === "none" || style.visibility === "hidden" || visibleOpacity === 0 + return [ + name, + { + present: true, + visible: + style.display !== "none" && + style.visibility !== "hidden" && + visibleOpacity > 0 && + painted.right > painted.left && + painted.bottom > painted.top, + inViewport: + !viewportRect || (!!known && known.bottom > viewportRect.top && known.top < viewportRect.bottom), + cssHidden, + top: round(painted.top), + bottom: round(painted.bottom), + layoutTop: round(rect.top), + layoutBottom: round(rect.bottom), + width: round(painted.right - painted.left), + height: round(painted.bottom - painted.top), + opacity: round(visibleOpacity), + count, + node: (() => { + const current = nodes.get(element) + if (current) return current + nodes.set(element, nextNode) + return nextNode++ + })(), + label: element.getAttribute("aria-label") ?? "", + text: (element.textContent ?? "").trim().replace(/\s+/g, " ").slice(0, 500), + }, + ] + }), + ), + }) + requestAnimationFrame(sample) + }, 0) + } + ;(window as ProbeWindow).__visualStabilityProbe = { + startedAt, + markers, + samples, + stop: () => { + running = false + }, + } + requestAnimationFrame(sample) + return new Promise((resolve) => { + const ready = () => { + if (samples.length > 0) return resolve(performance.timeOrigin + startedAt) + requestAnimationFrame(ready) + } + ready() + }) + }, regions) + const capture = await startVisualCapture(page, startedAtEpoch) + if (capture) captures.set(page, capture) +} + +export async function stopVisualProbe( + page: Page, +): Promise> { + return page + .evaluate(() => { + const probe = (window as ProbeWindow).__visualStabilityProbe + if (!probe) throw new Error("Visual stability probe is not running") + probe.stop() + return { markers: probe.markers, samples: probe.samples } + }) + .then( + async (trace) => ({ ...trace, frames: await stopCapture(page) }) as unknown as VisualProbeResult, + async (error: unknown) => { + await stopCapture(page) + throw error + }, + ) +} + +export async function markVisualProbe(page: Page, label: string) { + await page.evaluate((label) => { + const probe = (window as ProbeWindow).__visualStabilityProbe + if (!probe) return + probe.markers.push({ at: performance.now() - probe.startedAt, label }) + }, label) +} + +async function stopCapture(page: Page) { + const capture = captures.get(page) + if (capture) captures.delete(page) + return stopVisualCapture(capture) +} diff --git a/packages/app/e2e/utils/visual-stability/regions.ts b/packages/app/e2e/utils/visual-stability/regions.ts new file mode 100644 index 000000000000..4c0b34e78a2a --- /dev/null +++ b/packages/app/e2e/utils/visual-stability/regions.ts @@ -0,0 +1,18 @@ +export type VisualRegionDefinition = { + selector: string + closest?: string + opacitySelectors?: readonly string[] +} + +export function defineVisualRegions>(regions: Regions) { + return regions +} + +export function mapVisualRegions, Result>( + regions: Regions, + map: (region: Regions[keyof Regions], name: keyof Regions) => Result, +) { + return Object.fromEntries( + Object.entries(regions).map(([name, region]) => [name, map(region as Regions[keyof Regions], name)]), + ) as { [Name in keyof Regions]: Result } +} diff --git a/packages/app/e2e/utils/visual-stability/reporter.ts b/packages/app/e2e/utils/visual-stability/reporter.ts new file mode 100644 index 000000000000..db283072a846 --- /dev/null +++ b/packages/app/e2e/utils/visual-stability/reporter.ts @@ -0,0 +1,63 @@ +import { expect, type TestInfo } from "@playwright/test" +import { writeFile } from "node:fs/promises" +import { analyzeVisualObservations, analyzeVisualTraceByMarker } from "./analyzer" +import type { VisualPlan } from "./invariant" +import type { VisualProbeResult } from "./model" + +export async function reportVisualStability( + testInfo: TestInfo, + name: string, + result: VisualProbeResult, + plan: VisualPlan, +) { + const trace = { markers: result.markers, samples: result.samples } + const issues = plan.perMarker + ? analyzeVisualTraceByMarker(trace, plan) + : analyzeVisualObservations(result.samples, plan) + const tracePath = testInfo.outputPath(`${name}-visual-trace.json`) + const issuesPath = testInfo.outputPath(`${name}-visual-issues.json`) + await writeFile(tracePath, JSON.stringify(trace, null, 2)) + await writeFile( + issuesPath, + JSON.stringify({ issues, markers: result.markers, capturedFrameCount: result.frames.length }, null, 2), + ) + await testInfo.attach(`${name}-visual-trace`, { path: tracePath, contentType: "application/json" }) + await testInfo.attach(`${name}-visual-issues`, { path: issuesPath, contentType: "application/json" }) + if (issues.length) await attachViolationFrames(testInfo, name, result, issues) + expect(issues, `${name}: ${issues.join("\n")}`).toEqual([]) +} + +async function attachViolationFrames( + testInfo: TestInfo, + name: string, + result: VisualProbeResult, + issues: string[], +) { + if (result.frames.length === 0) return + const targets = [ + ...new Set( + issues.flatMap((issue) => { + const match = issue.match(/ at (\d+)ms/) + if (match) return [Number(match[1])] + const marker = result.markers.find((item) => issue.startsWith(`${item.label}:`)) + return marker ? [marker.at] : [] + }), + ), + ].slice(0, 6) + for (const [violation, target] of targets.entries()) { + const nearest = result.frames.reduce( + (best, frame, index) => (Math.abs(frame.at - target) < Math.abs(result.frames[best]!.at - target) ? index : best), + 0, + ) + for (const [label, index] of [ + ["before", Math.max(0, nearest - 1)], + ["violation", nearest], + ["after", Math.min(result.frames.length - 1, nearest + 1)], + ] as const) { + await testInfo.attach(`${name}-${violation + 1}-${label}-${Math.round(result.frames[index]!.at)}ms`, { + body: Buffer.from(result.frames[index]!.data, "base64"), + contentType: "image/jpeg", + }) + } + } +} diff --git a/packages/app/e2e/utils/visual-stability/scenario.ts b/packages/app/e2e/utils/visual-stability/scenario.ts new file mode 100644 index 000000000000..213630207144 --- /dev/null +++ b/packages/app/e2e/utils/visual-stability/scenario.ts @@ -0,0 +1,20 @@ +import type { Page, TestInfo } from "@playwright/test" +import type { VisualPlan } from "./invariant" +import { startVisualProbe, stopVisualProbe } from "./probe" +import type { VisualRegionDefinition } from "./regions" +import { reportVisualStability } from "./reporter" + +export async function runVisualStabilityScenario>(input: { + page: Page + testInfo: TestInfo + name: string + regions: Regions + plan: VisualPlan> + run: () => Promise +}) { + await startVisualProbe(input.page, input.regions) + await input.run() + const result = await stopVisualProbe>(input.page) + await reportVisualStability(input.testInfo, input.name, result, input.plan) + return result +} diff --git a/packages/app/package.json b/packages/app/package.json index b8f52ebfc75d..05606904810e 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@opencode-ai/app", - "version": "1.17.11", + "version": "1.18.4", "description": "", "type": "module", "exports": { @@ -13,6 +13,7 @@ }, "scripts": { "typecheck": "tsgo -b", + "typecheck:e2e": "tsgo -p e2e/tsconfig.json", "start": "vite", "dev": "vite", "build": "vite build", @@ -25,6 +26,7 @@ "test:e2e:local": "playwright test", "test:e2e:ui": "playwright test --ui", "test:e2e:report": "playwright show-report e2e/playwright-report", + "test:stability": "bun test ./e2e/performance/unit/visual-stability.test.ts && playwright test --config e2e/performance/timeline-stability/playwright.config.ts", "test:bench": "bun test ./e2e/performance/unit && playwright test --config e2e/performance/playwright.config.ts" }, "license": "MIT", @@ -38,19 +40,23 @@ "@types/luxon": "catalog:", "@types/node": "catalog:", "@typescript/native-preview": "catalog:", + "tw-animate-css": "1.4.0", "typescript": "catalog:", "vite": "catalog:", "vite-plugin-icons-spritesheet": "3.0.1", "vite-plugin-solid": "catalog:" }, "dependencies": { + "@corvu/drawer": "catalog:", "@dnd-kit/abstract": "0.5.0", "@dnd-kit/dom": "0.5.0", "@dnd-kit/helpers": "0.5.0", "@dnd-kit/solid": "0.5.0", "@kobalte/core": "catalog:", + "@opencode-ai/client": "file:vendor/opencode-ai-client-1.17.13.tgz", "@opencode-ai/core": "workspace:*", - "@opencode-ai/sdk": "workspace:*", + "@opencode-ai/schema": "workspace:*", + "@opencode-ai/sdk": "1.18.5", "@opencode-ai/session-ui": "workspace:*", "@opencode-ai/ui": "workspace:*", "@pierre/trees": "1.0.0-beta.4", @@ -76,7 +82,7 @@ "diff": "catalog:", "effect": "catalog:", "fuzzysort": "catalog:", - "ghostty-web": "github:anomalyco/ghostty-web#513463a6f1190253057e8a3f0dac8f6ee8393553", + "ghostty-web": "github:anomalyco/ghostty-web#83c0a07b8628b748aed073b232cb4b52a6ca11c1", "luxon": "catalog:", "marked": "catalog:", "marked-shiki": "catalog:", @@ -84,6 +90,7 @@ "shiki": "catalog:", "solid-js": "catalog:", "solid-list": "catalog:", + "solid-presence": "0.2.0", "tailwindcss": "catalog:" } } diff --git a/packages/app/src/addons/serialize.test.ts b/packages/app/src/addons/serialize.test.ts index 6828e60f8479..d45af34c43cb 100644 --- a/packages/app/src/addons/serialize.test.ts +++ b/packages/app/src/addons/serialize.test.ts @@ -37,6 +37,14 @@ function writeAndWait(term: Terminal, data: string): Promise { } describe("SerializeAddon", () => { + test("preserves color scheme reporting mode", async () => { + const { term, addon } = createTerminal() + await writeAndWait(term, "\x1b[?2031h") + + expect(addon.serialize().startsWith("\x1b[?2031h")).toBe(true) + expect(addon.serialize({ excludeModes: true }).startsWith("\x1b[?2031h")).toBe(false) + }) + describe("ANSI color preservation", () => { test("should preserve text attributes (bold, italic, underline)", async () => { const { term, addon } = createTerminal() diff --git a/packages/app/src/addons/serialize.ts b/packages/app/src/addons/serialize.ts index 3823fb443afe..515153488c1d 100644 --- a/packages/app/src/addons/serialize.ts +++ b/packages/app/src/addons/serialize.ts @@ -89,6 +89,13 @@ const getTerminalBuffers = (value: ITerminalCore): TerminalBuffers | undefined = return { active, normal, alternate } } +const getTerminalMode = (value: ITerminalCore, mode: number) => { + if (!isRecord(value)) return false + const terminal = value.wasmTerm + if (!isRecord(terminal) || typeof terminal.getMode !== "function") return false + return terminal.getMode(mode) === true +} + // ============================================================================ // Types // ============================================================================ @@ -544,7 +551,8 @@ export class SerializeAddon implements ITerminalAddon { return "" } - let content = options?.range + let content = !options?.excludeModes && getTerminalMode(this._terminal, 2031) ? "\u001b[?2031h" : "" + content += options?.range ? this._serializeBufferByRange(normalBuffer, options.range, true) : this._serializeBufferByScrollback(normalBuffer, options?.scrollback) diff --git a/packages/app/src/app.tsx b/packages/app/src/app.tsx index 6a1c8f268dc5..b4496ba7de1f 100644 --- a/packages/app/src/app.tsx +++ b/packages/app/src/app.tsx @@ -9,9 +9,19 @@ import { Font } from "@opencode-ai/ui/font" import { Splash } from "@opencode-ai/ui/logo" import { ThemeProvider } from "@opencode-ai/ui/theme/context" import { MetaProvider } from "@solidjs/meta" -import { type BaseRouterProps, Navigate, Route, Router, useParams, useSearchParams } from "@solidjs/router" +import { + type BaseRouterProps, + Navigate, + Route, + Router, + useLocation, + useNavigate, + useParams, + useSearchParams, +} from "@solidjs/router" import { QueryClient, QueryClientProvider } from "@tanstack/solid-query" import { Effect } from "effect" +import { base64Encode } from "@opencode-ai/core/util/encode" import { type Component, createEffect, @@ -28,10 +38,11 @@ import { Show, } from "solid-js" import { Dynamic } from "solid-js/web" -import { CommandProvider } from "@/context/command" +import { makeEventListener } from "@solid-primitives/event-listener" +import { CommandProvider, useCommand, type CommandOption } from "@/context/command" import { CommentsProvider } from "@/context/comments" import { FileProvider } from "@/context/file" -import { ServerSDKProvider, useServerSDK } from "@/context/server-sdk" +import { ServerSDKProvider } from "@/context/server-sdk" import { ServerSyncProvider, useServerSync } from "@/context/server-sync" import { GlobalProvider, useGlobal } from "@/context/global" import { HighlightsProvider } from "@/context/highlights" @@ -40,10 +51,10 @@ import { LayoutProvider } from "@/context/layout" import { ModelsProvider } from "@/context/models" import { NotificationProvider } from "@/context/notification" import { PermissionProvider } from "@/context/permission" +import { usePlatform } from "@/context/platform" import { PromptProvider } from "@/context/prompt" import { ServerConnection, ServerProvider, serverName, useServer } from "@/context/server" import { SettingsProvider, useSettings } from "@/context/settings" -import { TerminalProvider } from "@/context/terminal" import { TabsProvider, useTabs, type DraftTab } from "@/context/tabs" import { SDKProvider, useSDK } from "@/context/sdk" import { WslServersProvider } from "@/wsl/context" @@ -52,16 +63,10 @@ import LegacyLayout from "@/pages/layout" import NewLayout from "@/pages/layout-new" import { ErrorPage } from "./pages/error" import { useCheckServerHealth } from "./utils/server-health" -import { - legacySessionHref, - legacySessionServer, - requireServerKey, - selectSessionLineage, - sessionHref, -} from "./utils/session-route" -import { isSessionNotFoundError } from "./utils/server-errors" - -import Session from "@/pages/session" +import { legacySessionHref, legacySessionServer, requireServerKey, sessionHref } from "./utils/session-route" +import { createSessionLineage } from "@/pages/session/session-lineage" + +import { SessionPage, SessionRouteErrorBoundary, TargetSessionRouteContent } from "@/pages/session" import { NewHome, LegacyHome } from "@/pages/home" const NewSession = lazy(() => import("@/pages/new-session")) @@ -96,13 +101,13 @@ const SessionRoute = () => { }) return ( - - - + + + ) } -const TargetSessionRoute = () => { +function TargetServerRoute(props: ParentProps) { const params = useParams<{ serverKey: string; id: string }>() const global = useGlobal() const conn = createMemo(() => { @@ -111,82 +116,54 @@ const TargetSessionRoute = () => { }) return ( + // Owns the server-identity remount. Session changes must NOT remount this + // subtree (SessionRouteErrorBoundary resets and createSessionLineage + // re-resolves reactively instead); both rely on this key for server changes. - - - + {props.children} ) } -function ResolvedTargetSessionRoute() { +const TargetSessionRoute = () => ( + + + +) + +function LegacyTargetSessionRoute() { const params = useParams<{ serverKey: string; id: string }>() - const settings = useSettings() - const tabs = useTabs() + return ( + + + + + + ) +} + +function LegacyTargetSessionRedirect() { + const params = useParams<{ id: string }>() + const navigate = useNavigate() const sync = useServerSync() - const serverKey = createMemo(() => requireServerKey(params.serverKey)) - const cached = createMemo(() => sync().session.lineage.peek(params.id)) - const [resolved] = createResource( - () => { - if (cached()) return - return { id: params.id, server: serverKey(), sync: sync() } - }, - ({ id, server, sync }) => - sync.session.lineage.resolve(id).catch((error) => { - if (isSessionNotFoundError(error, id)) tabs.removeSessionTab({ server, sessionId: id }) - throw error - }), + const current = createSessionLineage( + () => params.id, + () => sync().session.lineage, ) - const current = createMemo(() => selectSessionLineage(params.id, cached(), resolved())) - const directory = createMemo(() => current()?.session.directory) - const targetDirectory = () => directory()! createEffect(() => { - const session = current() - if (!session) return - tabs.addSessionTab({ - server: serverKey(), - sessionId: session.root.id, - }) + const directory = current()?.session.directory + if (!directory) return + navigate(legacySessionHref(directory, params.id), { replace: true }) }) - return ( - params.id}> - }> - - } - > - - - - - - - - - - ) -} - -function TargetSessionPage() { - const sdk = useSDK() - const serverSDK = useServerSDK() - return ( - - - - - - ) + return null } // Wraps the non-draft routes. They are gated on (and keyed to) the globally selected -// server via ServerKey, then provide the server-scoped shell (Permission/Layout/ -// Notification/Models + the visual Layout) for that server. +// server via ServerKey, then provide the server-scoped shell for that server. function SelectedServerProviders(props: ParentProps) { return ( @@ -197,16 +174,17 @@ function SelectedServerProviders(props: ParentProps) { ) } -function LegacyServerLayout(props: ParentProps) { +function LegacyServerLayout(props: ParentProps<{ serverScoped?: JSX.Element }>) { return ( - {props.children} + {props.children} ) } function DraftRoute() { const [search] = useSearchParams<{ draftId?: string }>() + const settings = useSettings() const tabs = useTabs() return ( @@ -215,7 +193,14 @@ function DraftRoute() { keyed fallback={} > - {(draft) => } + {(draft) => ( + } + > + + + )} ) @@ -231,7 +216,7 @@ function ResolvedDraftRoute(props: { draft: DraftTab }) { - + @@ -239,7 +224,7 @@ function ResolvedDraftRoute(props: { draft: DraftTab }) { - + @@ -257,7 +242,7 @@ declare global { deepLinks?: string[] } api?: { - setTitlebar?: (theme: { mode: "light" | "dark" }) => Promise + setTitlebar?: (theme: { mode: "light" | "dark"; scheme?: "system" | "light" | "dark" }) => Promise exportDebugLogs?: () => Promise } } @@ -300,70 +285,69 @@ function SharedProviders(props: ParentProps) { <> + {props.children} ) } +function DesktopCommands() { + const command = useCommand() + const language = useLanguage() + const platform = usePlatform() + + command.register("desktop", () => { + const commands: CommandOption[] = [] + if (platform.platform === "desktop" && platform.exportDebugLogs) { + commands.push({ + id: "logs.export", + title: "Export logs", + category: language.t("command.category.settings"), + onSelect: () => { + void platform.exportDebugLogs?.() + }, + }) + } + return commands + }) + + return null +} + // Server-scoped providers shared by the legacy shell and the top-level new shell. type ServerScopedShellProps = ParentProps<{ directory?: () => string | undefined - sessionID?: () => string | undefined + serverScoped?: JSX.Element }> function ServerScopedProviders(props: ServerScopedShellProps) { return ( - - - - {props.children} - - - + + {props.serverScoped} + {props.children} + ) } function LegacyServerScopedShell(props: ServerScopedShellProps) { return ( - + {props.children} ) } -function NewAppLayout(props: ParentProps) { +function NewAppLayout(props: ParentProps<{ serverScoped?: JSX.Element }>) { return ( - + {props.children} ) } -function TargetServerScopedProviders(props: ServerScopedShellProps) { - return ( - - - {props.children} - - - ) -} - -function SessionProviders(props: ParentProps) { - return ( - - - - {props.children} - - - - ) -} - // The draft page only renders the prompt composer, so it drops TerminalProvider. // FileProvider and CommentsProvider stay because PromptInput uses file search and comment context. function DraftProviders(props: ParentProps) { @@ -381,8 +365,8 @@ export function AppBaseProviders(props: ParentProps<{ locale?: Locale }>) { { - void window.api?.setTitlebar?.({ mode }) + onThemeApplied={(_, mode, scheme) => { + void window.api?.setTitlebar?.({ mode, scheme }) }} > @@ -410,7 +394,7 @@ export function AppBaseProviders(props: ParentProps<{ locale?: Locale }>) { ) } -function ConnectionGate(props: ParentProps<{ disableHealthCheck?: boolean }>) { +function ConnectionGate(props: ParentProps<{ disableHealthCheck?: boolean; startup?: Promise }>) { const server = useServer() const checkServerHealth = useCheckServerHealth() @@ -439,34 +423,45 @@ function ConnectionGate(props: ParentProps<{ disableHealthCheck?: boolean }>) { const checking = createMemo( () => checkMode() === "blocking" && ["unresolved", "pending"].includes(startupHealthCheck.state), ) + const [startup] = createResource(async () => { + if (!props.startup) return true + await props.startup.catch((error) => { + console.error("[startup] startup gate failed", error) + }) + return true + }) + const startupChecking = createMemo( + () => startupHealthCheck.latest === true && ["unresolved", "pending"].includes(startup.state), + ) + const loading = createMemo(() => checking() || startupChecking()) return ( - + <> + + { + if (checkMode() === "background") void healthCheckActions.refetch() + }} + onServerSelected={(key) => { + setCheckMode("blocking") + server.setActive(key) + void healthCheckActions.refetch() + }} + /> + } + > + {props.children} + + + +
- } - > - { - if (checkMode() === "background") void healthCheckActions.refetch() - }} - onServerSelected={(key) => { - setCheckMode("blocking") - server.setActive(key) - void healthCheckActions.refetch() - }} - /> - } - > - {props.children} -
+ ) } @@ -533,6 +528,8 @@ export function AppInterface(props: { servers?: Array router?: Component disableHealthCheck?: boolean + startup?: Promise + serverScoped?: JSX.Element }) { // The visual new layout lives in the router root so it remains mounted across // route changes. Draft and session routes override only their server-bound data @@ -554,21 +551,25 @@ export function AppInterface(props: { > - + ( - - - {routerProps.children} - - + + + + + {routerProps.children} + + + + )} > - + @@ -578,13 +579,24 @@ export function AppInterface(props: { ) } -function Routes() { +function Routes(props: { serverScoped?: JSX.Element }) { const settings = useSettings() return ( <> - - {} + ( + {routeProps.children} + )} + > + + { + <> + + + + } + } /> @@ -592,15 +604,15 @@ function Routes() { - + + - ) } -function LegacyTargetSessionRoute() { +function NewLayoutLegacySessionRedirect() { const server = useServer() const tabs = useTabs() const params = useParams<{ id: string }>() diff --git a/packages/app/src/assets/help/home.png b/packages/app/src/assets/help/home.png new file mode 100644 index 000000000000..aeca6d977a89 Binary files /dev/null and b/packages/app/src/assets/help/home.png differ diff --git a/packages/app/src/assets/help/introducing-tabs.mp4 b/packages/app/src/assets/help/introducing-tabs.mp4 new file mode 100644 index 000000000000..fd46be1f46f0 Binary files /dev/null and b/packages/app/src/assets/help/introducing-tabs.mp4 differ diff --git a/packages/app/src/assets/help/placeholder.png b/packages/app/src/assets/help/placeholder.png new file mode 100644 index 000000000000..c651d06cc920 Binary files /dev/null and b/packages/app/src/assets/help/placeholder.png differ diff --git a/packages/app/src/assets/help/tabs.png b/packages/app/src/assets/help/tabs.png new file mode 100644 index 000000000000..d2c6e68a3da1 Binary files /dev/null and b/packages/app/src/assets/help/tabs.png differ diff --git a/packages/app/src/components/command-palette.ts b/packages/app/src/components/command-palette.ts new file mode 100644 index 000000000000..59d3cbd1da72 --- /dev/null +++ b/packages/app/src/components/command-palette.ts @@ -0,0 +1,279 @@ +import { getFilename } from "@opencode-ai/core/util/path" +import type { GlobalSession, Project } from "@opencode-ai/sdk/v2/client" +import { useDialog } from "@opencode-ai/ui/context/dialog" +import { createMemo, onCleanup } from "solid-js" +import { commandPaletteOptions, useCommand, type CommandOption } from "@/context/command" +import { useFile } from "@/context/file" +import { useGlobal } from "@/context/global" +import { useLanguage } from "@/context/language" +import { useLayout, type LocalProject } from "@/context/layout" +import { ServerConnection } from "@/context/server" +import { useServerSDK } from "@/context/server-sdk" +import { useTabs } from "@/context/tabs" +import { displayName, projectForSession } from "@/pages/layout/helpers" +import { createSessionTabs } from "@/pages/session/helpers" +import { useSessionLayout } from "@/pages/session/session-layout" + +export type CommandPaletteEntry = { + id: string + type: "command" | "file" | "session" + title: string + description?: string + keybind?: string + category: string + option?: CommandOption + path?: string + directory?: string + sessionID?: string + server?: ServerConnection.Key + project?: LocalProject + archived?: number + updated?: number +} + +const ENTRY_LIMIT = 5 +const COMMON_COMMAND_IDS = [ + "session.new", + "workspace.new", + "session.previous", + "session.next", + "terminal.toggle", + "review.toggle", +] as const + +export function uniqueCommandPaletteEntries(items: CommandPaletteEntry[]) { + const seen = new Set() + return items.filter((item) => { + if (seen.has(item.id)) return false + seen.add(item.id) + return true + }) +} + +export function createCommandPaletteFileEntry(path: string, category: string): CommandPaletteEntry { + return { + id: "file:" + path, + type: "file", + title: path, + category, + path, + } +} + +export function createCommandPaletteFileOpener(onOpenFile?: (path: string) => void) { + const file = useFile() + const layout = useLayout() + const { tabs, view } = useSessionLayout() + + return (path: string) => { + const value = file.tab(path) + void tabs().open(value) + void file.load(path) + if (!view().reviewPanel.opened()) view().reviewPanel.open() + layout.fileTree.setTab("all") + onOpenFile?.(path) + tabs().setActive(value) + } +} + +export function createCommandPaletteModel(props: { filesOnly?: () => boolean; onOpenFile?: (path: string) => void }) { + const command = useCommand() + const global = useGlobal() + const language = useLanguage() + const file = useFile() + const dialog = useDialog() + const serverSDK = useServerSDK()() + const serverCtx = global.ensureServerCtx(serverSDK.server) + const appTabs = useTabs() + const { tabs: sessionTabs } = useSessionLayout() + const openFile = createCommandPaletteFileOpener(props.onOpenFile) + const state = { cleanup: undefined as (() => void) | void, committed: false } + const filesOnly = () => props.filesOnly?.() ?? false + + const allowedCommands = createMemo(() => { + if (filesOnly()) return [] + return commandPaletteOptions(command.options) + }) + const commandEntries = createMemo(() => { + const category = language.t("palette.group.commands") + return allowedCommands().map((option) => createCommandPaletteCommandEntry(option, category)) + }) + const preferredCommandEntries = createMemo(() => { + const all = allowedCommands() + const order = new Map(COMMON_COMMAND_IDS.map((id, index) => [id, index])) + const picked = all.filter((option) => order.has(option.id)) + const base = picked.length ? picked : all.slice(0, ENTRY_LIMIT) + const sorted = picked.length ? [...base].sort((a, b) => (order.get(a.id) ?? 0) - (order.get(b.id) ?? 0)) : base + const category = language.t("palette.group.commands") + return sorted.map((option) => createCommandPaletteCommandEntry(option, category)) + }) + + const tabState = createSessionTabs({ + tabs: sessionTabs, + pathFromTab: file.pathFromTab, + normalizeTab: (tab) => (tab.startsWith("file://") ? file.tab(tab) : tab), + }) + const recentFileEntries = createMemo(() => { + const all = tabState.openedTabs() + const active = tabState.activeFileTab() + const order = active ? [active, ...all.filter((item) => item !== active)] : all + const seen = new Set() + const category = language.t("palette.group.files") + return order + .map((item) => file.pathFromTab(item)) + .filter((path): path is string => { + if (!path || seen.has(path)) return false + seen.add(path) + return true + }) + .slice(0, ENTRY_LIMIT) + .map((path) => createCommandPaletteFileEntry(path, category)) + }) + const rootFileEntries = createMemo(() => { + const category = language.t("palette.group.files") + return file.tree + .children("") + .filter((node) => node.type === "file") + .map((node) => node.path) + .sort((a, b) => a.localeCompare(b)) + .slice(0, ENTRY_LIMIT) + .map((path) => createCommandPaletteFileEntry(path, category)) + }) + + const sessions = createServerSessionEntries({ + server: ServerConnection.key(serverSDK.server), + opened: serverCtx.projects.list, + stored: () => serverCtx.sync.data.project, + load: (search, signal) => + serverSDK.client.experimental.session.list({ roots: true, search, limit: 50 }, { signal }), + untitled: () => language.t("command.session.new"), + category: () => language.t("command.category.session"), + }) + + const highlight = (item: CommandPaletteEntry | undefined) => { + state.cleanup?.() + state.cleanup = undefined + if (item?.type !== "command") return + state.cleanup = item.option?.onHighlight?.() + } + + const select = (item: CommandPaletteEntry | undefined) => { + if (!item) return + state.committed = true + state.cleanup = undefined + dialog.close() + if (item.type === "command") { + item.option?.onSelect?.("palette") + return + } + if (item.type === "session") { + if (!item.sessionID || !item.server) return + const directory = item.project?.worktree ?? item.directory + if (directory) { + serverCtx.projects.open(directory) + serverCtx.projects.touch(directory) + } + const tab = appTabs.addSessionTab({ + server: item.server, + sessionId: item.sessionID, + }) + appTabs.select(tab) + return + } + if (!item.path) return + openFile(item.path) + } + + onCleanup(() => { + if (state.committed) return + state.cleanup?.() + }) + + return { + language, + file, + commandEntries, + preferredCommandEntries, + recentFileEntries, + rootFileEntries, + sessions, + highlight, + select, + close: () => dialog.close(), + } +} + +export function createCommandPaletteCommandEntry(option: CommandOption, category: string): CommandPaletteEntry { + return { + id: "command:" + option.id, + type: "command", + title: option.title, + description: option.description, + keybind: option.keybind, + category, + option, + } +} + +export function createServerSessionEntries(props: { + server: ServerConnection.Key + opened: () => LocalProject[] + stored: () => Project[] + load: (search: string, signal: AbortSignal) => Promise<{ data?: GlobalSession[] }> + untitled: () => string + category: () => string +}) { + let abort: AbortController | undefined + + onCleanup(() => abort?.abort()) + + return async (text: string): Promise => { + const search = text.trim() + if (!search) { + abort?.abort() + return [] + } + abort?.abort() + const current = new AbortController() + abort = current + await new Promise((resolve) => { + const timer = setTimeout(resolve, 100) + current.signal.addEventListener( + "abort", + () => { + clearTimeout(timer) + resolve() + }, + { once: true }, + ) + }) + if (current.signal.aborted) return [] + const opened = props.opened() + const openedByID = new Map(opened.flatMap((project) => (project.id ? [[project.id, project] as const] : []))) + const stored = props.stored().map((project) => ({ ...project, expanded: false })) + const storedByID = new Map(stored.map((project) => [project.id, project] as const)) + return props + .load(search, current.signal) + .then((result) => + (result.data ?? []) + .filter((session) => !session.time.archived) + .map((session) => { + const project = + projectForSession(session, opened, openedByID) ?? projectForSession(session, stored, storedByID) + return { + id: `session:${props.server}:${session.id}`, + type: "session" as const, + title: session.title || props.untitled(), + description: project ? displayName(project) : session.project?.name || getFilename(session.directory), + category: props.category(), + directory: session.directory, + sessionID: session.id, + server: props.server, + project, + updated: session.time.updated, + } + }), + ) + .catch(() => [] as CommandPaletteEntry[]) + } +} diff --git a/packages/app/src/components/debug-bar.tsx b/packages/app/src/components/debug-bar.tsx index eda025546a16..67c9a899294e 100644 --- a/packages/app/src/components/debug-bar.tsx +++ b/packages/app/src/components/debug-bar.tsx @@ -3,7 +3,9 @@ import { batch, createEffect, onCleanup, onMount } from "solid-js" import { createStore } from "solid-js/store" import { makeEventListener } from "@solid-primitives/event-listener" import { Tooltip } from "@opencode-ai/ui/tooltip" +import { TooltipV2 } from "@opencode-ai/ui/v2/tooltip-v2" import { useLanguage } from "@/context/language" +import { usePlatform } from "@/context/platform" type Mem = Performance & { memory?: { @@ -51,32 +53,100 @@ const bad = (n: number | undefined, limit: number, low = false) => { const session = (path: string) => path.includes("/session") -function Cell(props: { bad?: boolean; dim?: boolean; label: string; tip: string; value: string; wide?: boolean }) { - return ( - +function Cell(props: { + bad?: boolean + dim?: boolean + inline?: boolean + label: string + tip: string + value: string + wide?: boolean +}) { + const content = () => ( +
+
+ {props.label} +
-
{props.label}
-
- {props.value} -
+ {props.value}
+
+ ) + + if (props.inline) { + return ( + + {content()} + + ) + } + + return ( + + {content()} ) } -export function DebugBar() { +function FocusCell(props: { active: boolean; inline?: boolean; onClick: () => void }) { + const content = () => ( + + ) + + if (props.inline) { + return ( + + {content()} + + ) + } + + return ( + + {content()} + + ) +} + +export function DebugBar(props: { inline?: boolean } = {}) { const language = useLanguage() + const platform = usePlatform() const location = useLocation() const routing = useIsRouting() const [state, setState] = createStore({ @@ -84,6 +154,7 @@ export function DebugBar() { delay: undefined as number | undefined, fps: undefined as number | undefined, gap: undefined as number | undefined, + focus: false, heap: { limit: undefined as number | undefined, used: undefined as number | undefined, @@ -101,7 +172,7 @@ export function DebugBar() { }, }) - const na = () => language.t("debugBar.na") + const na = () => language.t("debugBar.na").toUpperCase() const heap = () => (state.heap.limit ? (state.heap.used ?? 0) / state.heap.limit : undefined) const heapv = () => { const value = heap() @@ -110,6 +181,16 @@ export function DebugBar() { } const longv = () => (state.long.count === undefined ? na() : `${time(state.long.block) ?? na()}/${state.long.count}`) const navv = () => (state.nav.pending ? "..." : (time(state.nav.dur) ?? na())) + const toggleFocus = async () => { + if (!platform.setForceFocus) return + const enabled = !state.focus + await platform.setForceFocus(enabled) + setState("focus", enabled) + } + + onCleanup(() => { + if (state.focus) void platform.setForceFocus?.(false).catch(() => undefined) + }) let prev = "" let start = 0 @@ -363,15 +444,30 @@ export function DebugBar() { return ( ) diff --git a/packages/app/src/components/dialog-command-palette-v2.css b/packages/app/src/components/dialog-command-palette-v2.css new file mode 100644 index 000000000000..a4019928aa1e --- /dev/null +++ b/packages/app/src/components/dialog-command-palette-v2.css @@ -0,0 +1,220 @@ +.command-palette-v2 { + overflow: hidden; +} + +/* Anchor to the top edge of where a centered 480px-tall dialog would sit, so the + top stays put while the content-driven height grows and shrinks. */ +[data-component="dialog-v2"]:has(.command-palette-v2) { + align-items: flex-start; +} + +[data-component="dialog-v2"]:has(.command-palette-v2) [data-slot="dialog-container"] { + width: min(calc(100vw - 24px), 640px); + height: auto; + min-height: 280px; + max-height: min(calc(100vh - 96px), 480px); + margin-top: max(48px, calc((100vh - 480px) / 2)); + border-radius: 12px; + background: var(--v2-background-bg-base); + box-shadow: var(--v2-elevation-floating); +} + +.command-palette-v2-body { + display: flex; + min-height: 0; + flex: 1; + flex-direction: column; + gap: 0; + padding: 0; +} + +.command-palette-v2-search { + flex-shrink: 0; + padding: 6px; +} + +.command-palette-v2-search [data-component="text-input-v2"] { + width: 100%; + height: 36px; + border-radius: 6px; + outline: 0; + background: color-mix(in srgb, var(--v2-background-bg-layer-02) 60%, transparent); + box-shadow: none; + transition: + background-color 120ms ease-in-out, + box-shadow 120ms ease-in-out; +} + +.command-palette-v2-search [data-component="text-input-v2"]:where(:hover):not([data-disabled], [data-invalid]), +.command-palette-v2-search [data-component="text-input-v2"]:where(:focus-within):not([data-disabled], [data-invalid]) { + background: var(--v2-background-bg-layer-02); + box-shadow: none; +} + +.command-palette-v2-search [data-component="text-input-v2"] [data-slot="text-input-v2-value"] { + border-radius: 6px; + background: transparent; + gap: 8px; +} + +.command-palette-v2-search [data-component="text-input-v2"] [data-slot="text-input-v2-leading-icon"] { + padding-left: 12px; +} + +.command-palette-v2-search [data-component="text-input-v2"] [data-slot="text-input-v2-input"] { + border-radius: 6px; + background: transparent; +} + +.command-palette-v2-scroll { + min-height: 0; + flex: 1; +} + +.command-palette-v2-results { + display: flex; + flex-direction: column; + gap: 16px; + padding: 6px 6px 8px; +} + +.command-palette-v2-group { + display: flex; + flex-direction: column; + gap: 1px; +} + +.command-palette-v2-group-title { + margin: 6px 0; + padding: 0 12px; + color: var(--v2-text-text-muted); + font-size: 13px; + font-weight: 440; + line-height: 16px; + letter-spacing: -0.04px; + user-select: none; +} + +.command-palette-v2-row { + display: flex; + width: 100%; + height: 36px; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + gap: 8px; + padding: 0 12px; + border: 0; + border-radius: 6px; + background: transparent; + color: var(--v2-text-text-base); + text-align: left; + cursor: default; + scroll-margin: 6px 0; +} + +.command-palette-v2-row[data-active] { + background: var(--v2-overlay-simple-overlay-hover); +} + +.command-palette-v2-row:focus-visible { + background: var(--v2-overlay-simple-overlay-hover); + outline: none; +} + +.command-palette-v2-row-main { + display: flex; + min-width: 0; + flex: 1; + align-items: center; + gap: 8px; +} + +.command-palette-v2-row-icon { + flex-shrink: 0; + color: var(--v2-icon-icon-muted); +} + +.command-palette-v2-row-text { + display: flex; + min-width: 0; + align-items: center; + gap: 6px; +} + +.command-palette-v2-title { + min-width: 0; + overflow: hidden; + color: var(--v2-text-text-base); + font-size: 13px; + font-weight: 530; + line-height: 16px; + letter-spacing: -0.04px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.command-palette-v2-description, +.command-palette-v2-meta { + min-width: 0; + overflow: hidden; + color: var(--v2-text-text-muted); + font-size: 13px; + font-weight: 440; + line-height: 16px; + letter-spacing: -0.04px; + text-overflow: ellipsis; + white-space: nowrap; +} + +.command-palette-v2-meta { + flex-shrink: 0; +} + +.command-palette-v2-file-path { + display: flex; + min-width: 0; + align-items: baseline; + font-size: 13px; + line-height: 16px; + letter-spacing: -0.04px; +} + +.command-palette-v2-file-dir { + min-width: 0; + overflow: hidden; + color: var(--v2-text-text-muted); + font-weight: 440; + text-overflow: ellipsis; + white-space: nowrap; +} + +.command-palette-v2-file-name { + flex-shrink: 0; + color: var(--v2-text-text-base); + font-weight: 530; + white-space: nowrap; +} + +.command-palette-v2-state { + display: grid; + min-height: 120px; + place-items: center; + color: var(--v2-text-text-muted); + font-size: 13px; + font-weight: 440; + line-height: 16px; + letter-spacing: -0.04px; +} + +@media (max-width: 640px) { + .command-palette-v2-row-text { + flex-direction: column; + align-items: flex-start; + gap: 1px; + } + + .command-palette-v2-description { + max-width: 100%; + } +} diff --git a/packages/app/src/components/dialog-command-palette-v2.tsx b/packages/app/src/components/dialog-command-palette-v2.tsx new file mode 100644 index 000000000000..85ca44ae69db --- /dev/null +++ b/packages/app/src/components/dialog-command-palette-v2.tsx @@ -0,0 +1,343 @@ +import { getDirectory, getFilename } from "@opencode-ai/core/util/path" +import { FileIcon } from "@opencode-ai/ui/file-icon" +import { ScrollView } from "@opencode-ai/ui/scroll-view" +import { Dialog, DialogBody } from "@opencode-ai/ui/v2/dialog-v2" +import { Icon } from "@opencode-ai/ui/v2/icon" +import { KeybindV2 } from "@opencode-ai/ui/v2/keybind-v2" +import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2" +import { useDialog } from "@opencode-ai/ui/context/dialog" +import { createEffect, createMemo, createResource, createSignal, For, Match, onCleanup, Show, Switch } from "solid-js" +import { commandPaletteOptions, formatKeybindParts, useCommand } from "@/context/command" +import { useGlobal } from "@/context/global" +import { useLanguage } from "@/context/language" +import { ServerConnection } from "@/context/server" +import { useTabs } from "@/context/tabs" +import { SessionTabAvatar } from "@/pages/layout/session-tab-avatar" +import { getRelativeTime } from "@/utils/time" +import { + createCommandPaletteCommandEntry, + createCommandPaletteFileEntry, + createCommandPaletteModel, + createServerSessionEntries, + uniqueCommandPaletteEntries, + type CommandPaletteEntry, +} from "./command-palette" +import "./dialog-command-palette-v2.css" + +function groups(entries: CommandPaletteEntry[]) { + const map = new Map() + for (const entry of entries) map.set(entry.category, [...(map.get(entry.category) ?? []), entry]) + return Array.from(map.entries()).map(([category, entries]) => ({ category, entries })) +} + +function matchesEntry(entry: CommandPaletteEntry, query: string) { + const value = query.toLowerCase() + return [entry.title, entry.description, entry.category].some((text) => text?.toLowerCase().includes(value)) +} + +export function DialogCommandPaletteV2(props: { onOpenFile?: (path: string) => void }) { + const palette = createCommandPaletteModel(props) + const loadItems = async (text: string) => { + const q = text.trim() + if (!q) return [...palette.preferredCommandEntries(), ...palette.recentFileEntries()] + + const [files, nextSessions] = await Promise.all([palette.file.searchFiles(q), Promise.resolve(palette.sessions(q))]) + const category = palette.language.t("palette.group.files") + return [ + ...palette.commandEntries().filter((entry) => matchesEntry(entry, q)), + ...nextSessions, + ...files.map((path) => createCommandPaletteFileEntry(path, category)), + ] + } + + return ( + + ) +} + +export function DialogHomeCommandPaletteV2(props: { + server: ServerConnection.Any + onSelectSession: (entry: CommandPaletteEntry) => void +}) { + const command = useCommand() + const dialog = useDialog() + const global = useGlobal() + const language = useLanguage() + const serverCtx = global.ensureServerCtx(props.server) + const state = { cleanup: undefined as (() => void) | void, committed: false } + const commandEntries = createMemo(() => { + const category = language.t("palette.group.commands") + return commandPaletteOptions(command.options).map((option) => createCommandPaletteCommandEntry(option, category)) + }) + const sessions = createServerSessionEntries({ + server: ServerConnection.key(props.server), + opened: serverCtx.projects.list, + stored: () => serverCtx.sync.data.project, + load: (search, signal) => + serverCtx.sdk.client.experimental.session.list({ roots: true, search, limit: 50 }, { signal }), + untitled: () => language.t("command.session.new"), + category: () => language.t("command.category.session"), + }) + + const highlight = (item: CommandPaletteEntry | undefined) => { + state.cleanup?.() + state.cleanup = undefined + if (item?.type !== "command") return + state.cleanup = item.option?.onHighlight?.() + } + const select = (item: CommandPaletteEntry | undefined) => { + if (!item) return + state.committed = true + state.cleanup = undefined + dialog.close() + if (item.type === "command") { + item.option?.onSelect?.("palette") + return + } + if (item.type === "session") props.onSelectSession(item) + } + const loadItems = async (text: string) => { + const query = text.trim() + if (!query) return commandEntries().slice(0, 5) + return [...commandEntries().filter((entry) => matchesEntry(entry, query)), ...(await sessions(query))] + } + + onCleanup(() => { + if (state.committed) return + state.cleanup?.() + }) + + return ( + dialog.close()} + /> + ) +} + +function CommandPaletteView(props: { + placeholder: string + loadItems: (text: string) => CommandPaletteEntry[] | Promise + highlight: (item: CommandPaletteEntry | undefined) => void + select: (item: CommandPaletteEntry | undefined) => void + close: () => void +}) { + const language = useLanguage() + const tabs = useTabs() + const [query, setQuery] = createSignal("") + const [active, setActive] = createSignal(0) + + const [entries] = createResource(query, props.loadItems, { initialValue: [] as CommandPaletteEntry[] }) + // Render stale results while a new query loads to avoid flashing "Loading" per keystroke. + const visibleEntries = createMemo(() => uniqueCommandPaletteEntries(entries.latest ?? [])) + const groupedEntries = createMemo(() => groups(visibleEntries())) + const activeEntry = createMemo(() => visibleEntries()[active()]) + const openSessions = createMemo( + () => new Set(tabs.store.flatMap((tab) => (tab.type === "session" ? [`${tab.server}\0${tab.sessionId}`] : []))), + ) + + createEffect(() => { + query() + visibleEntries() + setActive(0) + }) + + createEffect(() => { + props.highlight(activeEntry()) + }) + + let resultsRef: HTMLDivElement | undefined + + const move = (delta: -1 | 1) => { + const count = visibleEntries().length + if (count === 0) return + setActive((index) => (index + delta + count) % count) + requestAnimationFrame(() => { + resultsRef?.querySelector("[data-active]")?.scrollIntoView({ block: "nearest" }) + }) + } + + const handleKeyDown = (event: KeyboardEvent) => { + if (event.key === "ArrowDown") { + event.preventDefault() + move(1) + return + } + if (event.key === "ArrowUp") { + event.preventDefault() + move(-1) + return + } + if (event.key === "Enter") { + event.preventDefault() + props.select(activeEntry()) + return + } + if (event.key === "Escape") { + event.preventDefault() + props.close() + } + } + + return ( + + + + (resultsRef = el)}> +
+ 0} + fallback={ +
+ {entries.loading ? language.t("common.loading") : language.t("palette.empty")} +
+ } + > + + {(group) => ( +
+ +
{group.category}
+
+ + {(item) => ( + setActive(visibleEntries().findIndex((entry) => entry.id === item.id))} + onSelect={() => props.select(item)} + /> + )} + +
+ )} +
+
+
+
+
+
+ ) +} + +function PaletteRow(props: { + item: CommandPaletteEntry + active: boolean + language: ReturnType + sessionOpen: boolean + onActive: () => void + onSelect: () => void +}) { + const session = () => + props.item.server && props.item.directory && props.item.sessionID + ? { server: props.item.server, directory: props.item.directory, sessionID: props.item.sessionID } + : undefined + + return ( + + ) +} diff --git a/packages/app/src/components/dialog-connect-provider.stories.tsx b/packages/app/src/components/dialog-connect-provider.stories.tsx new file mode 100644 index 000000000000..3aec6c9de332 --- /dev/null +++ b/packages/app/src/components/dialog-connect-provider.stories.tsx @@ -0,0 +1,73 @@ +// @ts-nocheck +import { Button } from "@opencode-ai/ui/button" +import { useDialog } from "@opencode-ai/ui/context/dialog" +import { QueryClient, QueryClientProvider } from "@tanstack/solid-query" +import { mockProviderAuth } from "@/context/server-sync" +import { onCleanup, onMount } from "solid-js" +import { DialogConnectProvider, useProviderConnectController } from "./dialog-connect-provider" + +function ConnectProviderDialogStory() { + const dialog = useDialog() + const open = () => dialog.show(() => ) + + onMount(open) + + return ( + + ) +} + +function ProviderConnectionDialogStory(props) { + onCleanup(mockProviderAuth(props.provider, props.methods)) + const dialog = useDialog() + const controller = useProviderConnectController() + controller.select(props.provider) + const open = () => dialog.show(() => ) + + onMount(open) + + return ( + + ) +} + +function renderConnection(provider, methods) { + return () => ( + + + + ) +} + +export default { + title: "App/Dialogs/Connect Provider", + id: "app-dialog-connect-provider", +} + +export const V2 = { + render: () => ( + + + + ), +} + +export const ApiKey = { + render: renderConnection("openrouter", [{ type: "api", label: "API key" }]), +} + +export const OpenCodeZen = { + render: renderConnection("opencode", [{ type: "api", label: "API key" }]), +} + +export const LoginMethods = { + render: renderConnection("openai", [ + { type: "oauth", label: "ChatGPT Pro/Plus (browser)" }, + { type: "oauth", label: "ChatGPT Pro/Plus (headless)" }, + { type: "api", label: "API key" }, + ]), +} diff --git a/packages/app/src/components/dialog-connect-provider.tsx b/packages/app/src/components/dialog-connect-provider.tsx index 0fb89d29f921..4c58857249dd 100644 --- a/packages/app/src/components/dialog-connect-provider.tsx +++ b/packages/app/src/components/dialog-connect-provider.tsx @@ -7,29 +7,399 @@ import { IconButton } from "@opencode-ai/ui/icon-button" import { List, type ListRef } from "@opencode-ai/ui/list" import { ProviderIcon } from "@opencode-ai/ui/provider-icon" import { Spinner } from "@opencode-ai/ui/spinner" +import { Tag } from "@opencode-ai/ui/tag" import { TextField } from "@opencode-ai/ui/text-field" +import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2" +import { DialogBody, DialogHeader, DialogTitle, DialogV2 } from "@opencode-ai/ui/v2/dialog-v2" +import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2" import { showToast } from "@/utils/toast" -import { type Accessor, createEffect, createMemo, createResource, Match, onCleanup, onMount, Switch } from "solid-js" +import { + type Accessor, + type Component, + createEffect, + createMemo, + createResource, + createUniqueId, + For, + Match, + onCleanup, + onMount, + Show, + Switch, +} from "solid-js" import { createStore, produce } from "solid-js/store" import { Link } from "@/components/link" import { useServerSDK } from "@/context/server-sdk" import { useServerSync } from "@/context/server-sync" import { useLanguage } from "@/context/language" -import { useProviders } from "@/hooks/use-providers" +import { useSettings } from "@/context/settings" +import { popularProviders, useProviders } from "@/hooks/use-providers" +import { CustomProviderForm } from "./dialog-custom-provider" -export function DialogConnectProvider(props: { provider: string; directory?: Accessor }) { +const CUSTOM_ID = "_custom" + +export function useProviderConnectController(options: { onBack?: () => void } = {}) { + const [store, setStore] = createStore({ selected: undefined as string | undefined }) + const reset = () => setStore("selected", undefined) + + return { + selected: () => store.selected, + select: (provider?: string) => setStore("selected", provider), + back: options.onBack ?? reset, + } +} + +export const DialogConnectProvider: Component<{ + directory?: Accessor + controller?: ReturnType +}> = (props) => { + const fallback = useProviderConnectController() + const controller = props.controller ?? fallback + const language = useLanguage() + const settings = useSettings() + const newLayout = settings.general.newLayoutDesigns + const reset = controller.back + const back = { current: reset } + let focusHost: HTMLDivElement | undefined + const holdFocus = () => focusHost?.focus({ preventScroll: true }) + const select = (provider?: string) => { + back.current = reset + controller.select(provider) + } + + function Content() { + return ( + + + + + + {(provider) => ( + (back.current = handler)} + /> + )} + + + + + + ) + } + + return ( + + back.current()} + aria-label={language.t("common.goBack")} + /> + + } + > + + + } + > + + + {language.t("command.provider.connect")}} + > + + + + +
+ +
+
+
+
+ ) +} + +function ProviderPicker(props: { + directory?: Accessor + onSelect: (provider: string) => void + onPrepare?: () => void +}) { + const settings = useSettings() + if (settings.general.newLayoutDesigns()) + return + const providers = useProviders(props.directory) + const language = useLanguage() + const popularGroup = () => language.t("dialog.provider.group.popular") + const otherGroup = () => language.t("dialog.provider.group.other") + const customLabel = () => language.t("settings.providers.tag.custom") + const note = (id: string) => { + if (id === "anthropic") return language.t("dialog.provider.anthropic.note") + if (id === "openai") return language.t("dialog.provider.openai.note") + if (id.startsWith("github-copilot")) return language.t("dialog.provider.copilot.note") + if (id === "opencode-go") return language.t("dialog.provider.opencodeGo.tagline") + return undefined + } + + return ( + x?.id} + items={() => { + language.locale() + return [{ id: CUSTOM_ID, name: customLabel() }, ...providers.all().values()] + }} + filterKeys={["id", "name"]} + groupBy={(x) => (popularProviders.includes(x.id) ? popularGroup() : otherGroup())} + sortBy={(a, b) => { + if (a.id === CUSTOM_ID) return -1 + if (b.id === CUSTOM_ID) return 1 + if (popularProviders.includes(a.id) && popularProviders.includes(b.id)) + return popularProviders.indexOf(a.id) - popularProviders.indexOf(b.id) + return a.name.localeCompare(b.name) + }} + sortGroupsBy={(a, b) => { + const popular = popularGroup() + if (a.category === popular && b.category !== popular) return -1 + if (b.category === popular && a.category !== popular) return 1 + return 0 + }} + onSelect={(x) => { + if (!x) return + props.onSelect(x.id) + }} + > + {(i) => ( +
+ + {i.name} + +
{language.t("dialog.provider.opencode.tagline")}
+
+ + {language.t("settings.providers.tag.custom")} + + + {language.t("dialog.provider.tag.recommended")} + + {(value) =>
{value()}
}
+ + {language.t("dialog.provider.tag.recommended")} + +
+ )} +
+ ) +} + +function ProviderPickerV2(props: { + directory?: Accessor + onSelect: (provider: string) => void + onPrepare?: () => void +}) { + const providers = useProviders(props.directory) + const language = useLanguage() + const serverSync = useServerSync() + const serverSDK = useServerSDK() + const [store, setStore] = createStore({ + filter: "", + active: undefined as string | undefined, + connecting: undefined as string | undefined, + }) + const featured = ["opencode", "opencode-go", "anthropic", "openai", "google", "openrouter", "vercel"] + const custom = () => ({ id: CUSTOM_ID, name: language.t("dialog.provider.custom.label") }) + const all = createMemo(() => { + language.locale() + const query = store.filter.trim().toLowerCase() + const values = [custom(), ...providers.all().values()] + if (!query) return values + return values.filter((provider) => `${provider.id} ${provider.name}`.toLowerCase().includes(query)) + }) + const popular = createMemo(() => + all() + .filter((provider) => featured.includes(provider.id)) + .sort((a, b) => featured.indexOf(a.id) - featured.indexOf(b.id)), + ) + const other = createMemo(() => + all() + .filter((provider) => !featured.includes(provider.id)) + .sort((a, b) => { + if (a.id === CUSTOM_ID) return -1 + if (b.id === CUSTOM_ID) return 1 + return a.name.localeCompare(b.name) + }), + ) + const rows = createMemo(() => [...popular(), ...other()]) + let picker: HTMLDivElement | undefined + let search: HTMLInputElement | undefined + + onMount(() => search?.focus({ preventScroll: true })) + + const connect = (provider: string) => { + props.onPrepare?.() + if (provider === CUSTOM_ID || serverSync().data.provider_auth[provider]) { + props.onSelect(provider) + return + } + if (store.connecting) return + setStore("connecting", provider) + void serverSDK() + .client.provider.auth() + .then((response) => { + serverSync().set("provider_auth", response.data ?? {}) + props.onSelect(provider) + }) + .catch(() => props.onSelect(provider)) + } + + const move = (event: KeyboardEvent, direction: number) => { + const items = rows() + if (items.length === 0) return + const index = items.findIndex((provider) => provider.id === store.active) + const next = index < 0 ? (direction > 0 ? 0 : items.length - 1) : (index + direction + items.length) % items.length + setStore("active", items[next].id) + picker + ?.querySelector(`[data-provider-id="${CSS.escape(items[next].id)}"]`) + ?.focus({ preventScroll: true }) + event.preventDefault() + } + + const handleKeyDown = (event: KeyboardEvent) => { + if (event.key === "ArrowDown") return move(event, 1) + if (event.key === "ArrowUp") return move(event, -1) + if (event.key !== "Enter" || !store.active) return + connect(store.active) + event.preventDefault() + } + + return ( +
+
+ } + placeholder={language.t("dialog.provider.search.placeholder")} + value={store.filter} + onInput={(event) => { + setStore({ filter: event.currentTarget.value, active: undefined }) + }} + /> +
+
+
+ + {(group) => ( + 0}> +
+
+ {group.title} +
+ + {(provider) => ( + + )} + +
+
+ )} +
+ +
+ {language.t("dialog.provider.empty")} +
+
+
+
+
+
+ ) +} + +function ProviderConnection(props: { + provider: string + directory?: Accessor + onBack: () => void + setBack: (handler: () => void) => void +}) { const dialog = useDialog() const serverSync = useServerSync() const serverSDK = useServerSDK() const language = useLanguage() + const settings = useSettings() + const newLayout = settings.general.newLayoutDesigns const providers = useProviders(props.directory) - const all = () => { - void import("./dialog-select-provider").then((x) => { - dialog.show(() => ) - }) - } - const alive = { value: true } const timer = { current: undefined as ReturnType | undefined } @@ -62,10 +432,19 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc ) const loading = createMemo(() => auth.loading && !serverSync().data.provider_auth[props.provider]) const methods = createMemo(() => auth.latest ?? serverSync().data.provider_auth[props.provider] ?? fallback()) + const cachedMethods = serverSync().data.provider_auth[props.provider] + const directMethod = + cachedMethods?.length === 1 && cachedMethods[0].type === "api" && !cachedMethods[0].prompts?.length ? 0 : undefined const [store, setStore] = createStore({ - methodIndex: undefined as undefined | number, + methodIndex: directMethod as undefined | number, authorization: undefined as undefined | ProviderAuthAuthorization, - state: "pending" as undefined | "pending" | "complete" | "error" | "prompt", + promptInputs: undefined as undefined | Record, + state: (directMethod === undefined ? "pending" : undefined) as + | undefined + | "pending" + | "complete" + | "error" + | "prompt", error: undefined as string | undefined, }) @@ -73,6 +452,7 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc | { type: "method.select"; index: number } | { type: "method.reset" } | { type: "auth.prompt" } + | { type: "auth.inputs"; inputs: Record } | { type: "auth.pending" } | { type: "auth.complete"; authorization: ProviderAuthAuthorization } | { type: "auth.error"; error: string } @@ -83,6 +463,7 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc if (action.type === "method.select") { draft.methodIndex = action.index draft.authorization = undefined + draft.promptInputs = undefined draft.state = undefined draft.error = undefined return @@ -90,6 +471,7 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc if (action.type === "method.reset") { draft.methodIndex = undefined draft.authorization = undefined + draft.promptInputs = undefined draft.state = undefined draft.error = undefined return @@ -99,6 +481,12 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc draft.error = undefined return } + if (action.type === "auth.inputs") { + draft.promptInputs = action.inputs + draft.state = undefined + draft.error = undefined + return + } if (action.type === "auth.pending") { draft.state = "pending" draft.error = undefined @@ -124,6 +512,16 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc return value.label ?? "" } + const methodDetails = (value?: { type?: string; label?: string }) => { + const label = methodLabel(value) + const suffix = value?.label?.match(/\s+\((browser|headless)\)$/i) + const hint = suffix?.[1] + return { + label: suffix ? label.slice(0, -suffix[0].length) : label, + hint: hint ? hint[0].toUpperCase() + hint.slice(1) : value?.type === "api" ? "Browser" : undefined, + } + } + function formatError(value: unknown, fallback: string): string { if (value && typeof value === "object" && "data" in value) { const data = (value as { data?: { message?: unknown } }).data @@ -151,6 +549,15 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc const method = methods()[index] dispatch({ type: "method.select", index }) + if (method.type === "api" && method.prompts?.length) { + if (!inputs) { + dispatch({ type: "auth.prompt" }) + return + } + dispatch({ type: "auth.inputs", inputs }) + return + } + if (method.type === "oauth") { if (method.prompts?.length && !inputs) { dispatch({ type: "auth.prompt" }) @@ -190,7 +597,7 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc } } - function OAuthPromptsView() { + function AuthPromptsView() { const [formStore, setFormStore] = createStore({ value: {} as Record, index: 0, @@ -198,8 +605,7 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc const prompts = createMemo>(() => { const value = method() - if (value?.type !== "oauth") return [] - return value.prompts ?? [] + return value?.prompts ?? [] }) const matches = (prompt: NonNullable[number]>, value: Record) => { if (!prompt.when) return true @@ -230,6 +636,10 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc setFormStore("index", next) return } + if (method()?.type === "api") { + dispatch({ type: "auth.inputs", inputs: value }) + return + } await selectMethod(store.methodIndex, value) } @@ -342,22 +752,47 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc } function goBack() { - if (methods().length === 1) { - all() - return - } - if (store.authorization) { - dispatch({ type: "method.reset" }) - return - } - if (store.methodIndex !== undefined) { + if (methods().length > 1 && store.methodIndex !== undefined) { dispatch({ type: "method.reset" }) return } - all() + props.onBack() } + props.setBack(goBack) + function MethodSelection() { + if (newLayout()) + return ( +
+
+ {language.t("provider.connect.selectMethod", { provider: provider().name })} +
+
+ + {(item, index) => { + const details = () => methodDetails(item) + return ( + + ) + }} + +
+
+ ) + return ( <>
@@ -391,11 +826,18 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc } function ApiAuthView() { + let apiKey: HTMLInputElement | undefined + const errorID = createUniqueId() const [formStore, setFormStore] = createStore({ value: "", error: undefined as string | undefined, }) + onMount(() => { + if (!newLayout()) return + apiKey?.focus({ preventScroll: true }) + }) + async function handleSubmit(e: SubmitEvent) { e.preventDefault() @@ -414,11 +856,64 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc auth: { type: "api", key: apiKey, + ...(store.promptInputs ? { metadata: store.promptInputs } : {}), }, }) await complete() } + if (newLayout()) + return ( +
+ +
+
{language.t("provider.connect.opencodeZen.line1")}
+
{language.t("provider.connect.opencodeZen.line2")}
+
+ {language.t("provider.connect.opencodeZen.visit.prefix")} + + {language.t("provider.connect.opencodeZen.visit.link")} + + {language.t("provider.connect.opencodeZen.visit.suffix")} +
+
+
+
+ + + {(error) => ( + + )} + + + {language.t("common.continue")} + +
+
+ ) + return (
@@ -443,7 +938,8 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc
{ + if (!newLayout()) return + codeInput?.focus({ preventScroll: true }) + }) + async function handleSubmit(e: SubmitEvent) { e.preventDefault() @@ -495,6 +998,46 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc setFormStore("error", formatError(result.error, language.t("provider.connect.oauth.code.invalid"))) } + if (newLayout()) + return ( +
+
+ {language.t("provider.connect.oauth.code.visit.prefix")} + + {language.t("provider.connect.oauth.code.visit.link")} + + {language.t("provider.connect.oauth.code.visit.suffix", { provider: provider().name })} +
+ + + + {(error) => ( + + )} + + + {language.t("common.continue")} + + +
+ ) + return (
@@ -504,7 +1047,8 @@ export function DialogConnectProvider(props: { provider: string; directory?: Acc
+
+ - } - > -
-
- -
- - - {language.t("provider.connect.title.anthropicProMax")} - - {language.t("provider.connect.title", { provider: provider().name })} - -
+
+ + + {language.t("provider.connect.title.anthropicProMax")} + + {language.t("provider.connect.title", { provider: provider().name })} +
-
-
- - -
-
- - {language.t("provider.connect.status.inProgress")} -
+
+
+
+ + +
+
+ + {language.t("provider.connect.status.inProgress")}
- - - - - -
-
- - {language.t("provider.connect.status.inProgress")} -
+
+
+ + + + +
+
+ + {language.t("provider.connect.status.inProgress")}
- - - - - -
-
- - {language.t("provider.connect.status.failed", { error: store.error ?? "" })} -
+
+
+ + + + +
+
+ + {language.t("provider.connect.status.failed", { error: store.error ?? "" })}
- - - - - - - - - - - - - - - -
+
+
+ + + + + + + + + + + + + +
- +
) } diff --git a/packages/app/src/components/dialog-custom-provider.tsx b/packages/app/src/components/dialog-custom-provider.tsx index 647e5002a297..7971cca89f9c 100644 --- a/packages/app/src/components/dialog-custom-provider.tsx +++ b/packages/app/src/components/dialog-custom-provider.tsx @@ -6,21 +6,41 @@ import { ProviderIcon } from "@opencode-ai/ui/provider-icon" import { useMutation } from "@tanstack/solid-query" import { TextField } from "@opencode-ai/ui/text-field" import { showToast } from "@/utils/toast" -import { type Accessor, batch, For } from "solid-js" +import { batch, For } from "solid-js" import { createStore, produce } from "solid-js/store" import { Link } from "@/components/link" import { useServerSDK } from "@/context/server-sdk" import { useServerSync } from "@/context/server-sync" import { useLanguage } from "@/context/language" import { type FormState, headerRow, modelRow, validateCustomProvider } from "./dialog-custom-provider-form" -import { DialogSelectProvider } from "./dialog-select-provider" type Props = { - back?: "providers" | "close" - directory?: Accessor + onBack: () => void } export function DialogCustomProvider(props: Props) { + const language = useLanguage() + + return ( + + } + transition + > + + + ) +} + +export function CustomProviderForm(props: { autofocus?: boolean } = {}) { const dialog = useDialog() const serverSync = useServerSync() const serverSDK = useServerSDK() @@ -36,14 +56,6 @@ export function DialogCustomProvider(props: Props) { err: {}, }) - const goBack = () => { - if (props.back === "close") { - dialog.close() - return - } - dialog.show(() => ) - } - const addModel = () => { setForm( "models", @@ -163,168 +175,155 @@ export function DialogCustomProvider(props: Props) { } return ( - - } - transition - > -
-
- -
{language.t("provider.custom.title")}
-
+
+
+ +
{language.t("provider.custom.title")}
+
- -

- {language.t("provider.custom.description.prefix")} - - {language.t("provider.custom.description.link")} - - {language.t("provider.custom.description.suffix")} -

+ +

+ {language.t("provider.custom.description.prefix")} + + {language.t("provider.custom.description.link")} + + {language.t("provider.custom.description.suffix")} +

-
- setField("providerID", v)} - validationState={form.err.providerID ? "invalid" : undefined} - error={form.err.providerID} - /> - setField("name", v)} - validationState={form.err.name ? "invalid" : undefined} - error={form.err.name} - /> - setField("baseURL", v)} - validationState={form.err.baseURL ? "invalid" : undefined} - error={form.err.baseURL} - /> - setField("apiKey", v)} - /> -
+
+ setField("providerID", v)} + validationState={form.err.providerID ? "invalid" : undefined} + error={form.err.providerID} + /> + setField("name", v)} + validationState={form.err.name ? "invalid" : undefined} + error={form.err.name} + /> + setField("baseURL", v)} + validationState={form.err.baseURL ? "invalid" : undefined} + error={form.err.baseURL} + /> + setField("apiKey", v)} + /> +
-
- - - {(m, i) => ( -
-
- setModel(i(), "id", v)} - validationState={m.err.id ? "invalid" : undefined} - error={m.err.id} - /> -
-
- setModel(i(), "name", v)} - validationState={m.err.name ? "invalid" : undefined} - error={m.err.name} - /> -
- removeModel(i())} - disabled={form.models.length <= 1} - aria-label={language.t("provider.custom.models.remove")} +
+ + + {(m, i) => ( +
+
+ setModel(i(), "id", v)} + validationState={m.err.id ? "invalid" : undefined} + error={m.err.id} />
- )} - - -
- -
- - - {(h, i) => ( -
-
- setHeader(i(), "key", v)} - validationState={h.err.key ? "invalid" : undefined} - error={h.err.key} - /> -
-
- setHeader(i(), "value", v)} - validationState={h.err.value ? "invalid" : undefined} - error={h.err.value} - /> -
- removeHeader(i())} - disabled={form.headers.length <= 1} - aria-label={language.t("provider.custom.headers.remove")} +
+ setModel(i(), "name", v)} + validationState={m.err.name ? "invalid" : undefined} + error={m.err.name} />
- )} - - -
+ removeModel(i())} + disabled={form.models.length <= 1} + aria-label={language.t("provider.custom.models.remove")} + /> +
+ )} +
+ +
- - -
-
+
+ + + +
) } diff --git a/packages/app/src/components/dialog-edit-project-v2.tsx b/packages/app/src/components/dialog-edit-project-v2.tsx new file mode 100644 index 000000000000..dc9714aa0625 --- /dev/null +++ b/packages/app/src/components/dialog-edit-project-v2.tsx @@ -0,0 +1,156 @@ +import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2" +import { Dialog, DialogBody, DialogFooter, DialogHeader, DialogTitle } from "@opencode-ai/ui/v2/dialog-v2" +import { DividerV2 } from "@opencode-ai/ui/v2/divider-v2" +import { Field } from "@opencode-ai/ui/v2/field-v2" +import { Icon } from "@opencode-ai/ui/v2/icon" +import { ProjectAvatar, PROJECT_AVATAR_VARIANTS } from "@opencode-ai/ui/v2/project-avatar-v2" +import { TextareaV2 } from "@opencode-ai/ui/v2/textarea-v2" +import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2" +import { For, Show } from "solid-js" +import { useLanguage } from "@/context/language" +import { getProjectAvatarVariant, type LocalProject } from "@/context/layout" +import { ServerConnection } from "@/context/server" +import { getProjectAvatarSource } from "@/pages/layout/helpers" +import { createEditProjectModel } from "./edit-project" + +export function DialogEditProjectV2(props: { project: LocalProject; server: ServerConnection.Any }) { + const language = useLanguage() + const model = createEditProjectModel(props) + + return ( + +
+ + {language.t("dialog.project.edit.title")} + + + + + {language.t("dialog.project.edit.name")} + model.setStore("name", event.currentTarget.value)} + /> + + +
+
+ {language.t("dialog.project.edit.icon")} +
+
+ + { + model.setIconInput(element) + }} + type="file" + accept="image/*" + class="hidden" + onChange={model.inputChange} + /> +
+ {language.t("dialog.project.edit.icon.hint")} + {language.t("dialog.project.edit.icon.recommended")} +
+
+
+ + +
+
+ {language.t("dialog.project.edit.color")} +
+
+ + {(color) => ( + + )} + +
+
+
+ + + {language.t("dialog.project.edit.worktree.startup")} + {language.t("dialog.project.edit.worktree.startup.description")} + model.setStore("startup", event.currentTarget.value)} + /> + +
+ + + {language.t("common.cancel")} + + + {model.save.isPending ? language.t("common.saving") : language.t("common.save")} + + + +
+ ) +} diff --git a/packages/app/src/components/dialog-edit-project.tsx b/packages/app/src/components/dialog-edit-project.tsx index b861492af5ea..86a9630359ba 100644 --- a/packages/app/src/components/dialog-edit-project.tsx +++ b/packages/app/src/components/dialog-edit-project.tsx @@ -1,123 +1,32 @@ import { Button } from "@opencode-ai/ui/button" -import { useDialog } from "@opencode-ai/ui/context/dialog" import { Dialog } from "@opencode-ai/ui/dialog" import { TextField } from "@opencode-ai/ui/text-field" -import { useMutation } from "@tanstack/solid-query" import { Icon } from "@opencode-ai/ui/icon" -import { createMemo, For, Show } from "solid-js" -import { createStore } from "solid-js/store" +import { For, Show } from "solid-js" import { type LocalProject, getAvatarColors } from "@/context/layout" -import { getFilename } from "@opencode-ai/core/util/path" import { Avatar } from "@opencode-ai/ui/avatar" import { useLanguage } from "@/context/language" import { getProjectAvatarSource } from "@/pages/layout/helpers" import { ServerConnection } from "@/context/server" -import { useGlobal } from "@/context/global" +import { createEditProjectModel } from "./edit-project" const AVATAR_COLOR_KEYS = ["pink", "mint", "orange", "purple", "cyan", "lime"] as const export function DialogEditProject(props: { project: LocalProject; server: ServerConnection.Any }) { - const dialog = useDialog() - const global = useGlobal() const language = useLanguage() - const serverCtx = createMemo(() => global.ensureServerCtx(props.server)) - const serverSDK = () => serverCtx().sdk - const serverSync = () => serverCtx().sync - - const folderName = createMemo(() => getFilename(props.project.worktree)) - const defaultName = createMemo(() => props.project.name || folderName()) - - const [store, setStore] = createStore({ - name: defaultName(), - color: props.project.icon?.color, - iconOverride: props.project.icon?.override, - startup: props.project.commands?.start ?? "", - dragOver: false, - iconHover: false, - }) - - let iconInput: HTMLInputElement | undefined - - function handleFileSelect(file: File) { - if (!file.type.startsWith("image/")) return - const reader = new FileReader() - reader.onload = (e) => { - setStore("iconOverride", e.target?.result as string) - setStore("iconHover", false) - } - reader.readAsDataURL(file) - } - - function handleDrop(e: DragEvent) { - e.preventDefault() - setStore("dragOver", false) - const file = e.dataTransfer?.files[0] - if (file) handleFileSelect(file) - } - - function handleDragOver(e: DragEvent) { - e.preventDefault() - setStore("dragOver", true) - } - - function handleDragLeave() { - setStore("dragOver", false) - } - - function handleInputChange(e: Event) { - const input = e.target as HTMLInputElement - const file = input.files?.[0] - if (file) handleFileSelect(file) - } - - function clearIcon() { - setStore("iconOverride", "") - } - - const saveMutation = useMutation(() => ({ - mutationFn: async () => { - const name = store.name.trim() === folderName() ? "" : store.name.trim() - const start = store.startup.trim() - - if (props.project.id && props.project.id !== "global") { - await serverSDK().client.project.update({ - projectID: props.project.id, - directory: props.project.worktree, - name, - icon: { color: store.color || "", override: store.iconOverride || "" }, - commands: { start }, - }) - serverSync().project.icon(props.project.worktree, store.iconOverride || undefined) - dialog.close() - return - } - - serverSync().project.meta(props.project.worktree, { - name, - icon: { color: store.color || undefined, override: store.iconOverride || undefined }, - commands: { start: start || undefined }, - }) - dialog.close() - }, - })) - - function handleSubmit(e: SubmitEvent) { - e.preventDefault() - if (saveMutation.isPending) return - saveMutation.mutate() - } + const model = createEditProjectModel(props) return ( -
+
setStore("name", v)} + placeholder={model.folderName()} + value={model.store.name} + onChange={(v) => model.setStore("name", v)} />
@@ -125,38 +34,32 @@ export function DialogEditProject(props: { project: LocalProject; server: Server
setStore("iconHover", true)} - onMouseLeave={() => setStore("iconHover", false)} + onMouseEnter={() => model.setStore("iconHover", true)} + onMouseLeave={() => model.setStore("iconHover", false)} >
{ - if (store.iconOverride && store.iconHover) { - clearIcon() - } else { - iconInput?.click() - } + "border-text-interactive-base bg-surface-info-base/20": model.store.dragOver, + "border-border-base hover:border-border-strong": !model.store.dragOver, + "overflow-hidden": !!model.store.iconOverride, }} + onDrop={model.drop} + onDragOver={model.dragOver} + onDragLeave={model.dragLeave} + onClick={model.iconClick} >
@@ -174,8 +77,8 @@ export function DialogEditProject(props: { project: LocalProject; server: Server
@@ -183,8 +86,8 @@ export function DialogEditProject(props: { project: LocalProject; server: Server
@@ -193,12 +96,12 @@ export function DialogEditProject(props: { project: LocalProject; server: Server { - iconInput = el + model.setIconInput(el) }} type="file" accept="image/*" class="hidden" - onChange={handleInputChange} + onChange={model.inputChange} />
{language.t("dialog.project.edit.icon.hint")} @@ -207,7 +110,7 @@ export function DialogEditProject(props: { project: LocalProject; server: Server
- +
@@ -216,21 +119,21 @@ export function DialogEditProject(props: { project: LocalProject; server: Server
- -
diff --git a/packages/app/src/components/dialog-manage-models.tsx b/packages/app/src/components/dialog-manage-models.tsx index a0821ef1a36f..d6c5e9918670 100644 --- a/packages/app/src/components/dialog-manage-models.tsx +++ b/packages/app/src/components/dialog-manage-models.tsx @@ -3,13 +3,26 @@ import { List } from "@opencode-ai/ui/list" import { Switch } from "@opencode-ai/ui/switch" import { Tooltip } from "@opencode-ai/ui/tooltip" import { Button } from "@opencode-ai/ui/button" -import type { Component } from "solid-js" +import { ButtonV2 } from "@opencode-ai/ui/v2/button-v2" +import { Dialog as DialogV2, DialogBody, DialogHeader, DialogTitleGroup } from "@opencode-ai/ui/v2/dialog-v2" +import { Icon as IconV2 } from "@opencode-ai/ui/v2/icon" +import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2" +import { TextInputV2 } from "@opencode-ai/ui/v2/text-input-v2" +import { Switch as SwitchV2 } from "@opencode-ai/ui/v2/switch-v2" +import { ProviderIcon } from "@opencode-ai/ui/provider-icon" +import { useFilteredList } from "@opencode-ai/ui/hooks" +import { For, Show, type Component } from "solid-js" import { useLocal } from "@/context/local" import { popularProviders } from "@/hooks/use-providers" import { useLanguage } from "@/context/language" import { useDialog } from "@opencode-ai/ui/context/dialog" -import { DialogSelectProvider } from "./dialog-select-provider" +import { DialogConnectProvider } from "./dialog-connect-provider" import { decode64 } from "@/utils/base64" +import { SettingsListV2 } from "./settings-v2/parts/list" +import { SettingsRowV2 } from "./settings-v2/parts/row" +import "./settings-v2/settings-v2.css" + +type ModelItem = ReturnType["model"]["list"]>[number] export const DialogManageModels: Component = () => { const local = useLocal() @@ -18,7 +31,7 @@ export const DialogManageModels: Component = () => { const directory = () => decode64(local.slug()) const handleConnectProvider = () => { - dialog.show(() => ) + void dialog.show(() => ) } const providerRank = (id: string) => popularProviders.indexOf(id) const providerList = (providerID: string) => local.model.list().filter((x) => x.provider.id === providerID) @@ -102,3 +115,151 @@ export const DialogManageModels: Component = () => {
) } + +export const DialogManageModelsV2: Component = () => { + const local = useLocal() + const language = useLanguage() + const dialog = useDialog() + const directory = () => decode64(local.slug()) + + const handleConnectProvider = () => { + void dialog.show(() => ) + } + const providerList = (providerID: string) => local.model.list().filter((x) => x.provider.id === providerID) + const providerVisible = (providerID: string) => + providerList(providerID).every((x) => local.model.visible({ modelID: x.id, providerID: x.provider.id })) + const setProviderVisibility = (providerID: string, checked: boolean) => { + providerList(providerID).forEach((x) => { + local.model.setVisibility({ modelID: x.id, providerID: x.provider.id }, checked) + }) + } + const setModelVisibility = (item: ModelItem, checked: boolean) => { + local.model.setVisibility({ modelID: item.id, providerID: item.provider.id }, checked) + } + const list = useFilteredList({ + items: () => local.model.list(), + key: (x) => `${x.provider.id}:${x.id}`, + filterKeys: ["provider.name", "name", "id"], + sortBy: (a, b) => a.name.localeCompare(b.name), + groupBy: (x) => x.provider.id, + sortGroupsBy: (a, b) => { + const aRank = popularProviders.indexOf(a.category) + const bRank = popularProviders.indexOf(b.category) + const aPopular = aRank >= 0 + const bPopular = bRank >= 0 + if (aPopular && !bPopular) return -1 + if (!aPopular && bPopular) return 1 + return aRank - bRank + }, + }) + + return ( + + + + + {language.t("command.provider.connect")} + + + +
+
+ list.onInput(event.currentTarget.value)} + placeholder={language.t("dialog.model.search.placeholder")} + spellcheck={false} + autocorrect="off" + autocomplete="off" + autocapitalize="off" + autofocus + aria-label={language.t("dialog.model.search.placeholder")} + /> + + } + onClick={() => list.clear()} + aria-label={language.t("common.clear")} + /> + +
+
+
+
+ + {language.t("common.loading")} + {language.t("common.loading.ellipsis")} +
+ } + > + 0} + fallback={ +
+ {language.t("dialog.model.empty")} + + "{list.filter()}" + +
+ } + > + + {(group) => ( +
+
+
+ +

{group.items[0].provider.name}

+
+
+ setProviderVisibility(group.category, checked)} + hideLabel + > + {group.items[0].provider.name} + +
+
+ + + {(item) => ( + +
+ setModelVisibility(item, checked)} + hideLabel + > + {item.name} + +
+
+ )} +
+
+
+ )} +
+
+ +
+
+ + + ) +} diff --git a/packages/app/src/components/dialog-select-file.tsx b/packages/app/src/components/dialog-select-file.tsx index 49a0d5961aa6..905abe1e2dd3 100644 --- a/packages/app/src/components/dialog-select-file.tsx +++ b/packages/app/src/components/dialog-select-file.tsx @@ -1,329 +1,81 @@ -import { useDialog } from "@opencode-ai/ui/context/dialog" import { Dialog } from "@opencode-ai/ui/dialog" import { FileIcon } from "@opencode-ai/ui/file-icon" import { Icon } from "@opencode-ai/ui/icon" import { Keybind } from "@opencode-ai/ui/keybind" import { List } from "@opencode-ai/ui/list" -import { base64Encode } from "@opencode-ai/core/util/encode" import { getDirectory, getFilename } from "@opencode-ai/core/util/path" -import { useNavigate } from "@solidjs/router" -import { createMemo, createSignal, lazy, Match, onCleanup, Show, Switch } from "solid-js" -import { formatKeybind, useCommand, type CommandOption } from "@/context/command" -import { useServerSDK, type ServerSDK } from "@/context/server-sdk" -import { useServerSync } from "@/context/server-sync" -import { useLayout } from "@/context/layout" -import { useFile } from "@/context/file" +import { createMemo, createSignal, lazy, Match, Show, Switch } from "solid-js" +import { formatKeybind } from "@/context/command" +import { useServerSDK } from "@/context/server-sdk" import { useLanguage } from "@/context/language" import { usePlatform } from "@/context/platform" import { useSettings } from "@/context/settings" import { useSessionLayout } from "@/pages/session/session-layout" -import { createSessionTabs } from "@/pages/session/helpers" import { decode64 } from "@/utils/base64" import { getRelativeTime } from "@/utils/time" +import { + createCommandPaletteFileEntry, + createCommandPaletteFileOpener, + createCommandPaletteModel, + uniqueCommandPaletteEntries, + type CommandPaletteEntry, +} from "./command-palette" +import { DialogCommandPaletteV2 } from "./dialog-command-palette-v2" const DialogSelectFileV2 = lazy(() => import("./dialog-select-directory-v2").then((module) => ({ default: module.DialogSelectDirectoryV2 })), ) - -type EntryType = "command" | "file" | "session" - -type Entry = { - id: string - type: EntryType - title: string - description?: string - keybind?: string - category: string - option?: CommandOption - path?: string - directory?: string - sessionID?: string - archived?: number - updated?: number -} - type DialogSelectFileMode = "all" | "files" -const ENTRY_LIMIT = 5 -const COMMON_COMMAND_IDS = [ - "session.new", - "workspace.new", - "session.previous", - "session.next", - "terminal.toggle", - "review.toggle", -] as const - -const uniqueEntries = (items: Entry[]) => { - const seen = new Set() - const out: Entry[] = [] - for (const item of items) { - if (seen.has(item.id)) continue - seen.add(item.id) - out.push(item) - } - return out -} - -const createCommandEntry = (option: CommandOption, category: string): Entry => ({ - id: "command:" + option.id, - type: "command", - title: option.title, - description: option.description, - keybind: option.keybind, - category, - option, -}) - -const createFileEntry = (path: string, category: string): Entry => ({ - id: "file:" + path, - type: "file", - title: path, - category, - path, -}) - -const createSessionEntry = ( - input: { - directory: string - id: string - title: string - description: string - archived?: number - updated?: number - }, - category: string, -): Entry => ({ - id: `session:${input.directory}:${input.id}`, - type: "session", - title: input.title, - description: input.description, - category, - directory: input.directory, - sessionID: input.id, - archived: input.archived, - updated: input.updated, -}) - -function createCommandEntries(props: { - filesOnly: () => boolean - command: ReturnType - language: ReturnType -}) { - const allowed = createMemo(() => { - if (props.filesOnly()) return [] - return props.command.options.filter( - (option) => - !option.disabled && !option.hidden && !option.id.startsWith("suggested.") && option.id !== "file.open", - ) - }) - - const list = createMemo(() => { - const category = props.language.t("palette.group.commands") - return allowed().map((option) => createCommandEntry(option, category)) - }) - - const picks = createMemo(() => { - const all = allowed() - const order = new Map(COMMON_COMMAND_IDS.map((id, index) => [id, index])) - const picked = all.filter((option) => order.has(option.id)) - const base = picked.length ? picked : all.slice(0, ENTRY_LIMIT) - const sorted = picked.length ? [...base].sort((a, b) => (order.get(a.id) ?? 0) - (order.get(b.id) ?? 0)) : base - const category = props.language.t("palette.group.commands") - return sorted.map((option) => createCommandEntry(option, category)) - }) - - return { allowed, list, picks } -} - -function createFileEntries(props: { - file: ReturnType - tabs: () => ReturnType["tabs"]> - language: ReturnType -}) { - const tabState = createSessionTabs({ - tabs: props.tabs, - pathFromTab: props.file.pathFromTab, - normalizeTab: (tab) => (tab.startsWith("file://") ? props.file.tab(tab) : tab), - }) - const recent = createMemo(() => { - const all = tabState.openedTabs() - const active = tabState.activeFileTab() - const order = active ? [active, ...all.filter((item) => item !== active)] : all - const seen = new Set() - const category = props.language.t("palette.group.files") - const items: Entry[] = [] - - for (const item of order) { - const path = props.file.pathFromTab(item) - if (!path) continue - if (seen.has(path)) continue - seen.add(path) - items.push(createFileEntry(path, category)) - } - - return items.slice(0, ENTRY_LIMIT) - }) - - const root = createMemo(() => { - const category = props.language.t("palette.group.files") - const nodes = props.file.tree.children("") - const paths = nodes - .filter((node) => node.type === "file") - .map((node) => node.path) - .sort((a, b) => a.localeCompare(b)) - return paths.slice(0, ENTRY_LIMIT).map((path) => createFileEntry(path, category)) - }) - - return { recent, root } -} +export function DialogSelectFile(props: { mode?: DialogSelectFileMode; onOpenFile?: (path: string) => void }) { + const platform = usePlatform() + const settings = useSettings() + const filesOnly = () => props.mode === "files" -function createSessionEntries(props: { - workspaces: () => string[] - label: (directory: string) => string - serverSDK: ServerSDK - language: ReturnType -}) { - const state: { - token: number - inflight: Promise | undefined - cached: Entry[] | undefined - } = { - token: 0, - inflight: undefined, - cached: undefined, + if (!filesOnly() && settings.general.newLayoutDesigns()) { + return } - const sessions = (text: string) => { - const query = text.trim() - if (!query) { - state.token += 1 - state.inflight = undefined - state.cached = undefined - return [] as Entry[] - } - - if (state.cached) return state.cached - if (state.inflight) return state.inflight - - const current = state.token - const dirs = props.workspaces() - if (dirs.length === 0) return [] as Entry[] - - state.inflight = Promise.all( - dirs.map((directory) => { - const description = props.label(directory) - return props.serverSDK.client.session - .list({ directory, roots: true }) - .then((x) => - (x.data ?? []) - .filter((s) => !!s?.id) - .map((s) => ({ - id: s.id, - title: s.title ?? props.language.t("command.session.new"), - description, - directory, - archived: s.time?.archived, - updated: s.time?.updated, - })), - ) - .catch( - () => - [] as { - id: string - title: string - description: string - directory: string - archived?: number - updated?: number - }[], - ) - }), - ) - .then((results) => { - if (state.token !== current) return [] as Entry[] - const seen = new Set() - const category = props.language.t("command.category.session") - const next = results - .flat() - .filter((item) => { - const key = `${item.directory}:${item.id}` - if (seen.has(key)) return false - seen.add(key) - return true - }) - .map((item) => createSessionEntry(item, category)) - state.cached = next - return next - }) - .catch(() => [] as Entry[]) - .finally(() => { - state.inflight = undefined - }) - - return state.inflight + if (filesOnly() && platform.platform === "desktop" && settings.general.newLayoutDesigns()) { + return } - return { sessions } + return } -export function DialogSelectFile(props: { mode?: DialogSelectFileMode; onOpenFile?: (path: string) => void }) { - const command = useCommand() +function DialogSelectFileDesktopV2(props: { onOpenFile?: (path: string) => void }) { const language = useLanguage() - const platform = usePlatform() - const settings = useSettings() - const layout = useLayout() - const file = useFile() - const dialog = useDialog() - const navigate = useNavigate() const serverSDK = useServerSDK() - const serverSync = useServerSync() - const { params, tabs, view } = useSessionLayout() - const filesOnly = () => props.mode === "files" - const state = { cleanup: undefined as (() => void) | void, committed: false } - const [grouped, setGrouped] = createSignal(false) - const commandEntries = createCommandEntries({ filesOnly, command, language }) - const fileEntries = createFileEntries({ file, tabs, language }) - + const { params } = useSessionLayout() const projectDirectory = createMemo(() => decode64(params.dir) ?? "") - const project = createMemo(() => { - const directory = projectDirectory() - if (!directory) return - return layout.projects.list().find((p) => p.worktree === directory || p.sandboxes?.includes(directory)) - }) - const workspaces = createMemo(() => { - const directory = projectDirectory() - const current = project() - if (!current) return directory ? [directory] : [] + const openFile = createCommandPaletteFileOpener(props.onOpenFile) - const dirs = [current.worktree, ...(current.sandboxes ?? [])] - if (directory && !dirs.includes(directory)) return [...dirs, directory] - return dirs - }) - const homedir = createMemo(() => serverSync().data.path.home) - const label = (directory: string) => { - const current = project() - const kind = - current && directory === current.worktree - ? language.t("workspace.type.local") - : language.t("workspace.type.sandbox") - const [store] = serverSync().child(directory, { bootstrap: false }) - const home = homedir() - const path = home ? directory.replace(home, "~") : directory - const name = store.vcs?.branch ?? getFilename(directory) - return `${kind} : ${name || path}` - } + return ( + { + if (typeof result !== "string") return + openFile(result) + }} + /> + ) +} - const { sessions } = createSessionEntries({ workspaces, label, serverSDK: serverSDK(), language }) +function DialogSelectFileLegacy(props: { filesOnly: () => boolean; onOpenFile?: (path: string) => void }) { + const palette = createCommandPaletteModel(props) + const [grouped, setGrouped] = createSignal(false) const items = async (text: string) => { const query = text.trim() setGrouped(query.length > 0) - if (!query && filesOnly()) { - const loaded = file.tree.state("")?.loaded - const pending = loaded ? Promise.resolve() : file.tree.list("") - const next = uniqueEntries([...fileEntries.recent(), ...fileEntries.root()]) + if (!query && props.filesOnly()) { + const loaded = palette.file.tree.state("")?.loaded + const pending = loaded ? Promise.resolve() : palette.file.tree.list("") + const next = uniqueCommandPaletteEntries([...palette.recentFileEntries(), ...palette.rootFileEntries()]) if (loaded || next.length > 0) { void pending @@ -331,79 +83,24 @@ export function DialogSelectFile(props: { mode?: DialogSelectFileMode; onOpenFil } await pending - return uniqueEntries([...fileEntries.recent(), ...fileEntries.root()]) - } - - if (!query) return [...commandEntries.picks(), ...fileEntries.recent()] - - if (filesOnly()) { - const files = await file.searchFiles(query) - const category = language.t("palette.group.files") - return files.map((path) => createFileEntry(path, category)) + return uniqueCommandPaletteEntries([...palette.recentFileEntries(), ...palette.rootFileEntries()]) } - const [files, nextSessions] = await Promise.all([file.searchFiles(query), Promise.resolve(sessions(query))]) - const category = language.t("palette.group.files") - const entries = files.map((path) => createFileEntry(path, category)) - return [...commandEntries.list(), ...nextSessions, ...entries] - } - - const handleMove = (item: Entry | undefined) => { - state.cleanup?.() - if (!item) return - if (item.type !== "command") return - state.cleanup = item.option?.onHighlight?.() - } - - const open = (path: string) => { - const value = file.tab(path) - void tabs().open(value) - void file.load(path) - if (!view().reviewPanel.opened()) view().reviewPanel.open() - layout.fileTree.setTab("all") - props.onOpenFile?.(path) - tabs().setActive(value) - } - - const handleSelect = (item: Entry | undefined) => { - if (!item) return - state.committed = true - state.cleanup = undefined - dialog.close() + if (!query) return [...palette.preferredCommandEntries(), ...palette.recentFileEntries()] - if (item.type === "command") { - item.option?.onSelect?.("palette") - return + if (props.filesOnly()) { + const files = await palette.file.searchFiles(query) + const category = palette.language.t("palette.group.files") + return files.map((path) => createCommandPaletteFileEntry(path, category)) } - if (item.type === "session") { - if (!item.directory || !item.sessionID) return - navigate(`/${base64Encode(item.directory)}/session/${item.sessionID}`) - return - } - - if (!item.path) return - open(item.path) - } - - onCleanup(() => { - if (state.committed) return - state.cleanup?.() - }) - - if (filesOnly() && platform.platform === "desktop" && settings.general.newLayoutDesigns()) { - return ( - { - if (typeof result !== "string") return - open(result) - }} - /> - ) + const [files, nextSessions] = await Promise.all([ + palette.file.searchFiles(query), + Promise.resolve(palette.sessions(query)), + ]) + const category = palette.language.t("palette.group.files") + const entries = files.map((path) => createCommandPaletteFileEntry(path, category)) + return [...palette.commandEntries(), ...nextSessions, ...entries] } return ( @@ -411,21 +108,21 @@ export function DialogSelectFile(props: { mode?: DialogSelectFileMode; onOpenFil item.id} filterKeys={["title", "description", "category"]} skipFilter={(item) => item.type === "file"} groupBy={grouped() ? (item) => item.category : () => ""} - onMove={handleMove} - onSelect={handleSelect} + onMove={(item: CommandPaletteEntry | undefined) => palette.highlight(item)} + onSelect={(item: CommandPaletteEntry | undefined) => palette.select(item)} > {(item) => (
- {formatKeybind(item.keybind ?? "", language.t)} + {formatKeybind(item.keybind ?? "", palette.language.t)}
@@ -479,7 +176,7 @@ export function DialogSelectFile(props: { mode?: DialogSelectFileMode; onOpenFil
- {getRelativeTime(new Date(item.updated!).toISOString(), language.t)} + {getRelativeTime(new Date(item.updated!).toISOString(), palette.language.t)}
diff --git a/packages/app/src/components/dialog-select-model-search.test.ts b/packages/app/src/components/dialog-select-model-search.test.ts new file mode 100644 index 000000000000..3ee800914042 --- /dev/null +++ b/packages/app/src/components/dialog-select-model-search.test.ts @@ -0,0 +1,19 @@ +import { describe, expect, test } from "bun:test" +import { matchesModelSearch } from "./dialog-select-model-search" + +describe("matchesModelSearch", () => { + test("matches model names across separators", () => { + expect(matchesModelSearch("gpt 5", ["GPT-5.5"])).toBe(true) + expect(matchesModelSearch("gpt-5", ["GPT-5.5"])).toBe(true) + expect(matchesModelSearch("gpt5", ["GPT-5.5"])).toBe(true) + }) + + test("matches any searchable model field", () => { + expect(matchesModelSearch("open ai", ["GPT-5.5", "gpt-5.5", "OpenAI"])).toBe(true) + expect(matchesModelSearch("gpt 5", ["GPT-5.5", "gpt-5.5", "OpenAI"])).toBe(true) + }) + + test("does not match unrelated searches", () => { + expect(matchesModelSearch("claude", ["GPT-5.5", "gpt-5.5", "OpenAI"])).toBe(false) + }) +}) diff --git a/packages/app/src/components/dialog-select-model-search.ts b/packages/app/src/components/dialog-select-model-search.ts new file mode 100644 index 000000000000..901f3fc114a6 --- /dev/null +++ b/packages/app/src/components/dialog-select-model-search.ts @@ -0,0 +1,18 @@ +export const normalizeModelSearch = (value: string) => + value + .toLowerCase() + .replace(/[^\p{Letter}\p{Number}]+/gu, " ") + .trim() + .replace(/\s+/g, " ") + +export const compactModelSearch = (value: string) => normalizeModelSearch(value).replaceAll(" ", "") + +export const matchesModelSearch = (query: string, values: string[]) => { + const search = normalizeModelSearch(query) + if (!search) return true + + const compactSearch = compactModelSearch(query) + return values.some( + (value) => normalizeModelSearch(value).includes(search) || compactModelSearch(value).includes(compactSearch), + ) +} diff --git a/packages/app/src/components/dialog-select-model-unpaid-v2.stories.tsx b/packages/app/src/components/dialog-select-model-unpaid-v2.stories.tsx new file mode 100644 index 000000000000..bd4beb2ec9b1 --- /dev/null +++ b/packages/app/src/components/dialog-select-model-unpaid-v2.stories.tsx @@ -0,0 +1,55 @@ +// @ts-nocheck +import { Button } from "@opencode-ai/ui/button" +import { useDialog } from "@opencode-ai/ui/context/dialog" +import { createSignal, onMount } from "solid-js" +import { DialogSelectModelUnpaidV2 } from "./dialog-select-model-unpaid-v2" + +const names = [ + "MiMo V2.5 Free", + "Nemotron 3 Ultra Free", + "Deepseek V4 Flash Free", + "North Mini Code Free", + "Hy3 Free", + "Big Pickle", +] + +function SelectModelWithoutProviders() { + const dialog = useDialog() + const models = names.map((name, index) => ({ + id: name.toLowerCase().replaceAll(" ", "-"), + name, + provider: { id: "opencode", name: "OpenCode" }, + cost: { input: 0, output: 0 }, + limit: { context: 128_000 }, + capabilities: { + reasoning: index !== 5, + input: { text: true, image: false, audio: false, video: false, pdf: false }, + }, + })) + const [current, setCurrent] = createSignal(models[2]) + const model = { + list: () => models, + current, + set(value) { + setCurrent(models.find((item) => item.id === value?.modelID)) + }, + } + const open = () => dialog.show(() => ) + + onMount(open) + + return ( + + ) +} + +export default { + title: "App/Dialogs/Select Model", + id: "app-dialog-select-model", +} + +export const WithoutProviders = { + render: () => , +} diff --git a/packages/app/src/components/dialog-select-model-unpaid-v2.tsx b/packages/app/src/components/dialog-select-model-unpaid-v2.tsx new file mode 100644 index 000000000000..de86485ef9d5 --- /dev/null +++ b/packages/app/src/components/dialog-select-model-unpaid-v2.tsx @@ -0,0 +1,175 @@ +import { DialogBody, DialogHeader, DialogTitle, DialogV2 } from "@opencode-ai/ui/v2/dialog-v2" +import { Icon } from "@opencode-ai/ui/v2/icon" +import { ProviderIcon } from "@opencode-ai/ui/provider-icon" +import { Tag } from "@opencode-ai/ui/v2/badge-v2" +import { TooltipV2 } from "@opencode-ai/ui/v2/tooltip-v2" +import { useDialog } from "@opencode-ai/ui/context/dialog" +import { useTheme } from "@opencode-ai/ui/theme" +import { createMemo, onCleanup, onMount, type Component, For, Show } from "solid-js" +import { useLocal } from "@/context/local" +import { useProviders } from "@/hooks/use-providers" +import { decode64 } from "@/utils/base64" +import { useLanguage } from "@/context/language" +import { ModelTooltip } from "./model-tooltip" + +type ModelState = ReturnType["model"] +const featuredProviders = ["opencode", "opencode-go", "openai", "anthropic", "google", "github-copilot"] +const displayModelName = (name: string) => name.replace(/\s+(?:\(free\)|free)$/i, "") + +export const DialogSelectModelUnpaidV2: Component<{ model?: ModelState }> = (props) => { + const local = useLocal() + const model = props.model ?? local.model + const dialog = useDialog() + const theme = useTheme() + const directory = () => decode64(local.slug()) + const providers = useProviders(directory) + const language = useLanguage() + const modelKey = (item: ReturnType[number]) => `${item.provider.id}:${item.id}` + const currentKey = createMemo(() => { + const c = model.current() + return c ? `${c.provider.id}:${c.id}` : undefined + }) + const isFree = (item: ReturnType[number]) => + item.provider.id === "opencode" && (!item.cost || item.cost.input === 0) + const freeModels = createMemo(() => model.list().filter(isFree)) + + const openProviders = (provider?: string) => { + void import("./dialog-connect-provider").then((x) => { + const controller = x.useProviderConnectController() + controller.select(provider) + void dialog.show(() => ) + }) + } + + const selectModel = (item: ReturnType[number]) => { + model.set({ modelID: item.id, providerID: item.provider.id }, { recent: true }) + dialog.close() + } + + // Focus starts on the dialog's close button, outside the list, so listen at the + // document level while the dialog is mounted instead of on the list container. + let listEl: HTMLDivElement | undefined + onMount(() => { + const handleKeyDown = (e: KeyboardEvent) => { + if (e.key !== "ArrowDown" && e.key !== "ArrowUp") return + if (!listEl) return + const buttons = Array.from(listEl.querySelectorAll("button")) + if (buttons.length === 0) return + const index = buttons.indexOf(document.activeElement as HTMLButtonElement) + const next = + index < 0 ? (e.key === "ArrowDown" ? 0 : buttons.length - 1) : index + (e.key === "ArrowDown" ? 1 : -1) + buttons[(next + buttons.length) % buttons.length]?.focus() + e.preventDefault() + } + document.addEventListener("keydown", handleKeyDown) + onCleanup(() => document.removeEventListener("keydown", handleKeyDown)) + }) + + return ( + + + {language.t("dialog.model.select.title")} + + +
+
+
+
+ {language.t("dialog.model.unpaid.freeModels.title")} +
+
+ + {(item) => ( + + } + > + + + )} + +
+ +
+
+
+
+ {language.t("dialog.model.unpaid.addMore.title")} +
+
+
+ featuredProviders.includes(provider.id)) + .sort((a, b) => featuredProviders.indexOf(a.id) - featuredProviders.indexOf(b.id))} + > + {(provider) => ( + + )} + + +
+
+
+
+
+
+ ) +} diff --git a/packages/app/src/components/dialog-select-model-unpaid.tsx b/packages/app/src/components/dialog-select-model-unpaid.tsx index bcb4a2fbcbf4..4611a36c950e 100644 --- a/packages/app/src/components/dialog-select-model-unpaid.tsx +++ b/packages/app/src/components/dialog-select-model-unpaid.tsx @@ -22,17 +22,16 @@ export const DialogSelectModelUnpaid: Component<{ model?: ModelState }> = (props const providers = useProviders(directory) const language = useLanguage() - const connect = (provider: string) => { + const openProviders = (provider?: string) => { void import("./dialog-connect-provider").then((x) => { - dialog.show(() => ) + const controller = x.useProviderConnectController() + controller.select(provider) + void dialog.show(() => ) }) } - const all = () => { - void import("./dialog-select-provider").then((x) => { - dialog.show(() => ) - }) - } + const connect = (provider: string) => openProviders(provider) + const all = () => openProviders() let listRef: ListRef | undefined const handleKeyDown = (e: KeyboardEvent) => { diff --git a/packages/app/src/components/dialog-select-model.tsx b/packages/app/src/components/dialog-select-model.tsx index e16d9a665716..4fb7891ec950 100644 --- a/packages/app/src/components/dialog-select-model.tsx +++ b/packages/app/src/components/dialog-select-model.tsx @@ -1,23 +1,57 @@ import { Popover as Kobalte } from "@kobalte/core/popover" -import { Component, ComponentProps, createMemo, JSX, Show, ValidComponent } from "solid-js" +import { + Component, + ComponentProps, + createEffect, + createMemo, + For, + JSX, + onCleanup, + Show, + ValidComponent, +} from "solid-js" import { createStore } from "solid-js/store" import { useLocal } from "@/context/local" import { useDialog } from "@opencode-ai/ui/context/dialog" import { popularProviders } from "@/hooks/use-providers" import { Button } from "@opencode-ai/ui/button" import { IconButton } from "@opencode-ai/ui/icon-button" +import { ScrollView } from "@opencode-ai/ui/scroll-view" import { Tag } from "@opencode-ai/ui/tag" import { Dialog } from "@opencode-ai/ui/dialog" import { List } from "@opencode-ai/ui/list" import { Tooltip } from "@opencode-ai/ui/tooltip" +import { Icon } from "@opencode-ai/ui/v2/icon" +import { Tag as TagV2 } from "@opencode-ai/ui/v2/badge-v2" +import { MenuV2 } from "@opencode-ai/ui/v2/menu-v2" +import { TooltipV2 } from "@opencode-ai/ui/v2/tooltip-v2" import { ModelTooltip } from "./model-tooltip" import { useLanguage } from "@/context/language" import { decode64 } from "@/utils/base64" +import { handleDocumentSearchKeydown } from "@/utils/search-keydown" +import { createEventListener } from "@solid-primitives/event-listener" +import { matchesModelSearch } from "./dialog-select-model-search" const isFree = (provider: string, cost: { input: number } | undefined) => provider === "opencode" && (!cost || cost.input === 0) type ModelState = ReturnType["model"] +type ModelItem = ReturnType[number] + +const modelKey = (model: ModelItem) => `${model.provider.id}:${model.id}` +const manageKey = "action:manage" + +const sortModelGroups = (a: { category: string; items: ModelItem[] }, b: { category: string; items: ModelItem[] }) => { + const aIndex = popularProviders.indexOf(a.category) + const bIndex = popularProviders.indexOf(b.category) + const aPopular = aIndex >= 0 + const bPopular = bIndex >= 0 + + if (aPopular && !bPopular) return -1 + if (!aPopular && bPopular) return 1 + if (aPopular && bPopular) return aIndex - bIndex + return a.items[0].provider.name.localeCompare(b.items[0].provider.name) +} const ModelList: Component<{ provider?: string @@ -59,6 +93,7 @@ const ModelList: Component<{ class="w-full" placement="right-start" gutter={12} + openDelay={0} value={} > {node} @@ -122,8 +157,8 @@ export function ModelSelectorPopover(props: { const handleConnectProvider = () => { close("provider") - void import("./dialog-select-provider").then((x) => { - dialog.show(() => ) + void import("./dialog-connect-provider").then((x) => { + void dialog.show(() => ) }) } const language = useLanguage() @@ -199,6 +234,285 @@ export function ModelSelectorPopover(props: { ) } +export function ModelSelectorPopoverV2(props: { + provider?: string + model?: ModelState + children?: JSX.Element + triggerAs?: ValidComponent + triggerProps?: ModelSelectorTriggerProps + onClose?: () => void +}) { + const model = props.model ?? useLocal().model + const language = useLanguage() + const dialog = useDialog() + const [store, setStore] = createStore({ open: false, search: "", active: "" }) + let searchRef: HTMLInputElement | undefined + let contentRef: HTMLDivElement | undefined + let restoreTrigger = true + + const allModels = createMemo(() => + model + .list() + .filter((item) => model.visible({ modelID: item.id, providerID: item.provider.id })) + .filter((item) => (props.provider ? item.provider.id === props.provider : true)), + ) + const models = createMemo(() => { + const search = store.search.trim() + const filtered = search + ? allModels().filter((item) => matchesModelSearch(search, [item.name, item.id, item.provider.name])) + : allModels() + + return [...filtered].sort((a, b) => a.name.localeCompare(b.name)) + }) + const groups = createMemo(() => { + const byProvider = new Map() + for (const item of models()) { + byProvider.set(item.provider.id, [...(byProvider.get(item.provider.id) ?? []), item]) + } + return Array.from(byProvider, ([category, items]) => ({ category, items })).sort(sortModelGroups) + }) + const keys = () => [...models().map(modelKey), manageKey] + const current = () => { + const value = model.current() + return value ? `${value.provider.id}:${value.id}` : undefined + } + const initialActive = () => { + const selected = current() + const options = keys() + if (selected && options.includes(selected)) return selected + return options[0] ?? "" + } + const activeItem = () => + store.active ? contentRef?.querySelector(`[data-option-key="${CSS.escape(store.active)}"]`) : undefined + const afterClose = (callback: () => void) => { + const complete = () => { + if (contentRef?.isConnected) { + requestAnimationFrame(complete) + return + } + requestAnimationFrame(() => requestAnimationFrame(callback)) + } + requestAnimationFrame(complete) + } + const setOpen = (open: boolean) => { + if (open) { + restoreTrigger = true + setStore({ open: true, active: initialActive() }) + setTimeout(() => + requestAnimationFrame(() => { + searchRef?.focus() + activeItem()?.scrollIntoView({ block: "nearest" }) + }), + ) + return + } + setStore({ open: false, search: "", active: "" }) + } + const select = (item: ModelItem) => { + model.set({ modelID: item.id, providerID: item.provider.id }, { recent: true }) + props.onClose?.() + } + const selectModel = (item: ModelItem) => { + restoreTrigger = false + setOpen(false) + afterClose(() => select(item)) + } + const manage = () => { + restoreTrigger = false + setOpen(false) + afterClose(() => { + void import("./dialog-manage-models").then((x) => { + dialog.show(() => ) + }) + }) + } + const selectActive = () => { + const item = models().find((item) => modelKey(item) === store.active) + if (item) { + selectModel(item) + return + } + if (store.active === manageKey) manage() + } + const moveActive = (delta: number) => { + const options = keys() + if (options.length === 0) return + const index = options.indexOf(store.active) + const start = index === -1 ? 0 : index + setStore("active", options[(start + delta + options.length) % options.length]) + queueMicrotask(() => activeItem()?.scrollIntoView({ block: "nearest" })) + } + const setSearch = (value: string) => { + const search = value.trim() + const first = [...allModels()] + .sort((a, b) => a.name.localeCompare(b.name)) + .find((item) => matchesModelSearch(search, [item.name, item.id, item.provider.name])) + setStore({ search: value, active: first ? modelKey(first) : manageKey }) + } + + createEffect(() => { + if (!store.open) return + createEventListener( + document, + "keydown", + (event: KeyboardEvent) => handleDocumentSearchKeydown(searchRef, event, store.search, setSearch), + true, + ) + }) + + return ( + + + {props.children} + + + (contentRef = el)} + class="w-[284px] overflow-hidden rounded-md border-0 bg-v2-background-bg-layer-01 !p-0 shadow-[var(--v2-elevation-floating)] focus:outline-none" + onPointerDownOutside={() => (restoreTrigger = false)} + onFocusOutside={() => (restoreTrigger = false)} + onCloseAutoFocus={(event) => { + if (!restoreTrigger) event.preventDefault() + }} + > +
+
+ + (searchRef = el)} + value={store.search} + placeholder={language.t("dialog.model.search.placeholder")} + class="h-7 min-w-0 flex-1 border-0 bg-transparent text-[13px] font-[440] leading-5 tracking-[-0.04px] text-v2-text-text-base outline-none placeholder:text-v2-text-text-faint" + spellcheck={false} + autocorrect="off" + autocomplete="off" + autocapitalize="off" + onInput={(event) => setSearch(event.currentTarget.value)} + onKeyDown={(event) => { + if (event.key === "Tab") return + event.stopPropagation() + if (event.key === "Escape") { + event.preventDefault() + restoreTrigger = false + setOpen(false) + afterClose(() => props.onClose?.()) + return + } + if (event.altKey || event.metaKey) return + if (event.key === "ArrowDown") { + event.preventDefault() + moveActive(1) + return + } + if (event.key === "ArrowUp") { + event.preventDefault() + moveActive(-1) + return + } + if (event.key === "Enter" && !event.isComposing) { + event.preventDefault() + selectActive() + } + }} + /> + + + +
+
+
+ +
+ 0} + fallback={ +
+ {language.t("dialog.model.empty")} +
+ } + > + + {(group) => ( + + + {group.items[0].provider.name} + + + + {(item) => ( + + } + > + { + setStore("active", modelKey(item)) + setTimeout(() => searchRef?.focus()) + }} + onSelect={() => selectModel(item)} + > + {item.name} + + {language.t("model.tag.free")} + + + {language.t("model.tag.latest")} + + + + )} + + + + )} + +
+
+
+
+
+ { + setStore("active", manageKey) + setTimeout(() => searchRef?.focus()) + }} + onSelect={manage} + > + + {language.t("dialog.model.manage")} + +
+ + + + ) +} + export const DialogSelectModel: Component<{ provider?: string; model?: ModelState }> = (props) => { const dialog = useDialog() const language = useLanguage() @@ -206,8 +520,8 @@ export const DialogSelectModel: Component<{ provider?: string; model?: ModelStat const directory = () => decode64(local.slug()) const provider = () => { - void import("./dialog-select-provider").then((x) => { - dialog.show(() => ) + void import("./dialog-connect-provider").then((x) => { + void dialog.show(() => ) }) } diff --git a/packages/app/src/components/dialog-select-provider.tsx b/packages/app/src/components/dialog-select-provider.tsx deleted file mode 100644 index ff0ab5d2bf0c..000000000000 --- a/packages/app/src/components/dialog-select-provider.tsx +++ /dev/null @@ -1,87 +0,0 @@ -import { type Accessor, Component, Show } from "solid-js" -import { useDialog } from "@opencode-ai/ui/context/dialog" -import { popularProviders, useProviders } from "@/hooks/use-providers" -import { Dialog } from "@opencode-ai/ui/dialog" -import { List } from "@opencode-ai/ui/list" -import { Tag } from "@opencode-ai/ui/tag" -import { ProviderIcon } from "@opencode-ai/ui/provider-icon" -import { DialogConnectProvider } from "./dialog-connect-provider" -import { useLanguage } from "@/context/language" -import { DialogCustomProvider } from "./dialog-custom-provider" - -const CUSTOM_ID = "_custom" - -export const DialogSelectProvider: Component<{ directory?: Accessor }> = (props) => { - const dialog = useDialog() - const providers = useProviders(props.directory) - const language = useLanguage() - - const popularGroup = () => language.t("dialog.provider.group.popular") - const otherGroup = () => language.t("dialog.provider.group.other") - const customLabel = () => language.t("settings.providers.tag.custom") - const note = (id: string) => { - if (id === "anthropic") return language.t("dialog.provider.anthropic.note") - if (id === "openai") return language.t("dialog.provider.openai.note") - if (id.startsWith("github-copilot")) return language.t("dialog.provider.copilot.note") - if (id === "opencode-go") return language.t("dialog.provider.opencodeGo.tagline") - } - - return ( - - x?.id} - items={() => { - language.locale() - return [{ id: CUSTOM_ID, name: customLabel() }, ...providers.all().values()] - }} - filterKeys={["id", "name"]} - groupBy={(x) => (popularProviders.includes(x.id) ? popularGroup() : otherGroup())} - sortBy={(a, b) => { - if (a.id === CUSTOM_ID) return -1 - if (b.id === CUSTOM_ID) return 1 - if (popularProviders.includes(a.id) && popularProviders.includes(b.id)) - return popularProviders.indexOf(a.id) - popularProviders.indexOf(b.id) - return a.name.localeCompare(b.name) - }} - sortGroupsBy={(a, b) => { - const popular = popularGroup() - if (a.category === popular && b.category !== popular) return -1 - if (b.category === popular && a.category !== popular) return 1 - return 0 - }} - onSelect={(x) => { - if (!x) return - if (x.id === CUSTOM_ID) { - dialog.show(() => ) - return - } - dialog.show(() => ) - }} - > - {(i) => ( -
- - {i.name} - -
{language.t("dialog.provider.opencode.tagline")}
-
- - {language.t("settings.providers.tag.custom")} - - - {language.t("dialog.provider.tag.recommended")} - - {(value) =>
{value()}
}
- - {language.t("dialog.provider.tag.recommended")} - -
- )} -
-
- ) -} diff --git a/packages/app/src/components/dialog-settings.tsx b/packages/app/src/components/dialog-settings.tsx index 20d71f4bfd44..b554fa79a822 100644 --- a/packages/app/src/components/dialog-settings.tsx +++ b/packages/app/src/components/dialog-settings.tsx @@ -1,22 +1,35 @@ -import { Component } from "solid-js" +import { Component, createSignal, startTransition } from "solid-js" import { Dialog } from "@opencode-ai/ui/dialog" import { Tabs } from "@opencode-ai/ui/tabs" import { Icon } from "@opencode-ai/ui/icon" import { useLanguage } from "@/context/language" import { usePlatform } from "@/context/platform" +import { useDialog } from "@opencode-ai/ui/context/dialog" import { SettingsGeneral } from "./settings-general" import { SettingsKeybinds } from "./settings-keybinds" import { SettingsProviders } from "./settings-providers" import { SettingsModels } from "./settings-models" import { SettingsServers } from "./settings-servers" -export const DialogSettings: Component = () => { +export const DialogSettings: Component<{ defaultValue?: string }> = (props) => { const language = useLanguage() const platform = usePlatform() + const dialog = useDialog() + const [tab, setTab] = createSignal(props.defaultValue ?? "general") + + const showProviders = () => { + void dialog.show(() => ) + } return ( - + void startTransition(() => setTab(value))} + class="h-full settings-dialog" + >
@@ -70,7 +83,7 @@ export const DialogSettings: Component = () => { - + diff --git a/packages/app/src/components/edit-project.ts b/packages/app/src/components/edit-project.ts new file mode 100644 index 000000000000..3ec999da0639 --- /dev/null +++ b/packages/app/src/components/edit-project.ts @@ -0,0 +1,119 @@ +import { getFilename } from "@opencode-ai/core/util/path" +import { useDialog } from "@opencode-ai/ui/context/dialog" +import { useMutation } from "@tanstack/solid-query" +import { createMemo } from "solid-js" +import { createStore } from "solid-js/store" +import { useGlobal } from "@/context/global" +import { type LocalProject } from "@/context/layout" +import { ServerConnection } from "@/context/server" + +export function createEditProjectModel(props: { project: LocalProject; server: ServerConnection.Any }) { + const dialog = useDialog() + const global = useGlobal() + const serverCtx = createMemo(() => global.ensureServerCtx(props.server)) + const folderName = createMemo(() => getFilename(props.project.worktree)) + const defaultName = createMemo(() => props.project.name || folderName()) + const [store, setStore] = createStore({ + name: defaultName(), + color: props.project.icon?.color, + iconOverride: props.project.icon?.override, + startup: props.project.commands?.start ?? "", + dragOver: false, + iconHover: false, + }) + let iconInput: HTMLInputElement | undefined + + function selectFile(file: File) { + if (!file.type.startsWith("image/")) return + const reader = new FileReader() + reader.onload = (event) => { + const result = event.target?.result + if (typeof result !== "string") return + setStore("iconOverride", result) + setStore("iconHover", false) + } + reader.readAsDataURL(file) + } + + function drop(event: DragEvent) { + event.preventDefault() + setStore("dragOver", false) + const file = event.dataTransfer?.files[0] + if (file) selectFile(file) + } + + function dragOver(event: DragEvent) { + event.preventDefault() + setStore("dragOver", true) + } + + function dragLeave() { + setStore("dragOver", false) + } + + function inputChange(event: Event) { + const file = (event.currentTarget as HTMLInputElement).files?.[0] + if (file) selectFile(file) + } + + function iconClick() { + if (store.iconOverride && store.iconHover) { + setStore("iconOverride", "") + return + } + iconInput?.click() + } + + const save = useMutation(() => ({ + mutationFn: async () => { + const name = store.name.trim() === folderName() ? "" : store.name.trim() + const start = store.startup.trim() + + if (props.project.id && props.project.id !== "global") { + await serverCtx().sdk.client.project.update({ + projectID: props.project.id, + directory: props.project.worktree, + name, + icon: { color: store.color || "", override: store.iconOverride || "" }, + commands: { start }, + }) + serverCtx().sync.project.icon(props.project.worktree, store.iconOverride || undefined) + dialog.close() + return + } + + serverCtx().sync.project.meta(props.project.worktree, { + name, + icon: { color: store.color || undefined, override: store.iconOverride || undefined }, + commands: { start: start || undefined }, + }) + dialog.close() + }, + })) + + function submit(event: SubmitEvent) { + event.preventDefault() + if (save.isPending) return + save.mutate() + } + + return { + store, + setStore, + folderName, + defaultName, + save, + submit, + drop, + dragOver, + dragLeave, + inputChange, + iconClick, + close() { + dialog.close() + }, + setIconInput(input: HTMLInputElement) { + iconInput = input + }, + } +} diff --git a/packages/app/src/components/file-tree-v2-model.test.ts b/packages/app/src/components/file-tree-v2-model.test.ts new file mode 100644 index 000000000000..f2a63fe86d3d --- /dev/null +++ b/packages/app/src/components/file-tree-v2-model.test.ts @@ -0,0 +1,74 @@ +import { describe, expect, test } from "bun:test" +import { buildFileTreeV2Model, flattenFileTreeV2, flattenLiveFileTreeV2 } from "./file-tree-v2-model" +import type { FileNode } from "@opencode-ai/sdk/v2" + +describe("buildFileTreeV2Model", () => { + test("builds a sorted tree and flattens expanded directories", () => { + const model = buildFileTreeV2Model(["src/z.ts", "src/lib/b.ts", "src/lib/a.ts", "README.md", "docs/guide.md"]) + + expect(model.total).toBe(8) + expect(flattenFileTreeV2(model, () => true).map((row) => [row.node.path, row.node.type, row.level])).toEqual([ + ["docs", "directory", 0], + ["docs/guide.md", "file", 1], + ["src", "directory", 0], + ["src/lib", "directory", 1], + ["src/lib/a.ts", "file", 2], + ["src/lib/b.ts", "file", 2], + ["src/z.ts", "file", 1], + ["README.md", "file", 0], + ]) + }) + + test("skips children of collapsed directories", () => { + const model = buildFileTreeV2Model(["src/lib/a.ts", "src/z.ts"]) + + expect(flattenFileTreeV2(model, (path) => path !== "src/lib").map((row) => row.node.path)).toEqual([ + "src", + "src/lib", + "src/z.ts", + ]) + }) + + test("normalizes duplicate and messy paths", () => { + const model = buildFileTreeV2Model(["src\\lib\\a.ts", "src/lib/a.ts", "/src//lib/b.ts/"]) + const rows = flattenFileTreeV2(model, () => true) + + expect(rows.map((row) => row.node.path)).toEqual(["src", "src/lib", "src/lib/a.ts", "src/lib/b.ts"]) + expect(rows.find((row) => row.node.path === "src/lib/a.ts")?.node.originalPath).toBe("src\\lib\\a.ts") + }) + + test("handles deeply nested paths", () => { + const file = Array.from({ length: 130 }, (_, index) => `d${index}`).join("/") + "/leaf.ts" + const model = buildFileTreeV2Model([file]) + + expect(flattenFileTreeV2(model, () => true)).toHaveLength(131) + }) +}) + +describe("flattenLiveFileTreeV2", () => { + test("flattens live children using original paths for nested lookups", () => { + const nodes: Record = { + "": [ + { name: "src", path: "src", absolute: "/repo/src", type: "directory", ignored: false }, + { name: "README.md", path: "README.md", absolute: "/repo/README.md", type: "file", ignored: false }, + ], + src: [ + { name: "a.ts", path: "src/a.ts", absolute: "/repo/src/a.ts", type: "file", ignored: false }, + { name: "lib", path: "src/lib", absolute: "/repo/src/lib", type: "directory", ignored: false }, + ], + "src/lib": [{ name: "b.ts", path: "src/lib/b.ts", absolute: "/repo/src/lib/b.ts", type: "file", ignored: false }], + } + + expect( + flattenLiveFileTreeV2( + (path) => nodes[path] ?? [], + (path) => path === "src", + ).map((row) => [row.node.path, row.node.originalPath, row.level]), + ).toEqual([ + ["src", "src", 0], + ["src/a.ts", "src/a.ts", 1], + ["src/lib", "src/lib", 1], + ["README.md", "README.md", 0], + ]) + }) +}) diff --git a/packages/app/src/components/file-tree-v2-model.ts b/packages/app/src/components/file-tree-v2-model.ts new file mode 100644 index 000000000000..27783a9bb16b --- /dev/null +++ b/packages/app/src/components/file-tree-v2-model.ts @@ -0,0 +1,107 @@ +import type { FileNode } from "@opencode-ai/sdk/v2" + +export type FileTreeV2Model = { + children: ReadonlyMap + total: number +} + +export type FileTreeV2Node = FileNode & { originalPath: string } + +export type FileTreeV2Row = { + node: FileTreeV2Node + level: number +} + +export function normalizeFileTreeV2Path(value: string) { + return value + .replaceAll("\\", "/") + .replace(/^\/+|\/+$/g, "") + .replace(/\/{2,}/g, "/") +} + +export function buildFileTreeV2Model(paths: readonly string[]): FileTreeV2Model { + const nodes = new Map() + + paths.forEach((value) => { + const file = normalizeFileTreeV2Path(value) + if (!file) return + + const parts = file.split("/") + parts.forEach((name, index) => { + const path = parts.slice(0, index + 1).join("/") + if (nodes.has(path)) return + nodes.set(path, { + name, + path, + absolute: path, + type: index === parts.length - 1 ? "file" : "directory", + ignored: false, + originalPath: index === parts.length - 1 ? value : path, + }) + }) + }) + + const children = new Map() + nodes.forEach((node) => { + const index = node.path.lastIndexOf("/") + const parent = index === -1 ? "" : node.path.slice(0, index) + const list = children.get(parent) + if (list) list.push(node) + else children.set(parent, [node]) + }) + children.forEach((nodes) => + nodes.sort((a, b) => { + if (a.type !== b.type) return a.type === "directory" ? -1 : 1 + return a.name.localeCompare(b.name) + }), + ) + + return { children, total: nodes.size } +} + +export function flattenFileTreeV2(model: FileTreeV2Model, expanded: (path: string) => boolean) { + const rows: FileTreeV2Row[] = [] + const stack = (model.children.get("") ?? []).toReversed().map((node) => ({ node, level: 0 })) + + while (stack.length > 0) { + const row = stack.pop()! + rows.push(row) + if (row.node.type !== "directory" || !expanded(row.node.path)) continue + const children = model.children.get(row.node.path) ?? [] + for (let index = children.length - 1; index >= 0; index--) { + stack.push({ node: children[index]!, level: row.level + 1 }) + } + } + + return rows +} + +export function flattenLiveFileTreeV2( + children: (path: string) => readonly FileNode[], + expanded: (path: string) => boolean, +) { + const rows: FileTreeV2Row[] = [] + const stack = children("") + .toReversed() + .map((node) => ({ node: toLiveNode(node), level: 0 })) + + while (stack.length > 0) { + const row = stack.pop()! + rows.push(row) + if (row.node.type !== "directory" || !expanded(row.node.path)) continue + const nested = children(row.node.originalPath) + for (let index = nested.length - 1; index >= 0; index--) { + stack.push({ node: toLiveNode(nested[index]!), level: row.level + 1 }) + } + } + + return rows +} + +function toLiveNode(node: FileNode): FileTreeV2Node { + return { + ...node, + path: normalizeFileTreeV2Path(node.path), + originalPath: node.path, + } +} diff --git a/packages/app/src/components/file-tree-v2.tsx b/packages/app/src/components/file-tree-v2.tsx new file mode 100644 index 000000000000..26cf49d411b8 --- /dev/null +++ b/packages/app/src/components/file-tree-v2.tsx @@ -0,0 +1,299 @@ +import { useFile } from "@/context/file" +import { FileIcon } from "@opencode-ai/ui/file-icon" +import "@opencode-ai/ui/v2/file-tree-v2.css" +import { + createEffect, + createMemo, + createSignal, + For, + Show, + splitProps, + type ComponentProps, + type ParentProps, +} from "solid-js" +import { Dynamic } from "solid-js/web" +import type { FileNode } from "@opencode-ai/sdk/v2" +import { Icon } from "@opencode-ai/ui/v2/icon" +import { pathToFileUrl, withFileDragImage, type Kind } from "@/components/file-tree" +import { createVirtualizer, defaultRangeExtractor } from "@tanstack/solid-virtual" +import { + buildFileTreeV2Model, + flattenFileTreeV2, + flattenLiveFileTreeV2, + normalizeFileTreeV2Path, + type FileTreeV2Node, +} from "@/components/file-tree-v2-model" +import { virtualScrollElement } from "@/components/virtual-scroll-element" + +export type { Kind } from "@/components/file-tree" + +const INDENT_STEP = 16 + +function rowPaddingLeft(level: number, type: FileNode["type"]) { + if (type === "directory") return 8 + level * INDENT_STEP + if (level === 0) return 8 + return 8 + level * INDENT_STEP - INDENT_STEP +} + +function guideLineLeft(level: number) { + return rowPaddingLeft(level, "directory") + 8 +} + +export const kindLabel = (kind: Kind) => { + if (kind === "add") return "A" + if (kind === "del") return "D" + return "M" +} + +export const kindChange = (kind: Kind) => { + if (kind === "add") return "added" + if (kind === "del") return "deleted" + return "modified" +} + +const FileTreeNodeV2 = ( + p: ParentProps & + ComponentProps<"div"> & + ComponentProps<"button"> & { + node: FileNode + level: number + active?: string + draggable: boolean + kinds?: ReadonlyMap + as?: "div" | "button" + }, +) => { + const [local, rest] = splitProps(p, [ + "node", + "level", + "active", + "draggable", + "kinds", + "as", + "children", + "class", + "classList", + ]) + const kind = () => local.kinds?.get(normalizeFileTreeV2Path(local.node.path)) + + return ( + { + if (!local.draggable) return + event.dataTransfer?.setData("text/plain", `file:${local.node.path}`) + event.dataTransfer?.setData("text/uri-list", pathToFileUrl(local.node.path)) + if (event.dataTransfer) event.dataTransfer.effectAllowed = "copy" + withFileDragImage(event) + }} + {...rest} + > + {local.children} + {local.node.name} + {(() => { + const value = kind() + if (!value || local.node.type !== "file") return null + return ( + + {kindLabel(value)} + + ) + })()} + + ) +} + +function GuideLines(props: { level: number }) { + return ( + + {(_, index) =>
} + + ) +} + +export default function FileTreeV2(props: { + active?: string + allowed?: readonly string[] + kinds?: ReadonlyMap + draggable?: boolean + onFileClick?: (file: FileNode) => void + onFileDoubleClick?: (file: FileNode) => void +}) { + const file = useFile() + const live = () => props.allowed === undefined + const draggable = () => props.draggable ?? true + const active = () => normalizeFileTreeV2Path(props.active ?? "") + const model = createMemo(() => (live() ? undefined : buildFileTreeV2Model(props.allowed ?? []))) + const expanded = (path: string) => file.tree.state(path)?.expanded ?? !live() + const rows = createMemo(() => { + if (live()) return flattenLiveFileTreeV2((path) => file.tree.children(path), expanded) + return flattenFileTreeV2(model()!, expanded) + }) + const [root, setRoot] = createSignal() + const [focused, setFocused] = createSignal() + const virtualizer = createVirtualizer({ + get count() { + return rows().length + }, + getScrollElement: () => virtualScrollElement(root()), + initialRect: { width: 0, height: 600 }, + estimateSize: () => 28, + gap: 2, + overscan: 10, + get getItemKey() { + const current = rows() + return (index: number) => current[index]?.node.path ?? index + }, + rangeExtractor: (range) => { + const indexes = defaultRangeExtractor(range) + const path = focused() + const index = path ? rows().findIndex((row) => row.node.path === path) : -1 + if (index < 0 || indexes.includes(index)) return indexes + return [...indexes, index].sort((a, b) => a - b) + }, + }) + + createEffect(() => { + if (!live()) return + void file.tree.list("") + }) + + // Only scroll when the active path changes (or first appears in the tree). + // Do not re-scroll when expand/collapse reshuffles `rows()`. + let scrolledActive: string | undefined + createEffect(() => { + const path = active() + if (!path) { + scrolledActive = undefined + return + } + const index = rows().findIndex((row) => row.node.path === path) + if (index < 0) return + if (scrolledActive === path) return + scrolledActive = path + queueMicrotask(() => { + const next = rows().findIndex((row) => row.node.path === path) + if (next < 0) return + if (virtualizer.range && next >= virtualizer.range.startIndex && next <= virtualizer.range.endIndex) return + virtualizer.scrollToIndex(next, { align: "auto" }) + }) + }) + + const selectFile = (node: FileTreeV2Node, action?: (file: FileNode) => void) => { + action?.({ + ...node, + path: node.originalPath, + absolute: node.originalPath, + }) + } + + const toggleDirectory = (path: string, originalPath: string) => { + if (expanded(path)) { + file.tree.collapse(originalPath) + return + } + file.tree.expand(originalPath, live() ? undefined : { list: false }) + } + + const rowByKey = createMemo(() => new Map(rows().map((row) => [row.node.path, row] as const))) + const virtualItemByKey = createMemo( + () => new Map(virtualizer.getVirtualItems().map((item) => [item.key, item] as const)), + ) + const virtualRowKeys = createMemo(() => virtualizer.getVirtualItems().map((item) => item.key)) + + return ( +
+ + {(key) => ( + + {(item) => ( +
+ + {(row) => ( + setFocused(row().node.path)} + onBlur={() => setFocused(undefined)} + onClick={() => selectFile(row().node, props.onFileClick)} + onDblClick={() => selectFile(row().node, props.onFileDoubleClick)} + > + + 0}> +
+ + + + + + + } + > + setFocused(row().node.path)} + onBlur={() => setFocused(undefined)} + aria-expanded={expanded(row().node.path)} + onClick={() => toggleDirectory(row().node.path, row().node.originalPath)} + > + +
+ +
+
+ + )} + +
+ )} +
+ )} + +
+ ) +} diff --git a/packages/app/src/components/file-tree.tsx b/packages/app/src/components/file-tree.tsx index 211ce05ef065..718e2f3493de 100644 --- a/packages/app/src/components/file-tree.tsx +++ b/packages/app/src/components/file-tree.tsx @@ -21,13 +21,13 @@ import type { FileNode } from "@opencode-ai/sdk/v2" const MAX_DEPTH = 128 -function pathToFileUrl(filepath: string): string { +export function pathToFileUrl(filepath: string): string { return `file://${encodeFilePath(filepath)}` } -type Kind = "add" | "del" | "mix" +export type Kind = "add" | "del" | "mix" -type Filter = { +export type Filter = { files: Set dirs: Set } @@ -78,7 +78,7 @@ const kindDotColor = (kind: Kind) => { return "background-color: var(--icon-diff-modified-base)" } -const visibleKind = (node: FileNode, kinds?: ReadonlyMap, marks?: Set) => { +export const visibleKind = (node: FileNode, kinds?: ReadonlyMap, marks?: Set) => { const kind = kinds?.get(node.path) if (!kind) return if (!marks?.has(node.path)) return @@ -99,7 +99,7 @@ const buildDragImage = (target: HTMLElement) => { return image } -const withFileDragImage = (event: DragEvent) => { +export const withFileDragImage = (event: DragEvent) => { const image = buildDragImage(event.currentTarget as HTMLElement) if (!image) return document.body.appendChild(image) @@ -201,6 +201,7 @@ export default function FileTree(props: { kinds?: ReadonlyMap draggable?: boolean onFileClick?: (file: FileNode) => void + onFileDoubleClick?: (file: FileNode) => void _filter?: Filter _marks?: Set @@ -440,6 +441,7 @@ export default function FileTree(props: { active={props.active} draggable={props.draggable} onFileClick={props.onFileClick} + onFileDoubleClick={props.onFileDoubleClick} _filter={filter()} _marks={marks()} _deeps={deeps()} @@ -462,6 +464,7 @@ export default function FileTree(props: { as="button" type="button" onClick={() => props.onFileClick?.(node)} + onDblClick={() => props.onFileDoubleClick?.(node)} >
diff --git a/packages/app/src/components/help-button.tsx b/packages/app/src/components/help-button.tsx index 9109418fcf59..18dd727084e4 100644 --- a/packages/app/src/components/help-button.tsx +++ b/packages/app/src/components/help-button.tsx @@ -1,54 +1,148 @@ -import { Icon } from "@opencode-ai/ui/v2/icon" -import { Popover } from "@opencode-ai/ui/popover" +import { Icon as IconV2 } from "@opencode-ai/ui/v2/icon" +import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2" import { createSignal, Show } from "solid-js" -import { createStore } from "solid-js/store" +import { Drawer, DrawerClose, DrawerContent } from "@/components/ui/drawer" +import { usePlatform } from "@/context/platform" +import { useSettings } from "@/context/settings" +import introducingTabsVideo from "@/assets/help/introducing-tabs.mp4" +import homeImage from "@/assets/help/home.png" +import tabsImage from "@/assets/help/tabs.png" -export function HelpButton() { - if (import.meta.env.VITE_OPENCODE_CHANNEL !== "dev") return null +// TODO: wire to changelog / seen-state when available +const showPopover = () => true - const [state, setState] = /* persisted(Persist.global("help-button"), */ createStore({ dismissed: false }) /* ) */ - const [shown, setShown] = createSignal(false) +// can remove this after the tabs rollout has been out for a while +export function TabsInfoPopup() { + const settings = useSettings() + const platform = usePlatform() + const [drawerOpen, setDrawerOpen] = createSignal(false) + const windows = () => platform.platform === "desktop" && platform.os === "windows" return ( - -