From 92c4dfd3dd032f7b9662b81007ccfacc20375d18 Mon Sep 17 00:00:00 2001 From: Offending Commit Date: Fri, 24 Apr 2026 16:52:40 -0500 Subject: [PATCH] feat: restructure as pnpm monorepo with Tauri desktop shell - Migrate to packages/web + packages/desktop workspace layout via git mv - Add Tauri v2 desktop shell with @tauri-apps/plugin-http for CORS bypass - Configure Turborepo with package-level dependsOn build graph - Add semantic-release with exec plugin for GHA output and disabled PR comments - Fix http:default capability scope to allow all HTTP/HTTPS origins - Add Vite Tauri integration (clearScreen, TAURI_DEV_HOST, target, envPrefix) - Add semantic-release.yml and release.yml GitHub Actions workflows - Fix all Biome lint errors (noArrayIndexKey, noNonNullAssertion, button types) --- .github/workflows/ci.yml | 15 +- .github/workflows/release.yml | 36 + .github/workflows/semantic-release.yml | 38 + .gitignore | 4 + .releaserc.json | 22 + CLAUDE.md | 4 +- README.md | 8 +- biome.json | 3 + docs/architecture.md | 2 +- package.json | 66 +- packages/desktop/package.json | 15 + packages/desktop/src-tauri/Cargo.lock | 5578 +++++++++++++++++ packages/desktop/src-tauri/Cargo.toml | 18 + packages/desktop/src-tauri/build.rs | 3 + .../src-tauri/capabilities/default.json | 17 + packages/desktop/src-tauri/icons/128x128.png | Bin 0 -> 300 bytes .../desktop/src-tauri/icons/128x128@2x.png | Bin 0 -> 665 bytes packages/desktop/src-tauri/icons/32x32.png | Bin 0 -> 105 bytes packages/desktop/src-tauri/icons/64x64.png | Bin 0 -> 161 bytes .../src-tauri/icons/Square107x107Logo.png | Bin 0 -> 240 bytes .../src-tauri/icons/Square142x142Logo.png | Bin 0 -> 329 bytes .../src-tauri/icons/Square150x150Logo.png | Bin 0 -> 348 bytes .../src-tauri/icons/Square284x284Logo.png | Bin 0 -> 762 bytes .../src-tauri/icons/Square30x30Logo.png | Bin 0 -> 104 bytes .../src-tauri/icons/Square310x310Logo.png | Bin 0 -> 853 bytes .../src-tauri/icons/Square44x44Logo.png | Bin 0 -> 122 bytes .../src-tauri/icons/Square71x71Logo.png | Bin 0 -> 172 bytes .../src-tauri/icons/Square89x89Logo.png | Bin 0 -> 200 bytes .../desktop/src-tauri/icons/StoreLogo.png | Bin 0 -> 131 bytes .../android/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../icons/android/mipmap-hdpi/ic_launcher.png | Bin 0 -> 176 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 375 bytes .../android/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 281 bytes .../icons/android/mipmap-mdpi/ic_launcher.png | Bin 0 -> 175 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 241 bytes .../android/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 277 bytes .../android/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 284 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 516 bytes .../mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 488 bytes .../android/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 428 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 902 bytes .../mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 717 bytes .../android/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 566 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 1357 bytes .../mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 904 bytes .../android/values/ic_launcher_background.xml | 4 + packages/desktop/src-tauri/icons/icon.icns | Bin 0 -> 12668 bytes packages/desktop/src-tauri/icons/icon.ico | Bin 0 -> 1982 bytes packages/desktop/src-tauri/icons/icon.png | Bin 0 -> 1816 bytes .../src-tauri/icons/ios/AppIcon-20x20@1x.png | Bin 0 -> 91 bytes .../icons/ios/AppIcon-20x20@2x-1.png | Bin 0 -> 117 bytes .../src-tauri/icons/ios/AppIcon-20x20@2x.png | Bin 0 -> 117 bytes .../src-tauri/icons/ios/AppIcon-20x20@3x.png | Bin 0 -> 147 bytes .../src-tauri/icons/ios/AppIcon-29x29@1x.png | Bin 0 -> 105 bytes .../icons/ios/AppIcon-29x29@2x-1.png | Bin 0 -> 143 bytes .../src-tauri/icons/ios/AppIcon-29x29@2x.png | Bin 0 -> 143 bytes .../src-tauri/icons/ios/AppIcon-29x29@3x.png | Bin 0 -> 194 bytes .../src-tauri/icons/ios/AppIcon-40x40@1x.png | Bin 0 -> 117 bytes .../icons/ios/AppIcon-40x40@2x-1.png | Bin 0 -> 186 bytes .../src-tauri/icons/ios/AppIcon-40x40@2x.png | Bin 0 -> 186 bytes .../src-tauri/icons/ios/AppIcon-40x40@3x.png | Bin 0 -> 264 bytes .../src-tauri/icons/ios/AppIcon-512@2x.png | Bin 0 -> 5696 bytes .../src-tauri/icons/ios/AppIcon-60x60@2x.png | Bin 0 -> 264 bytes .../src-tauri/icons/ios/AppIcon-60x60@3x.png | Bin 0 -> 420 bytes .../src-tauri/icons/ios/AppIcon-76x76@1x.png | Bin 0 -> 180 bytes .../src-tauri/icons/ios/AppIcon-76x76@2x.png | Bin 0 -> 353 bytes .../icons/ios/AppIcon-83.5x83.5@2x.png | Bin 0 -> 389 bytes packages/desktop/src-tauri/src/lib.rs | 8 + packages/desktop/src-tauri/src/main.rs | 6 + packages/desktop/src-tauri/tauri.conf.json | 35 + index.html => packages/web/index.html | 0 openapi.json => packages/web/openapi.json | 0 packages/web/package.json | 60 + {public => packages/web/public}/favicon.svg | 0 {public => packages/web/public}/icons.svg | 0 {src => packages/web/src}/api/client.ts | 7 +- {src => packages/web/src}/api/keys.ts | 15 +- {src => packages/web/src}/api/queries.ts | 177 +- packages/web/src/api/schema.d.ts | 3324 ++++++++++ .../web/src}/components/chat/ChatPage.tsx | 66 +- .../conclusions/ConclusionBrowser.tsx | 109 +- .../src}/components/dashboard/Dashboard.tsx | 56 +- .../web/src}/components/layout/Sidebar.tsx | 20 +- .../web/src/components/peers/PeerDetail.tsx | 423 ++ .../web/src/components/peers/PeerList.tsx | 329 + .../components/sessions/SessionDetail.tsx | 36 +- .../src}/components/sessions/SessionList.tsx | 75 +- .../src}/components/settings/SettingsForm.tsx | 64 +- packages/web/src/components/shared/Badge.tsx | 43 + .../web/src}/components/shared/Card.tsx | 0 .../src}/components/shared/ConfirmDialog.tsx | 0 .../web/src}/components/shared/EmptyState.tsx | 10 +- .../web/src}/components/shared/ErrorAlert.tsx | 10 +- .../web/src}/components/shared/FormModal.tsx | 7 +- .../src}/components/shared/InlineEditor.tsx | 17 +- .../web/src}/components/shared/JsonViewer.tsx | 12 +- .../src}/components/shared/LoadingSpinner.tsx | 11 +- .../components/shared/MarkdownRenderer.tsx | 549 ++ .../web/src}/components/shared/Pagination.tsx | 4 +- .../src}/components/shared/PeerCardViewer.tsx | 19 +- .../web/src/components/shared/SortControl.tsx | 62 + .../src/components/shared/TimestampChip.tsx | 65 + .../web/src}/components/ui/badge.tsx | 0 .../web/src}/components/ui/button.tsx | 6 +- .../web/src}/components/ui/card.tsx | 0 .../web/src}/components/ui/collapsible.tsx | 0 .../web/src}/components/ui/dialog.tsx | 10 +- .../web/src}/components/ui/input.tsx | 0 .../web/src}/components/ui/label.tsx | 0 .../web/src}/components/ui/separator.tsx | 0 .../web/src}/components/ui/table.tsx | 6 +- .../web/src}/components/ui/tooltip.tsx | 0 .../web/src}/components/ui/typography.tsx | 0 .../workspaces/ScheduleDreamModal.tsx | 46 +- .../components/workspaces/WebhookManager.tsx | 63 +- .../components/workspaces/WorkspaceDetail.tsx | 27 +- .../components/workspaces/WorkspaceList.tsx | 91 +- {src => packages/web/src}/hooks/useTheme.ts | 4 +- packages/web/src/index.css | 196 + {src => packages/web/src}/lib/config.ts | 12 +- {src => packages/web/src}/lib/constants.ts | 15 + packages/web/src/lib/http.ts | 12 + {src => packages/web/src}/lib/theme.ts | 2 +- {src => packages/web/src}/lib/utils.ts | 0 {src => packages/web/src}/main.tsx | 4 +- {src => packages/web/src}/routeTree.gen.ts | 0 {src => packages/web/src}/routes/__root.tsx | 11 +- {src => packages/web/src}/routes/index.tsx | 2 +- {src => packages/web/src}/routes/settings.tsx | 4 +- .../web/src}/routes/workspaces.tsx | 2 +- .../src}/routes/workspaces_.$workspaceId.tsx | 2 +- .../workspaces_.$workspaceId_.conclusions.tsx | 2 +- .../workspaces_.$workspaceId_.peers.tsx | 2 +- ...rkspaces_.$workspaceId_.peers_.$peerId.tsx | 2 +- ...es_.$workspaceId_.peers_.$peerId_.chat.tsx | 2 +- .../workspaces_.$workspaceId_.sessions.tsx | 2 +- ...es_.$workspaceId_.sessions_.$sessionId.tsx | 2 +- .../workspaces_.$workspaceId_.webhooks.tsx | 2 +- .../web/tsconfig.app.json | 0 tsconfig.json => packages/web/tsconfig.json | 0 .../web/tsconfig.node.json | 0 vite.config.ts => packages/web/vite.config.ts | 20 +- pnpm-lock.yaml | 2624 +++++++- pnpm-workspace.yaml | 2 + src/api/schema.d.ts | 3324 ---------- src/components/peers/PeerDetail.tsx | 323 - src/components/peers/PeerList.tsx | 146 - src/components/shared/Badge.tsx | 23 - src/components/shared/MarkdownRenderer.tsx | 149 - src/components/shared/TimestampChip.tsx | 62 - src/index.css | 180 - turbo.json | 23 + 152 files changed, 14088 insertions(+), 4774 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/semantic-release.yml create mode 100644 .releaserc.json create mode 100644 packages/desktop/package.json create mode 100644 packages/desktop/src-tauri/Cargo.lock create mode 100644 packages/desktop/src-tauri/Cargo.toml create mode 100644 packages/desktop/src-tauri/build.rs create mode 100644 packages/desktop/src-tauri/capabilities/default.json create mode 100644 packages/desktop/src-tauri/icons/128x128.png create mode 100644 packages/desktop/src-tauri/icons/128x128@2x.png create mode 100644 packages/desktop/src-tauri/icons/32x32.png create mode 100644 packages/desktop/src-tauri/icons/64x64.png create mode 100644 packages/desktop/src-tauri/icons/Square107x107Logo.png create mode 100644 packages/desktop/src-tauri/icons/Square142x142Logo.png create mode 100644 packages/desktop/src-tauri/icons/Square150x150Logo.png create mode 100644 packages/desktop/src-tauri/icons/Square284x284Logo.png create mode 100644 packages/desktop/src-tauri/icons/Square30x30Logo.png create mode 100644 packages/desktop/src-tauri/icons/Square310x310Logo.png create mode 100644 packages/desktop/src-tauri/icons/Square44x44Logo.png create mode 100644 packages/desktop/src-tauri/icons/Square71x71Logo.png create mode 100644 packages/desktop/src-tauri/icons/Square89x89Logo.png create mode 100644 packages/desktop/src-tauri/icons/StoreLogo.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 packages/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 packages/desktop/src-tauri/icons/android/values/ic_launcher_background.xml create mode 100644 packages/desktop/src-tauri/icons/icon.icns create mode 100644 packages/desktop/src-tauri/icons/icon.ico create mode 100644 packages/desktop/src-tauri/icons/icon.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-20x20@1x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-20x20@2x-1.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-20x20@2x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-20x20@3x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-29x29@1x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-29x29@2x-1.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-29x29@2x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-29x29@3x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-40x40@1x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-40x40@2x-1.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-40x40@2x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-40x40@3x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-512@2x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-60x60@2x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-60x60@3x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-76x76@1x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-76x76@2x.png create mode 100644 packages/desktop/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png create mode 100644 packages/desktop/src-tauri/src/lib.rs create mode 100644 packages/desktop/src-tauri/src/main.rs create mode 100644 packages/desktop/src-tauri/tauri.conf.json rename index.html => packages/web/index.html (100%) rename openapi.json => packages/web/openapi.json (100%) create mode 100644 packages/web/package.json rename {public => packages/web/public}/favicon.svg (100%) rename {public => packages/web/public}/icons.svg (100%) rename {src => packages/web/src}/api/client.ts (75%) rename {src => packages/web/src}/api/keys.ts (78%) rename {src => packages/web/src}/api/queries.ts (87%) create mode 100644 packages/web/src/api/schema.d.ts rename {src => packages/web/src}/components/chat/ChatPage.tsx (76%) rename {src => packages/web/src}/components/conclusions/ConclusionBrowser.tsx (81%) rename {src => packages/web/src}/components/dashboard/Dashboard.tsx (86%) rename {src => packages/web/src}/components/layout/Sidebar.tsx (90%) create mode 100644 packages/web/src/components/peers/PeerDetail.tsx create mode 100644 packages/web/src/components/peers/PeerList.tsx rename {src => packages/web/src}/components/sessions/SessionDetail.tsx (95%) rename {src => packages/web/src}/components/sessions/SessionList.tsx (70%) rename {src => packages/web/src}/components/settings/SettingsForm.tsx (84%) create mode 100644 packages/web/src/components/shared/Badge.tsx rename {src => packages/web/src}/components/shared/Card.tsx (100%) rename {src => packages/web/src}/components/shared/ConfirmDialog.tsx (100%) rename {src => packages/web/src}/components/shared/EmptyState.tsx (82%) rename {src => packages/web/src}/components/shared/ErrorAlert.tsx (52%) rename {src => packages/web/src}/components/shared/FormModal.tsx (86%) rename {src => packages/web/src}/components/shared/InlineEditor.tsx (87%) rename {src => packages/web/src}/components/shared/JsonViewer.tsx (72%) rename {src => packages/web/src}/components/shared/LoadingSpinner.tsx (63%) create mode 100644 packages/web/src/components/shared/MarkdownRenderer.tsx rename {src => packages/web/src}/components/shared/Pagination.tsx (90%) rename {src => packages/web/src}/components/shared/PeerCardViewer.tsx (94%) create mode 100644 packages/web/src/components/shared/SortControl.tsx create mode 100644 packages/web/src/components/shared/TimestampChip.tsx rename {src => packages/web/src}/components/ui/badge.tsx (100%) rename {src => packages/web/src}/components/ui/button.tsx (93%) rename {src => packages/web/src}/components/ui/card.tsx (100%) rename {src => packages/web/src}/components/ui/collapsible.tsx (100%) rename {src => packages/web/src}/components/ui/dialog.tsx (95%) rename {src => packages/web/src}/components/ui/input.tsx (100%) rename {src => packages/web/src}/components/ui/label.tsx (100%) rename {src => packages/web/src}/components/ui/separator.tsx (100%) rename {src => packages/web/src}/components/ui/table.tsx (95%) rename {src => packages/web/src}/components/ui/tooltip.tsx (100%) rename {src => packages/web/src}/components/ui/typography.tsx (100%) rename {src => packages/web/src}/components/workspaces/ScheduleDreamModal.tsx (79%) rename {src => packages/web/src}/components/workspaces/WebhookManager.tsx (85%) rename {src => packages/web/src}/components/workspaces/WorkspaceDetail.tsx (95%) rename {src => packages/web/src}/components/workspaces/WorkspaceList.tsx (63%) rename {src => packages/web/src}/hooks/useTheme.ts (71%) create mode 100644 packages/web/src/index.css rename {src => packages/web/src}/lib/config.ts (84%) rename {src => packages/web/src}/lib/constants.ts (62%) create mode 100644 packages/web/src/lib/http.ts rename {src => packages/web/src}/lib/theme.ts (92%) rename {src => packages/web/src}/lib/utils.ts (100%) rename {src => packages/web/src}/main.tsx (92%) rename {src => packages/web/src}/routeTree.gen.ts (100%) rename {src => packages/web/src}/routes/__root.tsx (84%) rename {src => packages/web/src}/routes/index.tsx (100%) rename {src => packages/web/src}/routes/settings.tsx (95%) rename {src => packages/web/src}/routes/workspaces.tsx (100%) rename {src => packages/web/src}/routes/workspaces_.$workspaceId.tsx (100%) rename {src => packages/web/src}/routes/workspaces_.$workspaceId_.conclusions.tsx (100%) rename {src => packages/web/src}/routes/workspaces_.$workspaceId_.peers.tsx (100%) rename {src => packages/web/src}/routes/workspaces_.$workspaceId_.peers_.$peerId.tsx (100%) rename {src => packages/web/src}/routes/workspaces_.$workspaceId_.peers_.$peerId_.chat.tsx (100%) rename {src => packages/web/src}/routes/workspaces_.$workspaceId_.sessions.tsx (100%) rename {src => packages/web/src}/routes/workspaces_.$workspaceId_.sessions_.$sessionId.tsx (100%) rename {src => packages/web/src}/routes/workspaces_.$workspaceId_.webhooks.tsx (100%) rename tsconfig.app.json => packages/web/tsconfig.app.json (100%) rename tsconfig.json => packages/web/tsconfig.json (100%) rename tsconfig.node.json => packages/web/tsconfig.node.json (100%) rename vite.config.ts => packages/web/vite.config.ts (52%) create mode 100644 pnpm-workspace.yaml delete mode 100644 src/api/schema.d.ts delete mode 100644 src/components/peers/PeerDetail.tsx delete mode 100644 src/components/peers/PeerList.tsx delete mode 100644 src/components/shared/Badge.tsx delete mode 100644 src/components/shared/MarkdownRenderer.tsx delete mode 100644 src/components/shared/TimestampChip.tsx delete mode 100644 src/index.css create mode 100644 turbo.json diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8b34c4..7f7fa21 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,9 +8,8 @@ on: jobs: check: - name: Lint, type-check & test + name: Lint, type-check, test & build runs-on: ubuntu-latest - steps: - uses: actions/checkout@v4 @@ -25,14 +24,4 @@ jobs: - run: pnpm install --frozen-lockfile - - run: pnpm lint - name: Biome lint - - - run: pnpm exec tsc --noEmit -p tsconfig.app.json - name: Type check - - - run: pnpm test - name: Tests - - - run: pnpm build - name: Production build + - run: pnpm turbo lint typecheck test build --filter=@openconcho/web diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..d942f2d --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,36 @@ +name: Release + +on: + push: + tags: + - 'v*' + +jobs: + release-macos: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + with: + version: 9 + + - uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'pnpm' + + - uses: dtolnay/rust-toolchain@stable + + - name: Install frontend dependencies + run: pnpm install --frozen-lockfile + + - uses: tauri-apps/tauri-action@v0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tagName: ${{ github.ref_name }} + releaseName: 'OpenConcho ${{ github.ref_name }}' + releaseBody: 'See assets below to download and install.' + releaseDraft: false + prerelease: false diff --git a/.github/workflows/semantic-release.yml b/.github/workflows/semantic-release.yml new file mode 100644 index 0000000..163f52f --- /dev/null +++ b/.github/workflows/semantic-release.yml @@ -0,0 +1,38 @@ +name: Semantic Release + +on: + push: + branches: [main] + +jobs: + release: + name: Release + runs-on: ubuntu-latest + permissions: + contents: write + issues: write + pull-requests: write + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GH_TOKEN }} + + - uses: pnpm/action-setup@v4 + with: + version: 9 + + - uses: actions/setup-node@v4 + with: + node-version: 20 + cache: pnpm + + - run: pnpm install --frozen-lockfile + + - run: pnpm exec semantic-release + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + GIT_AUTHOR_NAME: github-actions[bot] + GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com + GIT_COMMITTER_NAME: github-actions[bot] + GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com diff --git a/.gitignore b/.gitignore index da6757b..698f67f 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,7 @@ dist-ssr # TypeScript build info *.tsbuildinfo .tanstack/ + +# Tauri +packages/desktop/src-tauri/target/ +packages/desktop/src-tauri/gen/ diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 0000000..9621562 --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,22 @@ +{ + "branches": ["main"], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + ["@semantic-release/changelog", { + "changelogFile": "CHANGELOG.md" + }], + ["@semantic-release/git", { + "assets": ["CHANGELOG.md", "package.json", "packages/*/package.json"], + "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" + }], + ["@semantic-release/exec", { + "publishCmd": "echo new_release_published=true >> $GITHUB_OUTPUT && echo new_release_version=${nextRelease.version} >> $GITHUB_OUTPUT" + }], + ["@semantic-release/github", { + "assets": [], + "successComment": false, + "failComment": false + }] + ] +} diff --git a/CLAUDE.md b/CLAUDE.md index ed49eb3..f6c3d60 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,4 +1,4 @@ -# honcho-ui +# openconcho Frontend UI for self-hosted Honcho instances — browse memories, peers, sessions, conclusions, and chat with memory context. @@ -40,7 +40,7 @@ Read `docs/architecture.md` for component overview, data flow, and design decisi ## Key Constraints -- **No hardcoded URLs** — all connection config lives in `localStorage` under `honcho-ui:config` +- **No hardcoded URLs** — all connection config lives in `localStorage` under `openconcho:config` - **TanStack Router flat-route params** — always cast `params` as `as never` at `navigate()` and `` callsites - **`framer-motion` Variants typing** — import `type Variants` and annotate objects; never use `as const` on variant objects - **Auth is optional** — token header only sent when non-empty; `checkConnection()` detects if auth is required diff --git a/README.md b/README.md index e36a9ad..aa34410 100644 --- a/README.md +++ b/README.md @@ -28,8 +28,8 @@ A clean, fast frontend for browsing and chatting with a self-hosted [Honcho](htt ### Install & run ```bash -git clone https://github.com/offendingcommit/honcho-ui.git -cd honcho-ui +git clone https://github.com/offendingcommit/openconcho.git +cd openconcho pnpm install pnpm dev ``` @@ -84,8 +84,8 @@ pnpm generate:api ## Privacy -- Base URL and token are stored in `localStorage` under `honcho-ui:config` -- Theme preference is stored in `localStorage` under `honcho-ui:theme` +- Base URL and token are stored in `localStorage` under `openconcho:config` +- Theme preference is stored in `localStorage` under `openconcho:theme` - No telemetry, no analytics, no external requests beyond your configured Honcho instance ## Contributing diff --git a/biome.json b/biome.json index 434c0d5..5a1aa9a 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,8 @@ { "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json", + "files": { + "ignore": ["src/routeTree.gen.ts", "src/api/schema.d.ts"] + }, "vcs": { "enabled": true, "clientKind": "git", diff --git a/docs/architecture.md b/docs/architecture.md index 97d4f8d..b517691 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,4 +1,4 @@ -# Architecture: honcho-ui +# Architecture: openconcho ## Overview diff --git a/package.json b/package.json index f932c1b..4377e32 100644 --- a/package.json +++ b/package.json @@ -1,60 +1,24 @@ { - "name": "honcho-ui", + "name": "openconcho", "private": true, "version": "0.1.0", - "type": "module", + "packageManager": "pnpm@10.33.2", "scripts": { - "dev": "vite", - "build": "tsc -b && vite build", - "preview": "vite preview", - "lint": "biome check src/", - "lint:fix": "biome check --write src/", - "format": "biome format --write src/", - "test": "vitest run", - "test:watch": "vitest", - "generate:api": "openapi-typescript openapi.json -o src/api/schema.d.ts" - }, - "dependencies": { - "@fontsource/dm-mono": "^5.2.7", - "@fontsource/dm-sans": "^5.2.8", - "@radix-ui/react-collapsible": "^1.1.12", - "@radix-ui/react-dialog": "^1.1.15", - "@radix-ui/react-label": "^2.1.8", - "@radix-ui/react-separator": "^1.1.8", - "@radix-ui/react-slot": "^1.2.4", - "@radix-ui/react-tooltip": "^1.2.8", - "@tailwindcss/vite": "^4.2.4", - "@tanstack/react-query": "^5.74.4", - "@tanstack/react-router": "^1.120.3", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "framer-motion": "^12.38.0", - "lucide-react": "^1.11.0", - "luxon": "^3.7.2", - "openapi-fetch": "^0.13.5", - "react": "^19.2.5", - "react-dom": "^19.2.5", - "react-markdown": "^10.1.0", - "remark-gfm": "^4.0.1", - "tailwind-merge": "^3.5.0", - "tailwindcss": "^4.2.4", - "zod": "^3.24.3" + "dev": "pnpm --filter @openconcho/desktop dev", + "build": "turbo run build", + "lint": "turbo run lint", + "test": "turbo run test", + "typecheck": "turbo run typecheck" }, "devDependencies": { "@biomejs/biome": "^1.9.4", - "@tanstack/router-plugin": "^1.120.3", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.3.0", - "@testing-library/user-event": "^14.6.1", - "@types/luxon": "^3.7.1", - "@types/node": "^25.6.0", - "@types/react": "^19.2.14", - "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^6.0.1", - "jsdom": "^26.1.0", - "openapi-typescript": "^7.8.0", - "typescript": "~6.0.2", - "vite": "^8.0.10", - "vitest": "^3.2.3" + "@semantic-release/changelog": "^6.0.0", + "@semantic-release/commit-analyzer": "^13.0.0", + "@semantic-release/exec": "^7.1.0", + "@semantic-release/git": "^10.0.0", + "@semantic-release/github": "^10.0.0", + "@semantic-release/release-notes-generator": "^14.0.0", + "semantic-release": "^24.0.0", + "turbo": "^2" } } diff --git a/packages/desktop/package.json b/packages/desktop/package.json new file mode 100644 index 0000000..7572700 --- /dev/null +++ b/packages/desktop/package.json @@ -0,0 +1,15 @@ +{ + "name": "@openconcho/desktop", + "private": true, + "scripts": { + "dev": "tauri dev", + "build": "tauri build", + "tauri": "tauri" + }, + "dependencies": { + "@openconcho/web": "workspace:*" + }, + "devDependencies": { + "@tauri-apps/cli": "^2" + } +} diff --git a/packages/desktop/src-tauri/Cargo.lock b/packages/desktop/src-tauri/Cargo.lock new file mode 100644 index 0000000..c077c91 --- /dev/null +++ b/packages/desktop/src-tauri/Cargo.lock @@ -0,0 +1,5578 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + +[[package]] +name = "aho-corasick" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "atk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241b621213072e993be4f6f3a9e4b45f65b7e6faad43001be957184b7bb1824b" +dependencies = [ + "atk-sys", + "glib", + "libc", +] + +[[package]] +name = "atk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e48b684b0ca77d2bbadeef17424c2ea3c897d44d566a1617e7e8f30614d086" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base64" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bit-set" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08807e080ed7f9d5433fa9b275196cfc35414f66a0c79d864dc51a0d825231a3" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4512299f36f043ab09a583e57bceb5a5aab7a73db1805848e8fef3c9e8c78b3" +dependencies = [ + "serde_core", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "block2" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdeb9d870516001442e364c5220d3574d2da8dc765554b4a617230d33fa58ef5" +dependencies = [ + "objc2", +] + +[[package]] +name = "brotli" +version = "8.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "bytemuck" +version = "1.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "bytes" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +dependencies = [ + "serde", +] + +[[package]] +name = "cairo-rs" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +dependencies = [ + "bitflags 2.11.1", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror 1.0.69", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "camino" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" +dependencies = [ + "serde_core", +] + +[[package]] +name = "cargo-platform" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e35af189006b9c0f00a064685c727031e3ed2d8020f7ba284d78cc2671bd36ea" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.19.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" +dependencies = [ + "camino", + "cargo-platform", + "semver", + "serde", + "serde_json", + "thiserror 2.0.18", +] + +[[package]] +name = "cargo_toml" +version = "0.22.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374b7c592d9c00c1f4972ea58390ac6b18cbb6ab79011f3bdc90a0b82ca06b77" +dependencies = [ + "serde", + "toml 0.9.12+spec-1.1.0", +] + +[[package]] +name = "cc" +version = "1.2.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d" +dependencies = [ + "find-msvc-tools", + "shlex", +] + +[[package]] +name = "cesu8" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" + +[[package]] +name = "cfb" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +dependencies = [ + "byteorder", + "fnv", + "uuid", +] + +[[package]] +name = "cfg-expr" +version = "0.15.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" +dependencies = [ + "smallvec", + "target-lexicon", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" + +[[package]] +name = "chrono" +version = "0.4.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +dependencies = [ + "iana-time-zone", + "num-traits", + "serde", + "windows-link 0.2.1", +] + +[[package]] +name = "combine" +version = "4.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +dependencies = [ + "bytes", + "memchr", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "cookie" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ddef33a339a91ea89fb53151bd0a4689cfce27055c291dfa69945475d22c747" +dependencies = [ + "percent-encoding", + "time", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15b2c103cf610ec6cae3da84a766285b42fd16aad564758459e6ecf128c75206" +dependencies = [ + "cookie", + "document-features", + "idna", + "log", + "publicsuffix", + "serde", + "serde_derive", + "serde_json", + "time", + "url", +] + +[[package]] +name = "core-foundation" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + +[[package]] +name = "core-graphics" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "064badf302c3194842cf2c5d61f56cc88e54a759313879cdf03abdd27d0c3b97" +dependencies = [ + "bitflags 2.11.1", + "core-foundation 0.10.1", + "core-graphics-types", + "foreign-types", + "libc", +] + +[[package]] +name = "core-graphics-types" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d44a101f213f6c4cdc1853d4b78aef6db6bdfa3468798cc1d9912f4735013eb" +dependencies = [ + "bitflags 2.11.1", + "core-foundation 0.10.1", + "libc", +] + +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" + +[[package]] +name = "crypto-common" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c8292055d1c1df0cce5d180393dc8cce0abec0a7102adb6c7b1eef6016d60a" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "cssparser" +version = "0.29.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93d03419cb5950ccfd3daf3ff1c7a36ace64609a1a8746d493df1ca0afde0fa" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "matches", + "phf 0.10.1", + "proc-macro2", + "quote", + "smallvec", + "syn 1.0.109", +] + +[[package]] +name = "cssparser" +version = "0.36.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dae61cf9c0abb83bd659dab65b7e4e38d8236824c85f0f804f173567bda257d2" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "phf 0.13.1", + "smallvec", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "ctor" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a2785755761f3ddc1492979ce1e48d2c00d09311c39e4466429188f3dd6501" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "darling" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 2.0.117", +] + +[[package]] +name = "darling_macro" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +dependencies = [ + "darling_core", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "data-url" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" + +[[package]] +name = "deranged" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" +dependencies = [ + "powerfmt", + "serde_core", +] + +[[package]] +name = "derive_more" +version = "0.99.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" +dependencies = [ + "derive_more-impl", +] + +[[package]] +name = "derive_more-impl" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.117", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3e8aa94d75141228480295a7d0e7feb620b1a5ad9f12bc40be62411e38cce4e" +dependencies = [ + "dirs-sys", +] + +[[package]] +name = "dirs-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e01a3366d27ee9890022452ee61b2b63a67e6f13f58900b651ff5665f0bb1fab" +dependencies = [ + "libc", + "option-ext", + "redox_users", + "windows-sys 0.61.2", +] + +[[package]] +name = "dispatch2" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" +dependencies = [ + "bitflags 2.11.1", + "block2", + "libc", + "objc2", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "dlopen2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e2c5bd4158e66d1e215c49b837e11d62f3267b30c92f1d171c4d3105e3dc4d4" +dependencies = [ + "dlopen2_derive", + "libc", + "once_cell", + "winapi", +] + +[[package]] +name = "dlopen2_derive" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fbbb781877580993a8707ec48672673ec7b81eeba04cfd2310bd28c08e47c8f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "document-features" +version = "0.2.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4b8a88685455ed29a21542a33abd9cb6510b6b129abadabdcef0f4c55bc8f61" +dependencies = [ + "litrs", +] + +[[package]] +name = "dom_query" +version = "0.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521e380c0c8afb8d9a1e83a1822ee03556fc3e3e7dbc1fd30be14e37f9cb3f89" +dependencies = [ + "bit-set", + "cssparser 0.36.0", + "foldhash 0.2.0", + "html5ever 0.38.0", + "precomputed-hash", + "selectors 0.36.1", + "tendril 0.5.0", +] + +[[package]] +name = "dpi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" +dependencies = [ + "serde", +] + +[[package]] +name = "dtoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c3cf4824e2d5f025c7b531afcb2325364084a16806f6d47fbc1f5fbd9960590" + +[[package]] +name = "dtoa-short" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" +dependencies = [ + "dtoa", +] + +[[package]] +name = "dunce" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" + +[[package]] +name = "dyn-clone" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" + +[[package]] +name = "embed-resource" +version = "3.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63a1d0de4f2249aa0ff5884d7080814f446bb241a559af6c170a41e878ed2d45" +dependencies = [ + "cc", + "memchr", + "rustc_version", + "toml 0.9.12+spec-1.1.0", + "vswhom", + "winreg", +] + +[[package]] +name = "embed_plist" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "erased-serde" +version = "0.4.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2add8a07dd6a8d93ff627029c51de145e12686fbc36ecb298ac22e74cf02dec" +dependencies = [ + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" + +[[package]] +name = "fdeflate" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e6853b52649d4ac5c0bd02320cddc5ba956bdb407c4b75a2c6b75bf51500f8c" +dependencies = [ + "simd-adler32", +] + +[[package]] +name = "field-offset" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" +dependencies = [ + "memoffset", + "rustc_version", +] + +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "foldhash" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" + +[[package]] +name = "foreign-types" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +dependencies = [ + "foreign-types-macros", + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-macros" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "foreign-types-shared" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" + +[[package]] +name = "form_urlencoded" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" + +[[package]] +name = "futures-executor" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" + +[[package]] +name = "futures-macro" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "futures-sink" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" + +[[package]] +name = "futures-task" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" + +[[package]] +name = "futures-util" +version = "0.3.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +dependencies = [ + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9f245958c627ac99d8e529166f9823fb3b838d1d41fd2b297af3075093c2691" +dependencies = [ + "cairo-rs", + "gdk-pixbuf", + "gdk-sys", + "gio", + "glib", + "libc", + "pango", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +dependencies = [ + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", + "once_cell", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gdk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c2d13f38594ac1e66619e188c6d5a1adb98d11b2fcf7894fc416ad76aa2f3f7" +dependencies = [ + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkwayland-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "140071d506d223f7572b9f09b5e155afbd77428cd5cc7af8f2694c41d98dfe69" +dependencies = [ + "gdk-sys", + "glib-sys", + "gobject-sys", + "libc", + "pkg-config", + "system-deps", +] + +[[package]] +name = "gdkx11" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3caa00e14351bebbc8183b3c36690327eb77c49abc2268dd4bd36b856db3fbfe" +dependencies = [ + "gdk", + "gdkx11-sys", + "gio", + "glib", + "libc", + "x11", +] + +[[package]] +name = "gdkx11-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e2e7445fe01ac26f11601db260dd8608fe172514eb63b3b5e261ea6b0f4428d" +dependencies = [ + "gdk-sys", + "glib-sys", + "libc", + "system-deps", + "x11", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "r-efi 5.3.0", + "wasip2", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "wasip2", + "wasip3", +] + +[[package]] +name = "gio" +version = "0.18.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "gio-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +dependencies = [ + "bitflags 2.11.1", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "memchr", + "once_cell", + "smallvec", + "thiserror 1.0.69", +] + +[[package]] +name = "glib-macros" +version = "0.18.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +dependencies = [ + "heck 0.4.1", + "proc-macro-crate 2.0.2", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "glib-sys" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "gobject-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "gtk" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd56fb197bfc42bd5d2751f4f017d44ff59fbb58140c6b49f9b3b2bdab08506a" +dependencies = [ + "atk", + "cairo-rs", + "field-offset", + "futures-channel", + "gdk", + "gdk-pixbuf", + "gio", + "glib", + "gtk-sys", + "gtk3-macros", + "libc", + "pango", + "pkg-config", +] + +[[package]] +name = "gtk-sys" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f29a1c21c59553eb7dd40e918be54dccd60c52b049b75119d5d96ce6b624414" +dependencies = [ + "atk-sys", + "cairo-sys-rs", + "gdk-pixbuf-sys", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "gtk3-macros" +version = "0.18.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ff3c5b21f14f0736fed6dcfc0bfb4225ebf5725f3c0209edeec181e4d73e9d" +dependencies = [ + "proc-macro-crate 1.3.1", + "proc-macro-error", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "h2" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http", + "indexmap 2.14.0", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash 0.1.5", +] + +[[package]] +name = "hashbrown" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "html5ever" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b7410cae13cbc75623c98ac4cbfd1f0bedddf3227afc24f370cf0f50a44a11c" +dependencies = [ + "log", + "mac", + "markup5ever 0.14.1", + "match_token", +] + +[[package]] +name = "html5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1054432bae2f14e0061e33d23402fbaa67a921d319d56adc6bcf887ddad1cbc2" +dependencies = [ + "log", + "markup5ever 0.38.0", +] + +[[package]] +name = "http" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" +dependencies = [ + "bytes", + "itoa", +] + +[[package]] +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http", + "http-body", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" + +[[package]] +name = "hyper" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6299f016b246a94207e63da54dbe807655bf9e00044f73ded42c3ac5305fbcca" +dependencies = [ + "atomic-waker", + "bytes", + "futures-channel", + "futures-core", + "h2", + "http", + "http-body", + "httparse", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + +[[package]] +name = "hyper-rustls" +version = "0.27.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" +dependencies = [ + "http", + "hyper", + "hyper-util", + "rustls", + "tokio", + "tokio-rustls", + "tower-service", + "webpki-roots", +] + +[[package]] +name = "hyper-util" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-util", + "http", + "http-body", + "hyper", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "system-configuration", + "tokio", + "tower-service", + "tracing", + "windows-registry", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.65" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e31bc9ad994ba00e440a8aa5c9ef0ec67d5cb5e5cb0cc7f8b744a35b389cc470" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core 0.62.2", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "ico" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e795dff5605e0f04bff85ca41b51a96b83e80b281e96231bcaaf1ac35103371" +dependencies = [ + "byteorder", + "png", +] + +[[package]] +name = "icu_collections" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +dependencies = [ + "displaydoc", + "potential_utf", + "utf8_iter", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locale_core" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_normalizer" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +dependencies = [ + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" + +[[package]] +name = "icu_properties" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "zerotrie", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" + +[[package]] +name = "icu_provider" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +dependencies = [ + "displaydoc", + "icu_locale_core", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", +] + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", + "serde", +] + +[[package]] +name = "indexmap" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" +dependencies = [ + "equivalent", + "hashbrown 0.17.0", + "serde", + "serde_core", +] + +[[package]] +name = "infer" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +dependencies = [ + "cfb", +] + +[[package]] +name = "ipnet" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" + +[[package]] +name = "iri-string" +version = "0.7.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25e659a4bb38e810ebc252e53b5814ff908a8c58c2a9ce2fae1bbec24cbf4e20" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is-docker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-wsl" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "173609498df190136aa7dea1a91db051746d339e18476eed5ca40521f02d7aa5" +dependencies = [ + "is-docker", + "once_cell", +] + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "javascriptcore-rs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +dependencies = [ + "bitflags 1.3.2", + "glib", + "javascriptcore-rs-sys", +] + +[[package]] +name = "javascriptcore-rs-sys" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "jni" +version = "0.21.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +dependencies = [ + "cesu8", + "cfg-if", + "combine", + "jni-sys 0.3.1", + "log", + "thiserror 1.0.69", + "walkdir", + "windows-sys 0.45.0", +] + +[[package]] +name = "jni-sys" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41a652e1f9b6e0275df1f15b32661cf0d4b78d4d87ddec5e0c3c20f097433258" +dependencies = [ + "jni-sys 0.4.1", +] + +[[package]] +name = "jni-sys" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6377a88cb3910bee9b0fa88d4f42e1d2da8e79915598f65fb0c7ee14c878af2" +dependencies = [ + "jni-sys-macros", +] + +[[package]] +name = "jni-sys-macros" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" +dependencies = [ + "quote", + "syn 2.0.117", +] + +[[package]] +name = "js-sys" +version = "0.3.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2964e92d1d9dc3364cae4d718d93f227e3abb088e747d92e0395bfdedf1c12ca" +dependencies = [ + "cfg-if", + "futures-util", + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "json-patch" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "863726d7afb6bc2590eeff7135d923545e5e964f004c2ccf8716c25e70a86f08" +dependencies = [ + "jsonptr", + "serde", + "serde_json", + "thiserror 1.0.69", +] + +[[package]] +name = "jsonptr" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dea2b27dd239b2556ed7a25ba842fe47fd602e7fc7433c2a8d6106d4d9edd70" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "keyboard-types" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" +dependencies = [ + "bitflags 2.11.1", + "serde", + "unicode-segmentation", +] + +[[package]] +name = "kuchikiki" +version = "0.8.8-speedreader" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02cb977175687f33fa4afa0c95c112b987ea1443e5a51c8f8ff27dc618270cc2" +dependencies = [ + "cssparser 0.29.6", + "html5ever 0.29.1", + "indexmap 2.14.0", + "selectors 0.24.0", +] + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libappindicator" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" +dependencies = [ + "glib", + "gtk", + "gtk-sys", + "libappindicator-sys", + "log", +] + +[[package]] +name = "libappindicator-sys" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" +dependencies = [ + "gtk-sys", + "libloading", + "once_cell", +] + +[[package]] +name = "libc" +version = "0.2.186" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" + +[[package]] +name = "libloading" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +dependencies = [ + "cfg-if", + "winapi", +] + +[[package]] +name = "libredox" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e02f3bb43d335493c96bf3fd3a321600bf6bd07ed34bc64118e9293bdffea46c" +dependencies = [ + "libc", +] + +[[package]] +name = "litemap" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" + +[[package]] +name = "litrs" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" + +[[package]] +name = "lock_api" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" +dependencies = [ + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "markup5ever" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a7213d12e1864c0f002f52c2923d4556935a43dec5e71355c2760e0f6e7a18" +dependencies = [ + "log", + "phf 0.11.3", + "phf_codegen 0.11.3", + "string_cache 0.8.9", + "string_cache_codegen 0.5.4", + "tendril 0.4.3", +] + +[[package]] +name = "markup5ever" +version = "0.38.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8983d30f2915feeaaab2d6babdd6bc7e9ed1a00b66b5e6d74df19aa9c0e91862" +dependencies = [ + "log", + "tendril 0.5.0", + "web_atoms", +] + +[[package]] +name = "match_token" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88a9689d8d44bf9964484516275f5cd4c9b59457a6940c1d5d0ecbb94510a36b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "mime" +version = "0.3.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" + +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + +[[package]] +name = "mio" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1" +dependencies = [ + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.61.2", +] + +[[package]] +name = "muda" +version = "0.17.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c9fec5a4e89860383d778d10563a605838f8f0b2f9303868937e5ff32e86177" +dependencies = [ + "crossbeam-channel", + "dpi", + "gtk", + "keyboard-types", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 2.0.18", + "windows-sys 0.60.2", +] + +[[package]] +name = "ndk" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f42e7bbe13d351b6bead8286a43aac9534b82bd3cc43e47037f012ebfd62d4" +dependencies = [ + "bitflags 2.11.1", + "jni-sys 0.3.1", + "log", + "ndk-sys", + "num_enum", + "raw-window-handle", + "thiserror 1.0.69", +] + +[[package]] +name = "ndk-context" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" + +[[package]] +name = "ndk-sys" +version = "0.6.0+11769913" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee6cda3051665f1fb8d9e08fc35c96d5a244fb1be711a03b71118828afc9a873" +dependencies = [ + "jni-sys 0.3.1", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "num-conv" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967" + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_enum" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d0bca838442ec211fa11de3a8b0e0e8f3a4522575b5c4c06ed722e005036f26" +dependencies = [ + "num_enum_derive", + "rustversion", +] + +[[package]] +name = "num_enum_derive" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "680998035259dcfcafe653688bf2aa6d3e2dc05e98be6ab46afb089dc84f1df8" +dependencies = [ + "proc-macro-crate 3.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", + "objc2-exception-helper", +] + +[[package]] +name = "objc2-app-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d49e936b501e5c5bf01fda3a9452ff86dc3ea98ad5f283e1455153142d97518c" +dependencies = [ + "bitflags 2.11.1", + "block2", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.11.1", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-core-graphics" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e022c9d066895efa1345f8e33e584b9f958da2fd4cd116792e15e07e4720a807" +dependencies = [ + "bitflags 2.11.1", + "dispatch2", + "objc2", + "objc2-core-foundation", + "objc2-io-surface", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-exception-helper" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7a1c5fbb72d7735b076bb47b578523aedc40f3c439bea6dfd595c089d79d98a" +dependencies = [ + "cc", +] + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.11.1", + "block2", + "libc", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-io-surface" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180788110936d59bab6bd83b6060ffdfffb3b922ba1396b312ae795e1de9d81d" +dependencies = [ + "bitflags 2.11.1", + "objc2", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-quartz-core" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96c1358452b371bf9f104e21ec536d37a650eb10f7ee379fff67d2e08d537f1f" +dependencies = [ + "bitflags 2.11.1", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-ui-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87d638e33c06f577498cbcc50491496a3ed4246998a7fbba7ccb98b1e7eab22" +dependencies = [ + "bitflags 2.11.1", + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "objc2-web-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2e5aaab980c433cf470df9d7af96a7b46a9d892d521a2cbbb2f8a4c16751e7f" +dependencies = [ + "bitflags 2.11.1", + "block2", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "open" +version = "5.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f3bab717c29a857abf75fcef718d441ec7cb2725f937343c734740a985d37fd" +dependencies = [ + "dunce", + "is-wsl", + "libc", + "pathdiff", +] + +[[package]] +name = "openconcho" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", + "tauri", + "tauri-build", + "tauri-plugin-http", + "tauri-plugin-shell", +] + +[[package]] +name = "option-ext" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" + +[[package]] +name = "os_pipe" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d8fae84b431384b68627d0f9b3b1245fcf9f46f6c0e3dc902e9dce64edd1967" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "pango" +version = "0.18.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +dependencies = [ + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "parking_lot" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-link 0.2.1", +] + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "percent-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_shared 0.8.0", +] + +[[package]] +name = "phf" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fabbf1ead8a5bcbc20f5f8b939ee3f5b0f6f281b6ad3468b84656b658b455259" +dependencies = [ + "phf_macros 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", +] + +[[package]] +name = "phf" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" +dependencies = [ + "phf_macros 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +dependencies = [ + "phf_macros 0.13.1", + "phf_shared 0.13.1", + "serde", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_codegen" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", +] + +[[package]] +name = "phf_codegen" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49aa7f9d80421bca176ca8dbfebe668cc7a2684708594ec9f3c0db0805d5d6e1" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.6", +] + +[[package]] +name = "phf_generator" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" +dependencies = [ + "phf_shared 0.11.3", + "rand 0.8.6", +] + +[[package]] +name = "phf_generator" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +dependencies = [ + "fastrand", + "phf_shared 0.13.1", +] + +[[package]] +name = "phf_macros" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fdf3184dd560f160dd73922bea2d5cd6e8f064bf4b13110abd81b03697b4e0" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "phf_macros" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "phf_macros" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher 0.3.11", +] + +[[package]] +name = "phf_shared" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" +dependencies = [ + "siphasher 1.0.2", +] + +[[package]] +name = "phf_shared" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +dependencies = [ + "siphasher 1.0.2", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd" + +[[package]] +name = "pkg-config" +version = "0.3.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" + +[[package]] +name = "plist" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "740ebea15c5d1428f910cd1a5f52cebf8d25006245ed8ade92702f4943d91e07" +dependencies = [ + "base64 0.22.1", + "indexmap 2.14.0", + "quick-xml", + "serde", + "time", +] + +[[package]] +name = "png" +version = "0.17.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82151a2fc869e011c153adc57cf2789ccb8d9906ce52c0b39a6b5697749d7526" +dependencies = [ + "bitflags 1.3.2", + "crc32fast", + "fdeflate", + "flate2", + "miniz_oxide", +] + +[[package]] +name = "potential_utf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +dependencies = [ + "zerovec", +] + +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] + +[[package]] +name = "proc-macro-crate" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +dependencies = [ + "once_cell", + "toml_edit 0.19.15", +] + +[[package]] +name = "proc-macro-crate" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b00f26d3400549137f92511a46ac1cd8ce37cb5598a96d382381458b992a5d24" +dependencies = [ + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "proc-macro-crate" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f" +dependencies = [ + "toml_edit 0.25.11+spec-1.1.0", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn 1.0.109", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "psl-types" +version = "2.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" + +[[package]] +name = "publicsuffix" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42ea446cab60335f76979ec15e12619a2165b5ae2c12166bef27d283a9fadf" +dependencies = [ + "idna", + "psl-types", +] + +[[package]] +name = "quick-xml" +version = "0.38.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66c2058c55a409d601666cffe35f04333cf1013010882cec174a7467cd4e21c" +dependencies = [ + "memchr", +] + +[[package]] +name = "quinn" +version = "0.11.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.18", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +dependencies = [ + "bytes", + "getrandom 0.3.4", + "lru-slab", + "rand 0.9.4", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.18", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.60.2", +] + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca0ecfa931c29007047d1bc58e623ab12e5590e8c7cc53200d5202b69266d8a" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.5", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.17", +] + +[[package]] +name = "rand_core" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76afc826de14238e6e8c374ddcc1fa19e374fd8dd986b0d2af0d02377261d83c" +dependencies = [ + "getrandom 0.3.4", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "raw-window-handle" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20675572f6f24e9e76ef639bc5552774ed45f1c30e2951e1e99c59888861c539" + +[[package]] +name = "redox_syscall" +version = "0.5.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" +dependencies = [ + "bitflags 2.11.1", +] + +[[package]] +name = "redox_users" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e608c6638b9c18977b00b475ac1f28d14e84b27d8d42f70e0bf1e3dec127ac" +dependencies = [ + "getrandom 0.2.17", + "libredox", + "thiserror 2.0.18", +] + +[[package]] +name = "ref-cast" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f354300ae66f76f1c85c5f84693f0ce81d747e2c3f21a45fef496d89c960bf7d" +dependencies = [ + "ref-cast-impl", +] + +[[package]] +name = "ref-cast-impl" +version = "1.0.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "regex" +version = "1.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e10754a14b9137dd7b1e3e5b0493cc9171fdd105e0ab477f51b72e7f3ac0e276" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" + +[[package]] +name = "reqwest" +version = "0.12.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" +dependencies = [ + "base64 0.22.1", + "bytes", + "cookie", + "cookie_store", + "encoding_rs", + "futures-core", + "h2", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-rustls", + "hyper-util", + "js-sys", + "log", + "mime", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls", + "rustls-pki-types", + "serde", + "serde_json", + "serde_urlencoded", + "sync_wrapper", + "tokio", + "tokio-rustls", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "webpki-roots", +] + +[[package]] +name = "reqwest" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab3f43e3283ab1488b624b44b0e988d0acea0b3214e694730a055cb6b2efa801" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-core", + "futures-util", + "http", + "http-body", + "http-body-util", + "hyper", + "hyper-util", + "js-sys", + "log", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "sync_wrapper", + "tokio", + "tokio-util", + "tower", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "wasm-streams", + "web-sys", +] + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.17", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustc-hash" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rustls" +version = "0.23.39" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c2c118cb077cca2822033836dfb1b975355dfb784b5e8da48f7b6c5db74e60e" +dependencies = [ + "once_cell", + "ring", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", +] + +[[package]] +name = "rustls-pki-types" +version = "1.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +dependencies = [ + "web-time", + "zeroize", +] + +[[package]] +name = "rustls-webpki" +version = "0.103.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "ryu" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive", + "serde", + "serde_json", + "url", + "uuid", +] + +[[package]] +name = "schemars" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2b42f36aa1cd011945615b92222f6bf73c599a102a300334cd7f8dbeec726cc" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.117", +] + +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + +[[package]] +name = "selectors" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c37578180969d00692904465fb7f6b3d50b9a2b952b87c23d0e2e5cb5013416" +dependencies = [ + "bitflags 1.3.2", + "cssparser 0.29.6", + "derive_more 0.99.20", + "fxhash", + "log", + "phf 0.8.0", + "phf_codegen 0.8.0", + "precomputed-hash", + "servo_arc 0.2.0", + "smallvec", +] + +[[package]] +name = "selectors" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5d9c0c92a92d33f08817311cf3f2c29a3538a8240e94a6a3c622ce652d7e00c" +dependencies = [ + "bitflags 2.11.1", + "cssparser 0.36.0", + "derive_more 2.1.1", + "log", + "new_debug_unreachable", + "phf 0.13.1", + "phf_codegen 0.13.1", + "precomputed-hash", + "rustc-hash", + "servo_arc 0.4.3", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.28" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a7852d02fc848982e0c167ef163aaff9cd91dc640ba85e263cb1ce46fae51cd" +dependencies = [ + "serde", + "serde_core", +] + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde-untagged" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9faf48a4a2d2693be24c6289dbe26552776eb7737074e6722891fadbe6c5058" +dependencies = [ + "erased-serde", + "serde", + "serde_core", + "typeid", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_derive_internals" +version = "0.29.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_repr" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6662b5879511e06e8999a8a235d848113e942c9124f211511b16466ee2995f26" +dependencies = [ + "serde_core", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_with" +version = "3.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd5414fad8e6907dbdd5bc441a50ae8d6e26151a03b1de04d89a5576de61d01f" +dependencies = [ + "base64 0.22.1", + "chrono", + "hex", + "indexmap 1.9.3", + "indexmap 2.14.0", + "schemars 0.9.0", + "schemars 1.2.1", + "serde_core", + "serde_json", + "serde_with_macros", + "time", +] + +[[package]] +name = "serde_with_macros" +version = "3.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3db8978e608f1fe7357e211969fd9abdcae80bac1ba7a3369bb7eb6b404eb65" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serialize-to-javascript" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04f3666a07a197cdb77cdf306c32be9b7f598d7060d50cfd4d5aa04bfd92f6c5" +dependencies = [ + "serde", + "serde_json", + "serialize-to-javascript-impl", +] + +[[package]] +name = "serialize-to-javascript-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "772ee033c0916d670af7860b6e1ef7d658a4629a6d0b4c8c3e67f09b3765b75d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "servo_arc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52aa42f8fdf0fed91e5ce7f23d8138441002fa31dca008acf47e6fd4721f741" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "servo_arc" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "170fb83ab34de17dc69aa7c67482b22218ddb85da56546f9bd6b929e32a05930" +dependencies = [ + "stable_deref_trait", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "shared_child" +version = "1.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e362d9935bc50f019969e2f9ecd66786612daae13e8f277be7bfb66e8bed3f7" +dependencies = [ + "libc", + "sigchld", + "windows-sys 0.60.2", +] + +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + +[[package]] +name = "sigchld" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47106eded3c154e70176fc83df9737335c94ce22f821c32d17ed1db1f83badb1" +dependencies = [ + "libc", + "os_pipe", + "signal-hook", +] + +[[package]] +name = "signal-hook" +version = "0.3.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d881a16cf4426aa584979d30bd82cb33429027e42122b169753d6ef1085ed6e2" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" +dependencies = [ + "errno", + "libc", +] + +[[package]] +name = "simd-adler32" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + +[[package]] +name = "siphasher" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2aa850e253778c88a04c3d7323b043aeda9d3e30d5971937c1855769763678e" + +[[package]] +name = "slab" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" + +[[package]] +name = "smallvec" +version = "1.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" + +[[package]] +name = "socket2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "softbuffer" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aac18da81ebbf05109ab275b157c22a653bb3c12cf884450179942f81bcbf6c3" +dependencies = [ + "bytemuck", + "js-sys", + "ndk", + "objc2", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "objc2-quartz-core", + "raw-window-handle", + "redox_syscall", + "tracing", + "wasm-bindgen", + "web-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "soup3" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" +dependencies = [ + "futures-channel", + "gio", + "glib", + "libc", + "soup3-sys", +] + +[[package]] +name = "soup3-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "stable_deref_trait" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" + +[[package]] +name = "string_cache" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.11.3", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a18596f8c785a729f2819c0f6a7eae6ebeebdfffbfe4214ae6b087f690e31901" +dependencies = [ + "new_debug_unreachable", + "parking_lot", + "phf_shared 0.13.1", + "precomputed-hash", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c711928715f1fe0fe509c53b43e993a9a557babc2d0a3567d0a3006f1ac931a0" +dependencies = [ + "phf_generator 0.11.3", + "phf_shared 0.11.3", + "proc-macro2", + "quote", +] + +[[package]] +name = "string_cache_codegen" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "585635e46db231059f76c5849798146164652513eb9e8ab2685939dd90f29b69" +dependencies = [ + "phf_generator 0.13.1", + "phf_shared 0.13.1", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "swift-rs" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4057c98e2e852d51fdcfca832aac7b571f6b351ad159f9eda5db1655f8d0c4d7" +dependencies = [ + "base64 0.21.7", + "serde", + "serde_json", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "system-configuration" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a13f3d0daba03132c0aa9767f98351b3488edc2c100cda2d2ec2b04f3d8d3c8b" +dependencies = [ + "bitflags 2.11.1", + "core-foundation 0.9.4", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "system-deps" +version = "6.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" +dependencies = [ + "cfg-expr", + "heck 0.5.0", + "pkg-config", + "toml 0.8.2", + "version-compare", +] + +[[package]] +name = "tao" +version = "0.34.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9103edf55f2da3c82aea4c7fab7c4241032bfeea0e71fa557d98e00e7ce7cc20" +dependencies = [ + "bitflags 2.11.1", + "block2", + "core-foundation 0.10.1", + "core-graphics", + "crossbeam-channel", + "dispatch2", + "dlopen2", + "dpi", + "gdkwayland-sys", + "gdkx11-sys", + "gtk", + "jni", + "libc", + "log", + "ndk", + "ndk-context", + "ndk-sys", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "once_cell", + "parking_lot", + "raw-window-handle", + "tao-macros", + "unicode-segmentation", + "url", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "tao-macros" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e16beb8b2ac17db28eab8bca40e62dbfbb34c0fcdc6d9826b11b7b5d047dfd" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "2.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da77cc00fb9028caf5b5d4650f75e31f1ef3693459dfca7f7e506d1ecef0ba2d" +dependencies = [ + "anyhow", + "bytes", + "cookie", + "dirs", + "dunce", + "embed_plist", + "getrandom 0.3.4", + "glob", + "gtk", + "heck 0.5.0", + "http", + "jni", + "libc", + "log", + "mime", + "muda", + "objc2", + "objc2-app-kit", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "percent-encoding", + "plist", + "raw-window-handle", + "reqwest 0.13.2", + "serde", + "serde_json", + "serde_repr", + "serialize-to-javascript", + "swift-rs", + "tauri-build", + "tauri-macros", + "tauri-runtime", + "tauri-runtime-wry", + "tauri-utils", + "thiserror 2.0.18", + "tokio", + "tray-icon", + "url", + "webkit2gtk", + "webview2-com", + "window-vibrancy", + "windows", +] + +[[package]] +name = "tauri-build" +version = "2.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4bbc990d1dbf57a8e1c7fa2327f2a614d8b757805603c1b9ba5c81bade09fd4d" +dependencies = [ + "anyhow", + "cargo_toml", + "dirs", + "glob", + "heck 0.5.0", + "json-patch", + "schemars 0.8.22", + "semver", + "serde", + "serde_json", + "tauri-utils", + "tauri-winres", + "toml 0.9.12+spec-1.1.0", + "walkdir", +] + +[[package]] +name = "tauri-codegen" +version = "2.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4a24476afd977c5d5d169f72425868613d82747916dd29e0a357c84c4bd6d29" +dependencies = [ + "base64 0.22.1", + "brotli", + "ico", + "json-patch", + "plist", + "png", + "proc-macro2", + "quote", + "semver", + "serde", + "serde_json", + "sha2", + "syn 2.0.117", + "tauri-utils", + "thiserror 2.0.18", + "time", + "url", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-macros" +version = "2.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d39b349a98dadaffebb73f0a40dcd1f23c999211e5a2e744403db384d0c33de7" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.117", + "tauri-codegen", + "tauri-utils", +] + +[[package]] +name = "tauri-plugin" +version = "2.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddde7d51c907b940fb573006cdda9a642d6a7c8153657e88f8a5c3c9290cd4aa" +dependencies = [ + "anyhow", + "glob", + "plist", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri-utils", + "toml 0.9.12+spec-1.1.0", + "walkdir", +] + +[[package]] +name = "tauri-plugin-fs" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36e1ec28b79f3d0683f4507e1615c36292c0ea6716668770d4396b9b39871ed8" +dependencies = [ + "anyhow", + "dunce", + "glob", + "log", + "objc2-foundation", + "percent-encoding", + "schemars 0.8.22", + "serde", + "serde_json", + "serde_repr", + "tauri", + "tauri-plugin", + "tauri-utils", + "thiserror 2.0.18", + "toml 0.9.12+spec-1.1.0", + "url", +] + +[[package]] +name = "tauri-plugin-http" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfba7d4ec72763f9d1fdf73c217747f01e2c84b08b87a8cacd2f94f35853f84d" +dependencies = [ + "bytes", + "cookie_store", + "data-url", + "http", + "regex", + "reqwest 0.12.28", + "schemars 0.8.22", + "serde", + "serde_json", + "tauri", + "tauri-plugin", + "tauri-plugin-fs", + "thiserror 2.0.18", + "tokio", + "url", + "urlpattern", +] + +[[package]] +name = "tauri-plugin-shell" +version = "2.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8457dbf9e2bab1edd8df22bb2c20857a59a9868e79cb3eac5ed639eec4d0c73b" +dependencies = [ + "encoding_rs", + "log", + "open", + "os_pipe", + "regex", + "schemars 0.8.22", + "serde", + "serde_json", + "shared_child", + "tauri", + "tauri-plugin", + "thiserror 2.0.18", + "tokio", +] + +[[package]] +name = "tauri-runtime" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2826d79a3297ed08cd6ea7f412644ef58e32969504bc4fbd8d7dbeabc4445ea2" +dependencies = [ + "cookie", + "dpi", + "gtk", + "http", + "jni", + "objc2", + "objc2-ui-kit", + "objc2-web-kit", + "raw-window-handle", + "serde", + "serde_json", + "tauri-utils", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webview2-com", + "windows", +] + +[[package]] +name = "tauri-runtime-wry" +version = "2.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e11ea2e6f801d275fdd890d6c9603736012742a1c33b96d0db788c9cdebf7f9e" +dependencies = [ + "gtk", + "http", + "jni", + "log", + "objc2", + "objc2-app-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "softbuffer", + "tao", + "tauri-runtime", + "tauri-utils", + "url", + "webkit2gtk", + "webview2-com", + "windows", + "wry", +] + +[[package]] +name = "tauri-utils" +version = "2.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219a1f983a2af3653f75b5747f76733b0da7ff03069c7a41901a5eb3ace4557d" +dependencies = [ + "anyhow", + "brotli", + "cargo_metadata", + "ctor", + "dunce", + "glob", + "html5ever 0.29.1", + "http", + "infer", + "json-patch", + "kuchikiki", + "log", + "memchr", + "phf 0.11.3", + "proc-macro2", + "quote", + "regex", + "schemars 0.8.22", + "semver", + "serde", + "serde-untagged", + "serde_json", + "serde_with", + "swift-rs", + "thiserror 2.0.18", + "toml 0.9.12+spec-1.1.0", + "url", + "urlpattern", + "uuid", + "walkdir", +] + +[[package]] +name = "tauri-winres" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1087b111fe2b005e42dbdc1990fc18593234238d47453b0c99b7de1c9ab2c1e0" +dependencies = [ + "dunce", + "embed-resource", + "toml 0.9.12+spec-1.1.0", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "tendril" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4790fc369d5a530f4b544b094e31388b9b3a37c0f4652ade4505945f5660d24" +dependencies = [ + "new_debug_unreachable", + "utf-8", +] + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +dependencies = [ + "thiserror-impl 2.0.18", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "time" +version = "0.3.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde_core", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" + +[[package]] +name = "time-macros" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +dependencies = [ + "num-conv", + "time-core", +] + +[[package]] +name = "tinystr" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +dependencies = [ + "displaydoc", + "zerovec", +] + +[[package]] +name = "tinyvec" +version = "1.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + +[[package]] +name = "tokio" +version = "1.52.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" +dependencies = [ + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "tokio-macros", + "windows-sys 0.61.2", +] + +[[package]] +name = "tokio-macros" +version = "2.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1729aa945f29d91ba541258c8df89027d5792d85a8841fb65e8bf0f4ede4ef61" +dependencies = [ + "rustls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", +] + +[[package]] +name = "toml" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "185d8ab0dfbb35cf1399a6344d8484209c088f75f8f68230da55d48d95d43e3d" +dependencies = [ + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "toml_edit 0.20.2", +] + +[[package]] +name = "toml" +version = "0.9.12+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf92845e79fc2e2def6a5d828f0801e29a2f8acc037becc5ab08595c7d5e9863" +dependencies = [ + "indexmap 2.14.0", + "serde_core", + "serde_spanned 1.1.1", + "toml_datetime 0.7.5+spec-1.1.0", + "toml_parser", + "toml_writer", + "winnow 0.7.15", +] + +[[package]] +name = "toml_datetime" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_datetime" +version = "0.7.5+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_datetime" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3165f65f62e28e0115a00b2ebdd37eb6f3b641855f9d636d3cd4103767159ad7" +dependencies = [ + "serde_core", +] + +[[package]] +name = "toml_edit" +version = "0.19.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338" +dependencies = [ + "indexmap 2.14.0", + "serde", + "serde_spanned 0.6.9", + "toml_datetime 0.6.3", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.25.11+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b59c4d22ed448339746c59b905d24568fcbb3ab65a500494f7b8c3e97739f2b" +dependencies = [ + "indexmap 2.14.0", + "toml_datetime 1.1.1+spec-1.1.0", + "toml_parser", + "winnow 1.0.2", +] + +[[package]] +name = "toml_parser" +version = "1.1.2+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +dependencies = [ + "winnow 1.0.2", +] + +[[package]] +name = "toml_writer" +version = "1.1.1+spec-1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" + +[[package]] +name = "tower" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" +dependencies = [ + "futures-core", + "futures-util", + "pin-project-lite", + "sync_wrapper", + "tokio", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-http" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" +dependencies = [ + "bitflags 2.11.1", + "bytes", + "futures-util", + "http", + "http-body", + "iri-string", + "pin-project-lite", + "tower", + "tower-layer", + "tower-service", +] + +[[package]] +name = "tower-layer" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" + +[[package]] +name = "tower-service" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" + +[[package]] +name = "tracing" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tray-icon" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e85aa143ceb072062fc4d6356c1b520a51d636e7bc8e77ec94be3608e5e80c" +dependencies = [ + "crossbeam-channel", + "dirs", + "libappindicator", + "muda", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-core-graphics", + "objc2-foundation", + "once_cell", + "png", + "serde", + "thiserror 2.0.18", + "windows-sys 0.60.2", +] + +[[package]] +name = "try-lock" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" + +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + +[[package]] +name = "typenum" +version = "1.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de" + +[[package]] +name = "unic-char-property" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" +dependencies = [ + "unic-char-range", +] + +[[package]] +name = "unic-char-range" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" + +[[package]] +name = "unic-common" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" + +[[package]] +name = "unic-ucd-ident" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" +dependencies = [ + "unic-char-property", + "unic-char-range", + "unic-ucd-version", +] + +[[package]] +name = "unic-ucd-version" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" +dependencies = [ + "unic-common", +] + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-segmentation" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9629274872b2bfaf8d66f5f15725007f635594914870f65218920345aa11aa8c" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + +[[package]] +name = "url" +version = "2.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", + "serde", + "serde_derive", +] + +[[package]] +name = "urlpattern" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70acd30e3aa1450bc2eece896ce2ad0d178e9c079493819301573dae3c37ba6d" +dependencies = [ + "regex", + "serde", + "unic-ucd-ident", + "url", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + +[[package]] +name = "uuid" +version = "1.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddd74a9687298c6858e9b88ec8935ec45d22e8fd5e6394fa1bd4e99a87789c76" +dependencies = [ + "getrandom 0.4.2", + "js-sys", + "serde_core", + "wasm-bindgen", +] + +[[package]] +name = "version-compare" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c2856837ef78f57382f06b2b8563a2f512f7185d732608fd9176cb3b8edf0e" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "vswhom" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be979b7f07507105799e854203b470ff7c78a1639e330a58f183b5fea574608b" +dependencies = [ + "libc", + "vswhom-sys", +] + +[[package]] +name = "vswhom-sys" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb067e4cbd1ff067d1df46c9194b5de0e98efd2810bbc95c5d5e5f25a3231150" +dependencies = [ + "cc", + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" +dependencies = [ + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.11.1+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" + +[[package]] +name = "wasip2" +version = "1.0.3+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" +dependencies = [ + "wit-bindgen 0.57.1", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen 0.51.0", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf938a0bacb0469e83c1e148908bd7d5a6010354cf4fb73279b7447422e3a89" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.68" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f371d383f2fb139252e0bfac3b81b265689bf45b6874af544ffa4c975ac1ebf8" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeff24f84126c0ec2db7a449f0c2ec963c6a49efe0698c4242929da037ca28ed" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d08065faf983b2b80a79fd87d8254c409281cf7de75fc4b773019824196c904" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.117", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.118" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fd04d9e306f1907bd13c6361b5c6bfc7b3b3c095ed3f8a9246390f8dbdee129" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap 2.14.0", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasm-streams" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1ec4f6517c9e11ae630e200b2b65d193279042e28edd4a2cda233e46670bbb" +dependencies = [ + "futures-util", + "js-sys", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.1", + "hashbrown 0.15.5", + "indexmap 2.14.0", + "semver", +] + +[[package]] +name = "web-sys" +version = "0.3.95" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f2dfbb17949fa2088e5d39408c48368947b86f7834484e87b73de55bc14d97d" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web-time" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "web_atoms" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7cff6eef815df1834fd250e3a2ff436044d82a9f1bc1980ca1dbdf07effc538" +dependencies = [ + "phf 0.13.1", + "phf_codegen 0.13.1", + "string_cache 0.9.0", + "string_cache_codegen 0.6.1", +] + +[[package]] +name = "webkit2gtk" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1027150013530fb2eaf806408df88461ae4815a45c541c8975e61d6f2fc4793" +dependencies = [ + "bitflags 1.3.2", + "cairo-rs", + "gdk", + "gdk-sys", + "gio", + "gio-sys", + "glib", + "glib-sys", + "gobject-sys", + "gtk", + "gtk-sys", + "javascriptcore-rs", + "libc", + "once_cell", + "soup3", + "webkit2gtk-sys", +] + +[[package]] +name = "webkit2gtk-sys" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "916a5f65c2ef0dfe12fff695960a2ec3d4565359fdbb2e9943c974e06c734ea5" +dependencies = [ + "bitflags 1.3.2", + "cairo-sys-rs", + "gdk-sys", + "gio-sys", + "glib-sys", + "gobject-sys", + "gtk-sys", + "javascriptcore-rs-sys", + "libc", + "pkg-config", + "soup3-sys", + "system-deps", +] + +[[package]] +name = "webpki-roots" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52f5ee44c96cf55f1b349600768e3ece3a8f26010c05265ab73f945bb1a2eb9d" +dependencies = [ + "rustls-pki-types", +] + +[[package]] +name = "webview2-com" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7130243a7a5b33c54a444e54842e6a9e133de08b5ad7b5861cd8ed9a6a5bc96a" +dependencies = [ + "webview2-com-macros", + "webview2-com-sys", + "windows", + "windows-core 0.61.2", + "windows-implement", + "windows-interface", +] + +[[package]] +name = "webview2-com-macros" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a921c1b6914c367b2b823cd4cde6f96beec77d30a939c8199bb377cf9b9b54" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "webview2-com-sys" +version = "0.38.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" +dependencies = [ + "thiserror 2.0.18", + "windows", + "windows-core 0.61.2", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "window-vibrancy" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9bec5a31f3f9362f2258fd0e9c9dd61a9ca432e7306cc78c444258f0dce9a9c" +dependencies = [ + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "raw-window-handle", + "windows-sys 0.59.0", + "windows-version", +] + +[[package]] +name = "windows" +version = "0.61.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link 0.1.3", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core 0.61.2", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.1.3", + "windows-result 0.3.4", + "windows-strings 0.4.2", +] + +[[package]] +name = "windows-core" +version = "0.62.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", + "windows-threading", +] + +[[package]] +name = "windows-implement" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-interface" +version = "0.59.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core 0.61.2", + "windows-link 0.1.3", +] + +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-sys" +version = "0.45.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" +dependencies = [ + "windows-targets 0.42.2", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.5", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows-targets" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +dependencies = [ + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm 0.52.6", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.53.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" +dependencies = [ + "windows-link 0.2.1", + "windows_aarch64_gnullvm 0.53.1", + "windows_aarch64_msvc 0.53.1", + "windows_i686_gnu 0.53.1", + "windows_i686_gnullvm 0.53.1", + "windows_i686_msvc 0.53.1", + "windows_x86_64_gnu 0.53.1", + "windows_x86_64_gnullvm 0.53.1", + "windows_x86_64_msvc 0.53.1", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link 0.1.3", +] + +[[package]] +name = "windows-version" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4060a1da109b9d0326b7262c8e12c84df67cc0dbc9e33cf49e01ccc2eb63631" +dependencies = [ + "windows-link 0.2.1", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_i686_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" + +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" + +[[package]] +name = "winnow" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ee1708bef14716a11bae175f579062d4554d95be2c6829f518df847b7b3fdd0" +dependencies = [ + "memchr", +] + +[[package]] +name = "winreg" +version = "0.55.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb5a765337c50e9ec252c2069be9bf91c7df47afb103b642ba3a53bf8101be97" +dependencies = [ + "cfg-if", + "windows-sys 0.59.0", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen" +version = "0.57.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap 2.14.0", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.1", + "indexmap 2.14.0", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap 2.14.0", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "writeable" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" + +[[package]] +name = "wry" +version = "0.54.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a8135d8676225e5744de000d4dff5a082501bf7db6a1c1495034f8c314edbc" +dependencies = [ + "base64 0.22.1", + "block2", + "cookie", + "crossbeam-channel", + "dirs", + "dom_query", + "dpi", + "dunce", + "gdkx11", + "gtk", + "http", + "javascriptcore-rs", + "jni", + "libc", + "ndk", + "objc2", + "objc2-app-kit", + "objc2-core-foundation", + "objc2-foundation", + "objc2-ui-kit", + "objc2-web-kit", + "once_cell", + "percent-encoding", + "raw-window-handle", + "sha2", + "soup3", + "tao-macros", + "thiserror 2.0.18", + "url", + "webkit2gtk", + "webkit2gtk-sys", + "webview2-com", + "windows", + "windows-core 0.61.2", + "windows-version", + "x11-dl", +] + +[[package]] +name = "x11" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "502da5464ccd04011667b11c435cb992822c2c0dbde1770c988480d312a0db2e" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "x11-dl" +version = "2.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" +dependencies = [ + "libc", + "once_cell", + "pkg-config", +] + +[[package]] +name = "yoke" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" +dependencies = [ + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.48" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zerofrom" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", + "synstructure", +] + +[[package]] +name = "zeroize" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" + +[[package]] +name = "zerotrie" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/packages/desktop/src-tauri/Cargo.toml b/packages/desktop/src-tauri/Cargo.toml new file mode 100644 index 0000000..872eb3f --- /dev/null +++ b/packages/desktop/src-tauri/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "openconcho" +version = "0.1.0" +edition = "2021" + +[lib] +name = "openconcho_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2", features = [] } + +[dependencies] +tauri = { version = "2", features = [] } +tauri-plugin-http = "2" +tauri-plugin-shell = "2" +serde = { version = "1", features = ["derive"] } +serde_json = "1" diff --git a/packages/desktop/src-tauri/build.rs b/packages/desktop/src-tauri/build.rs new file mode 100644 index 0000000..d860e1e --- /dev/null +++ b/packages/desktop/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/packages/desktop/src-tauri/capabilities/default.json b/packages/desktop/src-tauri/capabilities/default.json new file mode 100644 index 0000000..86c2e68 --- /dev/null +++ b/packages/desktop/src-tauri/capabilities/default.json @@ -0,0 +1,17 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "Default capabilities for the OpenConcho desktop window", + "windows": ["main"], + "permissions": [ + "core:default", + { + "identifier": "http:default", + "allow": [ + { "url": "http://**" }, + { "url": "https://**" } + ] + }, + "shell:allow-open" + ] +} diff --git a/packages/desktop/src-tauri/icons/128x128.png b/packages/desktop/src-tauri/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..8ba9a873872d7897d17e7d5afbc04bbdf4e625f3 GIT binary patch literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSpFLe1Ln>~)y=2JC;J|UWg1czcNa}?E^-S6z*?5($ V>W5AKEnt#k@O1TaS?83{1ONz)T1Wr@ literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/32x32.png b/packages/desktop/src-tauri/icons/32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..e2834724d49b04da557ae7c6377f1d9b3c30b2ca GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz15X#nkcwMx&lxf@Ft9KfwCBYA rWj^7^bADRFO;hQ9qj{VhC_qN2kLlM6-J?%{dKo-j{an^LB{Ts5$Y&X# literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/64x64.png b/packages/desktop/src-tauri/icons/64x64.png new file mode 100644 index 0000000000000000000000000000000000000000..7324ba609a9bceef1780eb0c8ece5dd9e855bc0c GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=8J;eVAr-gYUNB^2FyLTN;NSdn zT|Gl_Mn9+EiE!J(h+~CJEF1y~4h;;96fhpJb01pGTs1j@DG+EUgQu&X%Q~loCIGB> BAp8IT literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/Square107x107Logo.png b/packages/desktop/src-tauri/icons/Square107x107Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4c26d65907d0ff9bc199e65cea9896acc479a140 GIT binary patch literal 240 zcmeAS@N?(olHy`uVBq!ia0vp^*&xip1|$pi*YE(T?Vc`orv z?SHHbm|YAe#;AT#s{eYq^AJ-+6RYYoMJi$g>)jCR3kR9cyCDHoR$FO9t3i! guYmP59&4}hmM>*d3#@UA26}`xc~qF literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/Square142x142Logo.png b/packages/desktop/src-tauri/icons/Square142x142Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bd08c69b97bfa68362dcef44a991525cce2f8a3b GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^eIU%i1|*;VHQ-=iU=;9laSW-r_4bmXAOlcfBVWer zu6o8747_Jlg#Oum3b&8o;xynpcF;nCy{EYl%u0}fuoxdhSrY6J)&Za*5Q`bC9LS5A%WlSVmsu_a=HA!>3^fK%S3j3^P63=B*MJzX3_DsH{KqR7Z#z`<~k zbJN*N_6(K^%xtCN50AS4d&OR$pu)hzZXm;On30G5Kmmd>kOA|+6i5M(2UmwnIkD;v zGs4Y7HkMNB4^L!(n+x^`E_dRvA6YrrAR^R30}Wj{rPlMfGm#$rIGjsquu>SS1~Qyv cr>YwgE6%dLs#LDr0!-5kp00i_>zopr0A(A$e*gdg literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/Square30x30Logo.png b/packages/desktop/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c7a6558cf6ba2e9f2191f410aba7d6e0ac63aeed GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX1|+Qw)-3{3`kpS1Ar-gYo>gRIFyLS?V7a;B zy?ld=z(b+Uq7nOEbuvr3A4%F6p(ECP6iEHq-hPDXQ}5gDT0pG~p00i_>zopr07Ysb ABLDyZ literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/Square310x310Logo.png b/packages/desktop/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a50b9662560db01759e55adb1fa456ca22084e00 GIT binary patch literal 853 zcmeAS@N?(olHy`uVBq!ia0y~yU^D|^4mP03>plBcGB7a9c)B=-RNQ)d#ZZvJfP-Np zU&iaMdd3$F!agxd58M0yT;+c-VFH7J8ACENlsIsMp@$bnz(s-b2vIN#mlRI3dU$b4 z;W7*83|vw;%_7no12dQ(iS`Xz7~pgPvXg0O4Urxl%+aQTl+=jy4%Gs*A(wgaANHVs TmiK=GvkQZ#tDnm{r-UW|_g@7g literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/Square44x44Logo.png b/packages/desktop/src-tauri/icons/Square44x44Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bae81b4e9708c92b8d1e364a981b812b5ea6f9b4 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^Iv~u!1|;QLq8Ndcqo<2wNX4zU=L~rn3^*7J__lmJ vx4+>fgY1Mb$In;aN2nxACgKJUs~$1|&ndJJtiKeoq(2kcwMxFBtMN7;rFbkj=Q= zUC;P}LDXi+)C(u#|3-*%sd&3>N;&BjbxqVFR}R;^SvhzmF5GT#^CAd=d#Wzp$Pyc^G2%x literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/StoreLogo.png b/packages/desktop/src-tauri/icons/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb0d9b79700da8dd45f2e40f0e86bebe19eab37 GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2nC-FHaZ8kcwMx&l~bG7;rEc@NM~c vZa+gwL$~ab(hD_Lh1pYN6qSeopN=!#ImPUxJ#%Ru&{PIbS3j3^P6 + + + + \ No newline at end of file diff --git a/packages/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png b/packages/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..6956ad60bddc01799082c359a40356ab0425f374 GIT binary patch literal 176 zcmeAS@N?(olHy`uVBq!ia0vp^h9Jzr1|*B;ILZL2a!(h>kcwMxZ*JslFc4r35Z=`K z`-au(wZAReuQfGt2%Y<|&iAwYeDC5^sRS+-7xyE(WYSv}+_qbOE4oW=AM51*EGtr_ zi`A93Kj?04zz%*Ce44GjRISQPaBuJOoRdk;4tJh0?TixHsmHs`2IvF^Pgg&ebxsLQ E0Q+K~&K?Va3hK+m~ zue<6QUoc4Ws0jVD`xI^;AtsdIVxZ*4qMSr3)g)-BBq69w26eDQLa?VpkVJ~Z?MO$0 jOAi?o8J+`$#&zC2GgcbP0l+XkKq}F4$ literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/packages/desktop/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b0f510364e567b84ba8d6bef1a231ea64dd5db3c GIT binary patch literal 281 zcmV+!0p|XRP)>;!W0gEY38h00000NkvXXu0mjf-`{vu literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png b/packages/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..3ec5b63e31c309aabb12cd94313998f9b457df52 GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtGEW!BkcwMxZ*CN9P!M2oD0p$G z&S&k_D|Ks}r3KnuYD+vl^LAEF(qH*Gn1LaW?abwE`(=wFkH_pjJ+XPaLtEUT>qWKs zY>W2o%NGHfh6N~G4f6@-Hs!Us=FVdQ&MBb@ E0E?(Nr2qf` literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png b/packages/desktop/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..efcb934e5f9c754d4f6a540e77a67efbd3c3d51e GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^IUvlz1|<8_!p{P!9iA?ZAr-gYUNjVBFyLU=$d~cD ztDf-%gLJ|4=^r}(T=h@q;%?xa(ZDEdz{sqYz{KWrfQ4s91E+)mP$Yp#E#Ux*&jFYM qOcAVF@EZctf-n{)g0T124F-WO7A;@qb74R~FnGH9xvXQrL>aleT>00000NkvXXu0mjfw7q#u literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png b/packages/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..74628c0177e5c146d69ba56c70ee93b5fed69fd4 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGok3C%+Ln>~)y}OaO*@4F)P=1&0 zjrM7gnK#=l6Ifd|tZDxK+oaA=Woq?`EqN>q3>*v$j0_7H8LvIH_-}V4cmD0m=gpkg zAI)Hk=QfnA^DBS;R5j+#liTsTSQ-Q2V4*;e;Q$9i zi?q?i;w3&nv*Rq1pBjo}UjLGFfI~Wg`%|9hu4Pu2OhbQ)vOw+o;Ua$8R5e?aMYEIv O2s~Z=T-G@yGywo-*-FF! literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/packages/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..a9786bd56afea3ce494a26d2fefd531efd54fc49 GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^H$a$!4M=t>=)PrOU_9;V;uunK>+NMjUIqgWhJ$<= zue<6QUoeR3Jn=iEF8_12{01czhUUhDAbcR90f-X}K-fS6ge7=Dn1>C9*_e6Q*qECc zff!Q@c5O&nuxmrM31J(OHe{RdIS`@+j{_k#q5BKNra>7L&9m8RSXpmPv+0} literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png b/packages/desktop/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..b4ceea5f3780289e3bb2a8a8e46103b7176b47e9 GIT binary patch literal 488 zcmVP)4!R?2$GECTvZUy^T-=wG_ONN>qPf0F8EY7a;5DZ6pn1>D^fvi||n-AE*ImTVuD^(%h2VqCG4z9s-G7cAMf@y;B7PQvGhosgVE3P|QxQK4K?|DD zg6#h5T)+X{9borg>jDlqT+Y>kw4YoX;()FWu>0?E0S7pQ0Z`q}0R8{IbASW1AOI8q z04M+ePyhhnB`p0W+;ygc7Nh_GKmh=N0ssI7z}BB6y^I~VjW^%`EeHVB@oJ)T;GXd| z9MJiCIu~3&+=&Am!dlRw4drIbalnLs)aHWgCM$BllxZnkaLruN+93vH@=#YTXxh*| zE;v`8+9{D};ymfvEf#9pFmGqTV_`eRdYeLsgZYvKy(Ml-=9$xuvN-B~4YHutaT%+A`&v1Go}M*B=7@nt8aI e2!I0MvGoU09?OC`#F2ym000030thJq0Svo=iWCUzcXH@s0GbIjj6BnS z>?-=wnE7sV@?kchqdGFm6}~U{Z)F@V-SOLef^N$15Ox)%k3eG4jgKar9xjECZ<@;g vvCvt4@sItS(@aV~CvX7W2@NfXi;r06biB5cPY~~nV*mnAS3j3^P6ubcm}Hj?3t=>BFfIPF-#Of&?>aSZl_gf ngX58gLB5EEhG9+}ch?k%^0RjpzOUg1<}U_MS3j3^P6rbY*a2NDkj{+vDj`}+39 zAFQo4<4%A6oU1Mn>0uhV;LPUBzRTvCq)2H8Ea$$n%INJ8#Y+;6YIlRe1vAz8Cf?$D zq8L{WKdy30t-ml|@>V2Ntp$ebASnYF^6PhZ} zVPmVx^=X2}R);4qbpt1~yJ)g1o#*NNlc@Mf)T8!Uh{g%$MJ7xW)91OYYn-sy;g#`b zC!oHW23O`9e4QD)P=WtkO`jT1wwh0Eh)3gwWe%?vJ8`v`vIfbE1}Uu3obYSK1g6B# z+G|&sCq6sfqbcAc!R0sOr%^H&i*Q?$aN52zGnfvx06i^G@IdJntI5C54vh(ifLvfu zKte;nK|x38#C3@q=W4{Ky}bLxAW;D*1P&?&P-qEow44o>oW0(-;07~m6DKoJXh%nx zVsG>O{XmlyfA0Tjn*7WgXlTHXRPD4gHDD*~|8%KmratSTTi5GWPxz%Fa81;s^@@Ar zhHVa7OYFE>wz38(eznvU=uA7Ed}u@2p^%KS+Bh{J_Y{!3RC5B?+12MyvnpNGsniqf za4CLL$lEf9HE5ya*PS5>LSLspFKYC-5_m=$4DRvzwkI&D4oj8WmdKI;Vst0Be&lkpKVy literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/packages/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..ec9f7fa9762fa7bc51ffd2241f2f5a1cc2f25f85 GIT binary patch literal 566 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE4M+yv$zf+;VEpUp;uunK>+P+Byv+tY4i}Fk zaesSwYE8_|cFTnJX)P{w`3+)Q{~4}``xzNFNYWc>FS-If1z+LiNk6%@RK!E%;hk zT@gJ0Z|~xHxi5D6`U!&km)0%cA|UaW?@%t+(fUS=ctTkD(ndMa?<%|1nLEJrz~JfX K=d#Wzp$P!S8-_Fh literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/packages/desktop/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd52220edfb7c9c509e9e6c69d4b986dcd71dac GIT binary patch literal 1357 zcmeAS@N?(olHy`uVBq!ia0y~yVB7%09Be?56MhC-3=FIyo-U3d6}R4AHRNS*;5cwV z{=zryf2<3bLkuR|@qBUVMEqZd2QwxxFfcPi(18OC5M*G$07pDL3=o8&3aA#hDxis& z#=*@3GBAvTn+0UR6=JBuYAKbCgIPN2hhZ8ID$sO3gcB28(KAI?3v~e_S;wE3l~yGL!UA3W|H(wz70% zDKiSI?LkCViWnuKj!6%#A6sE+C9Y8xq$O_IY(BPGEzCdtxZj2Io$uUxzQZ}5lB}VX z3zYysYm?Mz@-4a!Mar1=?tnXhLZ?-4N-umf)Z1#pS21ocE+_bYXgib9c*-lECu^F- z!W&!t1n0=NDyDiJ_q>Ni02tsv00j(4xsTbwXG6b=qmN8PMH}`UbxhvBAA=V*YB#}E zWgx{38#!b>T?z&rfm0j(C{9vy$mVl-nGAtTX2GtS6907RLQy?N?DWs_=cQiF7U(Zn z+0G^no76odQ<7_*&r4c!Kq=9eRGAC?UF0^*c!~HQsER%bM%CUqiBf8nsLB%T?tYni z^^TdCC&ZvGRj2QQe$6%mTT&TXrw~1DKQwpUrX&;*YWH#)B+PIs`EtoKetl%H3h$kEk!3+@v=fVju9{j z1Nw$hn5Gb*&~CiqdC)Dn4DK?S10H6%UPjr<^SV3w$fmdzVNVEG!CCxY0UG)oXZk!h zKPt%Cew#!r1p ztC$6A&i1c+`K4Cw;}8*!`yFNi^m60k#Zj#2lTNl|A2x5NETZd9nZ$ec>$0K&PSm!L zh|K6ow!Lz^l^dAP^W!O%Wxn!eh7q4(u!w9uC$k{ zln-03L5R5D;hKlVEv0y(zy}c-p2STyaQWxk!USbf}45C#3u%|cEKC5i9y8IHYzK`yO_4n)elH3 zY0yCs6^oT|62Td4K8X4gc*=dB4tT`t&=m&Pp-LB2%zKy&g5CM=HgGT;cJS=p>T}%E Ryc~JMK%0=Pz7sDPegiE2LE8WT literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/android/values/ic_launcher_background.xml b/packages/desktop/src-tauri/icons/android/values/ic_launcher_background.xml new file mode 100644 index 0000000..ea9c223 --- /dev/null +++ b/packages/desktop/src-tauri/icons/android/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #fff + \ No newline at end of file diff --git a/packages/desktop/src-tauri/icons/icon.icns b/packages/desktop/src-tauri/icons/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..6c42bba20247f82376670dd7bd875231f70165ec GIT binary patch literal 12668 zcmeHN?MqWp7=P|I=d@`#E9^yD6c|Xb>kCaNU&2hkXhonOB5n+1m)6VL7rBUTMMMRu z6n%BL`uo^+`Hv&yT`j-wrj%9y&rb&*>j%r?Dzbh zbDrni@vg%@0Jfd?m6ia&@=()EQ>bpHE;K$f?sFbG2*6lEX@2o8wiLk7dwN&n&YbMk z*@#n4Lw)TY#0HxTSj_mb?^s_e3ULj!HGA7ez74YsI4r?|LidNWoy=!2I_*6}S9|VH zGesv&9QYY9Ljk0!kvdIt7EzU{Lm+jU237@Ln}wfSkBlJYpkYU2ZU1)eIPZ~y*BNS( z-xC>`T9nGewrh|yBtos!6m;Rr*553+iiHB4bH`u0c6^h z8JGdLK|?qLn`|4N1~7k$WMFS%GO+yijW(hDdvg_xUg!p}0%l(TMnJbi5L=kUIY3Oz z;(Vo1JUU52+N0u8n@D}}?Zi=06$yz)!SFK_A$9O5LhqjtwE#CVPAKZ}%hopiP>`U+c>hA=fyDKYiuz8!e z<+0abvMjS#`+-TKF`BvL!EK{(zQwQ`=ad_Yb?M4_rJ*L2GKDMa&cfmoD3lp7^c|ar z?>69WuKVj5>D|VrQCn73$Jm_?91`T$BW_|*9WJI5Xkz6Zju5E`S8a-QYyujk**Q^E zB%Z29nSfr(wP2yyaxKa=U=fBzC*@jz4$Eq=T#Ir}B!`RvahrN6*8()9i0CwhCn!at zu$cYg>dlEAaVbqBoyZ&ozf?k0FQ93piv(79g6J$9(aZiKO*PIuh<+s2@eL> z4NVo#W?V6Px{nt1@_3AVX@#u-j2u|~j04O;JWT$N4_131Su29M#xKuJ!nF-gIKb;K GW`6+jbHv#I literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/icon.ico b/packages/desktop/src-tauri/icons/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..30b6f3a03a4cd5200f9641ab3f4f5a1794cc3c9a GIT binary patch literal 1982 zcmZQzU}RupP*7k10tJSLKr#)81q2}c)j-Ofk%2)%0>VEIq&@-p1_ltmG?2ZMiGjhv z0m2Ui@~<$1*dU<5FcT=J%F4jd8Q|y6%O%AH6y){va0voS0u^wu0a?XWRbPPA3Qrfu zkP61P2bdSAL{2;Q@qhWd-Vu97qx8kFpyR(=FNTgy{sl0ZNnx zU~hyo{cHzv9#QIz?~6X|m!A6n?utL}-JaH)YyICH`15}6ssDK)|H>B+0;xaB<%gNA z40krnArLeUKzRpn(5%WVyvM-6C_!n^{9p9xKQL(SulV!d?dgAD(CiQV`5zcG`62)6 z7Y|vfKgx$zGgqbZaA)HWP+&O+EI7dd8dJ0aSY$FKfCKc_+bf2Qz(japgKWm_?s~=- z49pe^6E7^Dxc?WUdMir;Lj$O|m0+M2gL)>xT{LPW^+JGpCT);xyvkPf!zTY0a>4`v D&|2cx literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/icon.png b/packages/desktop/src-tauri/icons/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..08d1870b166d341ac13c34f830f2e266b8b1302b GIT binary patch literal 1816 zcmeAS@N?(olHy`uVBq!ia0y~yU;;9k7&zE~)R&4YzZe+U?t8j8hE&{od(DuM!GPny z2HA|;-Svzw7=&w7gsMzGh1)Ycm@kLA_B<~MdVv^Jhf oxN;zn*_~I$wBX8tg-Hqw>#dkhRq=C10aY`2y85}Sb4q9e0PY(Z%K!iX literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/packages/desktop/src-tauri/icons/ios/AppIcon-20x20@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0d43742e592d8da252130f71540e997b47a6b412 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEHl8kyAr-gYo-^cSFyLS?;M?-? v-2R4_4AK*}aLrm@cRWe*G$$8U5XZ|GQNk>hot~)%G>5^{)z4*}Q$iB}OvxL3 literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-20x20@2x.png b/packages/desktop/src-tauri/icons/ios/AppIcon-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0d43742e592d8da252130f71540e997b47a6b412 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEHl8kyAr-gYo-^cSFyLS?;M?-? v-2R4_4AK*}aLrm@cRWe*G$$8U5XZ|GQNk>hot~)%G>5^{)z4*}Q$iB}OvxL3 literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-20x20@3x.png b/packages/desktop/src-tauri/icons/ios/AppIcon-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..605df5599e77ee2d690750cfb172c7c1a7a360ad GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^HXzKw1|+Ti+$;i8QJyZ2Ar-gYo>ydKFyLS?V7a;B vy?lergom@%9{d#QFEgpIX9GFl!+h2YDa={fsc&xrZDH_q^>bP0l+XkK_iI8I literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-29x29@1x.png b/packages/desktop/src-tauri/icons/ios/AppIcon-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..cb4fc35272f24da104c38a59f369809795d6d361 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^vLMXC1|-8Kr}G0T15X#nkcwMx&l>VF7;rEc@NM~c zZhyl|2_=skm!&f1?b4r?TB9)4YiZER5G^3(%==<5)4LyR&kTWj89ZJ6T-G@yGywp7 CY#?j^ literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/packages/desktop/src-tauri/icons/ios/AppIcon-29x29@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..24b59991902a0ca98e734e5edf4945fd35b51739 GIT binary patch literal 143 zcmeAS@N?(olHy`uVBq!ia0vp^Rv^s51|%Qu_R;`SVV*9IAr-gYo;T!WFyLS?;M?-? u+%LgxO;hPT9;`)AmBQD>JUKPBJ7#CmMD1|BqNk@^u?Xxufu;f|pe>H91u6hE h4{8QNU|md{Ovpp#Yt4c-M}dxF@O1TaS?83{1OSV{O^^Tp literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-40x40@1x.png b/packages/desktop/src-tauri/icons/ios/AppIcon-40x40@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..0d43742e592d8da252130f71540e997b47a6b412 GIT binary patch literal 117 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEHl8kyAr-gYo-^cSFyLS?;M?-? v-2R4_4AK*}aLrm@cRWe*G$$8U5XZ|GQNk>hot~)%G>5^{)z4*}Q$iB}OvxL3 literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-40x40@2x-1.png b/packages/desktop/src-tauri/icons/ios/AppIcon-40x40@2x-1.png new file mode 100644 index 0000000000000000000000000000000000000000..cfc2463f21ec8d9215be1ab8c46c46ee2b840cd7 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r51|<6gKdl8)jh-%!Ar-gYUNGckFyLU=Ae(W! zyPoj{1AoirsTWSf|Bc{gWn$$L>2PRdVpR%Q;Lyk+q7k4#P>4xT1E`pVOGHBesFBMB fs1d7BMLNUhV&+{xndfi-9mC-1>gTe~DWM4f)ch|C literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-40x40@2x.png b/packages/desktop/src-tauri/icons/ios/AppIcon-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..cfc2463f21ec8d9215be1ab8c46c46ee2b840cd7 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^0U*r51|<6gKdl8)jh-%!Ar-gYUNGckFyLU=Ae(W! zyPoj{1AoirsTWSf|Bc{gWn$$L>2PRdVpR%Q;Lyk+q7k4#P>4xT1E`pVOGHBesFBMB fs1d7BMLNUhV&+{xndfi-9mC-1>gTe~DWM4f)ch|C literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-40x40@3x.png b/packages/desktop/src-tauri/icons/ios/AppIcon-40x40@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..8686091da22f03d9396a165edf9c8ece1d564ad9 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{_`^PVn_Ar-gYUUU>>U|?ZzVz`zYd%wh?Q5X6Q>WkdrbUX?lrU}hq# rY$`;iLpKL@fy}C&lp5B!ZqpNeJlCB!V@tXqEm*%8L!4 z(wmgjO_J$AvxzjEl)xCx>FAje94Uh!7DsdXpv~!{Nd#0FVH7i1;|rsC1I}6)dhry6 zq~%2+Y%Zgk>BJjOLST&MbgY3zyEH<4ERN=MU|0>xoSuNyVFQrSN0SIzOe8RPfJCt7 zY3!n-IUPN)@T6mmz(UuX01AD|0~%rvjSR=*M#^1Iis7UL^k_~8B`kWSKT={5tQNyz nc;c26!|@n{-Ad{kejts(&QhpqX-4Be1|aZs^>bP0l+XkKM_U<5 literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-60x60@2x.png b/packages/desktop/src-tauri/icons/ios/AppIcon-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8686091da22f03d9396a165edf9c8ece1d564ad9 GIT binary patch literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{_`^PVn_Ar-gYUUU>>U|?ZzVz`zYd%wh?Q5X6Q>WkdrbUX?lrU}hq# rFM|Wefdldv zzG?qsUBGN(Fv*(JSGoRcv$7Kt4{sZrbMrz&6A39WGdaTm!aQ~%0mAHEco512s)I1W vT0l&y=stLX61%CS8y*Ct_#0|>+g`?#VXR&b>qJz6q0ivy>gTe~DWM4f{FRK5 literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-76x76@1x.png b/packages/desktop/src-tauri/icons/ios/AppIcon-76x76@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..1cbd58dcd69cd7709493ee377a5d4aa954f0df0c GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^J|N7&1|*M957Y)y)t)YnAr-gYUNGckFyLU=Ae(W! zyPoj{1NR=4wJmP{ULB9p5K!}(VUWln45C^%5tPIsFb_iUB!YPms?7k*gHX;u%|JN_ jr3fbP0l+XkKwahpE literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-76x76@2x.png b/packages/desktop/src-tauri/icons/ios/AppIcon-76x76@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7edf30a4e2b24e334cb8a92c4d6ed65bd0022cf0 GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^GeDSw4M<8HQcz@IVASw*aSW-r_4bmXAcFx1!$!W0 z*Io6DFBn7(RE7T8eG0da5E4o-;9+AsoFKu&({|86LV~9`(ZE20jTuOxi8lhJi4;Eo zG_DzodMx5V>)Q^ZiK{UJ9fU;!Xg|6*%)La2qxcU=J?+EWKaMA literal 0 HcmV?d00001 diff --git a/packages/desktop/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/packages/desktop/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b11e359d88bff21f58b0846aeeeef051c09fff0c GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^%R!if4M>)V`MhCZVD#~HaSW-r_4bk>FM|Wefdldv zzG?qsUBDb8&}Pl)t6cxJx!H;74Ck{Wa}xZ36iacEpMg4%YO*v`pCJsS4$he&e5Mmf zf#pHU!15$00~({ baseUrl, headers }); + return createClient({ baseUrl, headers, fetch: httpFetch }); } export const client = { diff --git a/src/api/keys.ts b/packages/web/src/api/keys.ts similarity index 78% rename from src/api/keys.ts rename to packages/web/src/api/keys.ts index dcde554..87d3572 100644 --- a/src/api/keys.ts +++ b/packages/web/src/api/keys.ts @@ -6,7 +6,8 @@ export const QK = { peers: (wsId: string, page: number, size: number) => ["peers", wsId, page, size] as const, peer: (wsId: string, pId: string) => ["peer", wsId, pId] as const, - peerRepresentation: (wsId: string, pId: string) => ["peer-representation", wsId, pId] as const, + peerRepresentation: (wsId: string, pId: string, target?: string) => + ["peer-representation", wsId, pId, target] as const, peerCard: (wsId: string, pId: string) => ["peer-card", wsId, pId] as const, peerContext: (wsId: string, pId: string) => ["peer-context", wsId, pId] as const, peerSessions: (wsId: string, pId: string, page: number, size: number) => @@ -19,11 +20,15 @@ export const QK = { sessionSummaries: (wsId: string, sId: string) => ["session-summaries", wsId, sId] as const, sessionContext: (wsId: string, sId: string) => ["session-context", wsId, sId] as const, sessionPeers: (wsId: string, sId: string) => ["session-peers", wsId, sId] as const, - peerConfig: (wsId: string, sId: string, pId: string) => - ["peer-config", wsId, sId, pId] as const, + peerConfig: (wsId: string, sId: string, pId: string) => ["peer-config", wsId, sId, pId] as const, - conclusions: (wsId: string, filters: Record, page: number, size: number) => - ["conclusions", wsId, filters, page, size] as const, + conclusions: ( + wsId: string, + filters: Record, + page: number, + size: number, + reverse?: boolean, + ) => ["conclusions", wsId, filters, page, size, reverse] as const, conclusionsQuery: (wsId: string, q: string, filters: Record) => ["conclusions-query", wsId, q, filters] as const, diff --git a/src/api/queries.ts b/packages/web/src/api/queries.ts similarity index 87% rename from src/api/queries.ts rename to packages/web/src/api/queries.ts index 282f0b6..d46185b 100644 --- a/src/api/queries.ts +++ b/packages/web/src/api/queries.ts @@ -1,4 +1,4 @@ -import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query"; +import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { client } from "./client"; import { QK } from "./keys"; @@ -18,8 +18,7 @@ export function useWorkspaces(page = 1, pageSize = 20) { params: { query: { page, page_size: pageSize } }, body: {}, }); - if (error) err(error); - return data!; + return data ?? err(error); }, }); } @@ -31,8 +30,7 @@ export function useWorkspace(workspaceId: string) { const { data, error } = await client.current.POST("/v3/workspaces", { body: { id: workspaceId, metadata: {} }, }); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId), }); @@ -42,12 +40,11 @@ export function useUpdateWorkspace(workspaceId: string) { const qc = useQueryClient(); return useMutation({ mutationFn: async (body: { metadata?: Record }) => { - const { data, error } = await client.current.PUT( - "/v3/workspaces/{workspace_id}", - { params: { path: { workspace_id: workspaceId } }, body }, - ); - if (error) err(error); - return data!; + const { data, error } = await client.current.PUT("/v3/workspaces/{workspace_id}", { + params: { path: { workspace_id: workspaceId } }, + body, + }); + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: ["workspace", workspaceId] }); @@ -79,10 +76,10 @@ export function useScheduleDream(workspaceId: string) { dream_type: "omni"; session_id?: string | null; }) => { - const { error } = await client.current.POST( - "/v3/workspaces/{workspace_id}/schedule_dream", - { params: { path: { workspace_id: workspaceId } }, body }, - ); + const { error } = await client.current.POST("/v3/workspaces/{workspace_id}/schedule_dream", { + params: { path: { workspace_id: workspaceId } }, + body, + }); if (error) err(error); }, }); @@ -96,8 +93,7 @@ export function useQueueStatus(workspaceId: string) { "/v3/workspaces/{workspace_id}/queue/status", { params: { path: { workspace_id: workspaceId } } }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId), refetchInterval: 10_000, @@ -108,15 +104,11 @@ export function useSearchWorkspace(workspaceId: string, query: string, enabled = return useQuery({ queryKey: QK.workspaceSearch(workspaceId, query), queryFn: async () => { - const { data, error } = await client.current.POST( - "/v3/workspaces/{workspace_id}/search", - { - params: { path: { workspace_id: workspaceId } }, - body: { query, limit: 20 }, - }, - ); - if (error) err(error); - return data!; + const { data, error } = await client.current.POST("/v3/workspaces/{workspace_id}/search", { + params: { path: { workspace_id: workspaceId } }, + body: { query, limit: 20 }, + }); + return data ?? err(error); }, enabled: enabled && Boolean(workspaceId) && Boolean(query), }); @@ -135,8 +127,7 @@ export function usePeers(workspaceId: string, page = 1, pageSize = 20) { body: {}, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId), }); @@ -146,15 +137,11 @@ export function usePeer(workspaceId: string, peerId: string) { return useQuery({ queryKey: QK.peer(workspaceId, peerId), queryFn: async () => { - const { data, error } = await client.current.POST( - "/v3/workspaces/{workspace_id}/peers", - { - params: { path: { workspace_id: workspaceId } }, - body: { id: peerId, metadata: {} }, - }, - ); - if (error) err(error); - return data!; + const { data, error } = await client.current.POST("/v3/workspaces/{workspace_id}/peers", { + params: { path: { workspace_id: workspaceId } }, + body: { id: peerId, metadata: {} }, + }); + return data ?? err(error); }, enabled: Boolean(workspaceId) && Boolean(peerId), }); @@ -168,8 +155,7 @@ export function useUpdatePeer(workspaceId: string, peerId: string) { "/v3/workspaces/{workspace_id}/peers/{peer_id}", { params: { path: { workspace_id: workspaceId, peer_id: peerId } }, body }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: ["peer", workspaceId, peerId] }); @@ -178,19 +164,18 @@ export function useUpdatePeer(workspaceId: string, peerId: string) { }); } -export function usePeerRepresentation(workspaceId: string, peerId: string) { +export function usePeerRepresentation(workspaceId: string, peerId: string, target?: string) { return useQuery({ - queryKey: QK.peerRepresentation(workspaceId, peerId), + queryKey: QK.peerRepresentation(workspaceId, peerId, target), queryFn: async () => { const { data, error } = await client.current.POST( "/v3/workspaces/{workspace_id}/peers/{peer_id}/representation", { params: { path: { workspace_id: workspaceId, peer_id: peerId } }, - body: { max_conclusions: 20 }, + body: { max_conclusions: 20, ...(target ? { target } : {}) }, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId) && Boolean(peerId), }); @@ -204,8 +189,7 @@ export function usePeerCard(workspaceId: string, peerId: string) { "/v3/workspaces/{workspace_id}/peers/{peer_id}/card", { params: { path: { workspace_id: workspaceId, peer_id: peerId } } }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId) && Boolean(peerId), }); @@ -222,8 +206,7 @@ export function useSetPeerCard(workspaceId: string, peerId: string) { body: { peer_card: peerCard }, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: QK.peerCard(workspaceId, peerId) }); @@ -239,8 +222,7 @@ export function usePeerContext(workspaceId: string, peerId: string) { "/v3/workspaces/{workspace_id}/peers/{peer_id}/context", { params: { path: { workspace_id: workspaceId, peer_id: peerId } } }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId) && Boolean(peerId), }); @@ -260,8 +242,7 @@ export function usePeerSessions(workspaceId: string, peerId: string, page = 1, p body: {}, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId) && Boolean(peerId), }); @@ -277,8 +258,7 @@ export function useSearchPeer(workspaceId: string, peerId: string) { body: { query, limit: 20 }, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, }); } @@ -294,8 +274,7 @@ export function useChat(workspaceId: string, peerId: string) { body: { query: message, stream: false, reasoning_level: "low" }, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: ["peer-context", workspaceId, peerId] }); @@ -319,8 +298,7 @@ export function useSessions(workspaceId: string, page = 1, pageSize = 20) { body: {}, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId), }); @@ -334,8 +312,7 @@ export function useUpdateSession(workspaceId: string, sessionId: string) { "/v3/workspaces/{workspace_id}/sessions/{session_id}", { params: { path: { workspace_id: workspaceId, session_id: sessionId } }, body }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: ["sessions", workspaceId] }); @@ -368,8 +345,7 @@ export function useCloneSession(workspaceId: string) { "/v3/workspaces/{workspace_id}/sessions/{session_id}/clone", { params: { path: { workspace_id: workspaceId, session_id: sessionId } } }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: ["sessions", workspaceId] }); @@ -387,8 +363,7 @@ export function useSearchSession(workspaceId: string, sessionId: string) { body: { query, limit: 20 }, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, }); } @@ -412,8 +387,7 @@ export function useSessionMessages( body: {}, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId) && Boolean(sessionId), }); @@ -432,8 +406,7 @@ export function useCreateMessages(workspaceId: string, sessionId: string) { body: { messages }, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: ["session-messages", workspaceId, sessionId] }); @@ -464,8 +437,7 @@ export function useUpdateMessage(workspaceId: string, sessionId: string) { body, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: ["session-messages", workspaceId, sessionId] }); @@ -483,8 +455,7 @@ export function useSessionPeers(workspaceId: string, sessionId: string) { "/v3/workspaces/{workspace_id}/sessions/{session_id}/peers", { params: { path: { workspace_id: workspaceId, session_id: sessionId } } }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId) && Boolean(sessionId), }); @@ -506,8 +477,7 @@ export function useAddPeersToSession(workspaceId: string, sessionId: string) { body: peers, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: ["session-peers", workspaceId, sessionId] }); @@ -527,8 +497,7 @@ export function useSetSessionPeers(workspaceId: string, sessionId: string) { body: peers, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: ["session-peers", workspaceId, sessionId] }); @@ -569,8 +538,7 @@ export function usePeerConfig(workspaceId: string, sessionId: string, peerId: st }, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId) && Boolean(sessionId) && Boolean(peerId), }); @@ -589,8 +557,7 @@ export function useSetPeerConfig(workspaceId: string, sessionId: string, peerId: body: config, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: QK.peerConfig(workspaceId, sessionId, peerId) }); @@ -608,8 +575,7 @@ export function useSessionSummaries(workspaceId: string, sessionId: string) { "/v3/workspaces/{workspace_id}/sessions/{session_id}/summaries", { params: { path: { workspace_id: workspaceId, session_id: sessionId } } }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId) && Boolean(sessionId), }); @@ -623,8 +589,7 @@ export function useSessionContext(workspaceId: string, sessionId: string) { "/v3/workspaces/{workspace_id}/sessions/{session_id}/context", { params: { path: { workspace_id: workspaceId, session_id: sessionId } } }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId) && Boolean(sessionId), }); @@ -637,22 +602,22 @@ export function useConclusions( filters: Record = {}, page = 1, pageSize = 20, + reverse = false, ) { return useQuery({ - queryKey: QK.conclusions(workspaceId, filters, page, pageSize), + queryKey: QK.conclusions(workspaceId, filters, page, pageSize, reverse), queryFn: async () => { const { data, error } = await client.current.POST( "/v3/workspaces/{workspace_id}/conclusions/list", { params: { path: { workspace_id: workspaceId }, - query: { page, page_size: pageSize }, + query: { page, page_size: pageSize, reverse }, }, body: filters, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: Boolean(workspaceId), }); @@ -674,8 +639,7 @@ export function useQueryConclusions( body: { query, top_k: 10, ...filters }, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, enabled: enabled && Boolean(workspaceId) && Boolean(query), }); @@ -697,8 +661,7 @@ export function useCreateConclusion(workspaceId: string) { body: { conclusions: [conclusion] }, }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: ["conclusions", workspaceId] }); @@ -733,12 +696,10 @@ export function useWebhooks(workspaceId: string) { return useQuery({ queryKey: QK.webhooks(workspaceId), queryFn: async () => { - const { data, error } = await client.current.GET( - "/v3/workspaces/{workspace_id}/webhooks", - { params: { path: { workspace_id: workspaceId } } }, - ); - if (error) err(error); - return data!; + const { data, error } = await client.current.GET("/v3/workspaces/{workspace_id}/webhooks", { + params: { path: { workspace_id: workspaceId } }, + }); + return data ?? err(error); }, enabled: Boolean(workspaceId), }); @@ -748,15 +709,11 @@ export function useCreateWebhook(workspaceId: string) { const qc = useQueryClient(); return useMutation({ mutationFn: async (url: string) => { - const { data, error } = await client.current.POST( - "/v3/workspaces/{workspace_id}/webhooks", - { - params: { path: { workspace_id: workspaceId } }, - body: { url }, - }, - ); - if (error) err(error); - return data!; + const { data, error } = await client.current.POST("/v3/workspaces/{workspace_id}/webhooks", { + params: { path: { workspace_id: workspaceId } }, + body: { url }, + }); + return data ?? err(error); }, onSuccess: () => { qc.invalidateQueries({ queryKey: QK.webhooks(workspaceId) }); @@ -791,8 +748,7 @@ export function useTestWebhook(workspaceId: string) { "/v3/workspaces/{workspace_id}/webhooks/test", { params: { path: { workspace_id: workspaceId } } }, ); - if (error) err(error); - return data!; + return data ?? err(error); }, }); } @@ -803,8 +759,7 @@ export function useCreateKey() { return useMutation({ mutationFn: async () => { const { data, error } = await client.current.POST("/v3/keys", {}); - if (error) err(error); - return data!; + return data ?? err(error); }, }); } diff --git a/packages/web/src/api/schema.d.ts b/packages/web/src/api/schema.d.ts new file mode 100644 index 0000000..e53c5b5 --- /dev/null +++ b/packages/web/src/api/schema.d.ts @@ -0,0 +1,3324 @@ +/** + * This file was auto-generated by openapi-typescript. + * Do not make direct changes to the file. + */ + +export interface paths { + "/v3/workspaces": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get Or Create Workspace + * @description Get a Workspace by ID. + * + * If workspace_id is provided as a query parameter, it uses that (must match JWT workspace_id). + * Otherwise, it uses the workspace_id from the JWT. + */ + post: operations["get_or_create_workspace_v3_workspaces_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/list": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get All Workspaces + * @description Get all Workspaces, paginated with optional filters. + */ + post: operations["get_all_workspaces_v3_workspaces_list_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** + * Update Workspace + * @description Update Workspace metadata and/or configuration. + */ + put: operations["update_workspace_v3_workspaces__workspace_id__put"]; + post?: never; + /** + * Delete Workspace + * @description Delete a Workspace. This accepts the deletion request and processes it in the background, + * permanently deleting all peers, messages, conclusions, and other resources associated + * with the workspace. + * + * Returns 409 Conflict if the workspace contains active sessions. + * Delete all sessions first, then delete the workspace. + * + * This action cannot be undone. + */ + delete: operations["delete_workspace_v3_workspaces__workspace_id__delete"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/search": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Search Workspace + * @description Search messages in a Workspace using optional filters. Use `limit` to control the number of + * results returned. + */ + post: operations["search_workspace_v3_workspaces__workspace_id__search_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/queue/status": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Queue Status + * @description Get the processing queue status for a Workspace, optionally scoped to an observer, sender, + * and/or session. + * + * Only tracks user-facing task types (representation, summary, dream). + * Internal infrastructure tasks (reconciler, webhook, deletion) are excluded. + * Note: completed counts reflect items since the last periodic queue cleanup, + * not lifetime totals. + */ + get: operations["get_queue_status_v3_workspaces__workspace_id__queue_status_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/schedule_dream": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Schedule Dream + * @description Manually schedule a dream task for a specific collection. + * + * This endpoint bypasses all automatic dream conditions (document threshold, + * minimum hours between dreams) and schedules the dream task for a future execution. + * + * Currently this endpoint only supports scheduling immediate dreams. In the future, + * users may pass a cron-style expression to schedule dreams at specific times. + */ + post: operations["schedule_dream_v3_workspaces__workspace_id__schedule_dream_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/peers/list": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get Peers + * @description Get all Peers for a Workspace, paginated with optional filters. + */ + post: operations["get_peers_v3_workspaces__workspace_id__peers_list_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/peers": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get Or Create Peer + * @description Get a Peer by ID or create a new Peer with the given ID. + * + * If peer_id is provided as a query parameter, it uses that (must match JWT workspace_id). + * Otherwise, it uses the peer_id from the JWT. + */ + post: operations["get_or_create_peer_v3_workspaces__workspace_id__peers_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/peers/{peer_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** + * Update Peer + * @description Update a Peer's metadata and/or configuration. + */ + put: operations["update_peer_v3_workspaces__workspace_id__peers__peer_id__put"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/peers/{peer_id}/sessions": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get Sessions For Peer + * @description Get all Sessions for a Peer, paginated with optional filters. + */ + post: operations["get_sessions_for_peer_v3_workspaces__workspace_id__peers__peer_id__sessions_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/peers/{peer_id}/chat": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Chat + * @description Query a Peer's representation using natural language. Performs agentic search and reasoning to comprehensively + * answer the query based on all latent knowledge gathered about the peer from their messages and conclusions. + */ + post: operations["chat_v3_workspaces__workspace_id__peers__peer_id__chat_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/peers/{peer_id}/representation": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get Representation + * @description Get a curated subset of a Peer's Representation. A Representation is always a subset of the total + * knowledge about the Peer. The subset can be scoped and filtered in various ways. + * + * + * If a session_id is provided in the body, we get the Representation of the Peer scoped to that Session. + * If a target is provided, we get the Representation of the target from the perspective of the Peer. + * If no target is provided, we get the omniscient Honcho Representation of the Peer. + */ + post: operations["get_representation_v3_workspaces__workspace_id__peers__peer_id__representation_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/peers/{peer_id}/card": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Peer Card + * @description Get a peer card for a specific peer relationship. + * + * Returns the peer card that the observer peer has for the target peer if it exists. + * If no target is specified, returns the observer's own peer card. + */ + get: operations["get_peer_card_v3_workspaces__workspace_id__peers__peer_id__card_get"]; + /** + * Set Peer Card + * @description Set a peer card for a specific peer relationship. + * + * Sets the peer card that the observer peer has for the target peer. + * If no target is specified, sets the observer's own peer card. + */ + put: operations["set_peer_card_v3_workspaces__workspace_id__peers__peer_id__card_put"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/peers/{peer_id}/context": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Peer Context + * @description Get context for a peer, including their representation and peer card. + * + * This endpoint returns a curated subset of the representation and peer card for a peer. + * If a target is specified, returns the context for the target from the + * observer peer's perspective. If no target is specified, returns the + * peer's own context (self-observation). + * + * This is useful for getting all the context needed about a peer without + * making multiple API calls. + */ + get: operations["get_peer_context_v3_workspaces__workspace_id__peers__peer_id__context_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/peers/{peer_id}/search": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Search Peer + * @description Search a Peer's messages, optionally filtered by various criteria. + */ + post: operations["search_peer_v3_workspaces__workspace_id__peers__peer_id__search_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/list": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get Sessions + * @description Get all Sessions for a Workspace, paginated with optional filters. + */ + post: operations["get_sessions_v3_workspaces__workspace_id__sessions_list_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get Or Create Session + * @description Get a Session by ID or create a new Session with the given ID. + * + * If Session ID is provided as a parameter, it verifies the Session is in the Workspace. + * Otherwise, it uses the session_id from the JWT for verification. + */ + post: operations["get_or_create_session_v3_workspaces__workspace_id__sessions_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** + * Update Session + * @description Update a Session's metadata and/or configuration. + */ + put: operations["update_session_v3_workspaces__workspace_id__sessions__session_id__put"]; + post?: never; + /** + * Delete Session + * @description Delete a Session and all associated messages. + * + * The Session is marked as inactive immediately and returns 202 Accepted. The actual + * deletion of all related data happens asynchronously via the queue with retry support. + * + * This action cannot be undone. + */ + delete: operations["delete_session_v3_workspaces__workspace_id__sessions__session_id__delete"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}/clone": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Clone Session + * @description Clone a Session, optionally up to a specific message ID. + */ + post: operations["clone_session_v3_workspaces__workspace_id__sessions__session_id__clone_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}/peers": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Session Peers + * @description Get all Peers in a Session. Results are paginated. + */ + get: operations["get_session_peers_v3_workspaces__workspace_id__sessions__session_id__peers_get"]; + /** + * Set Session Peers + * @description Set the Peers in a Session. If a Peer does not yet exist, it will be created automatically. + * + * This will fully replace the current set of Peers in the Session. + */ + put: operations["set_session_peers_v3_workspaces__workspace_id__sessions__session_id__peers_put"]; + /** + * Add Peers To Session + * @description Add Peers to a Session. If a Peer does not yet exist, it will be created automatically. + */ + post: operations["add_peers_to_session_v3_workspaces__workspace_id__sessions__session_id__peers_post"]; + /** + * Remove Peers From Session + * @description Remove Peers by ID from a Session. + */ + delete: operations["remove_peers_from_session_v3_workspaces__workspace_id__sessions__session_id__peers_delete"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}/peers/{peer_id}/config": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Peer Config + * @description Get the configuration for a Peer in a Session. + */ + get: operations["get_peer_config_v3_workspaces__workspace_id__sessions__session_id__peers__peer_id__config_get"]; + /** + * Set Peer Config + * @description Set the configuration for a Peer in a Session. + */ + put: operations["set_peer_config_v3_workspaces__workspace_id__sessions__session_id__peers__peer_id__config_put"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}/context": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Session Context + * @description Produce a context object from the Session. The caller provides an optional token limit which the entire context must fit into. + * If not provided, the context will be exhaustive (within configured max tokens). To do this, we allocate 40% of the token limit + * to the summary, and 60% to recent messages -- as many as can fit. Note that the summary will usually take up less space than + * this. If the caller does not want a summary, we allocate all the tokens to recent messages. + */ + get: operations["get_session_context_v3_workspaces__workspace_id__sessions__session_id__context_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}/summaries": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Session Summaries + * @description Get available summaries for a Session. + * + * Returns both short and long summaries if available, including metadata like + * the message ID they cover up to, creation timestamp, and token count. + */ + get: operations["get_session_summaries_v3_workspaces__workspace_id__sessions__session_id__summaries_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}/search": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Search Session + * @description Search a Session with optional filters. Use `limit` to control the number of results returned. + */ + post: operations["search_session_v3_workspaces__workspace_id__sessions__session_id__search_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}/messages": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Create Messages For Session + * @description Add new message(s) to a session. + */ + post: operations["create_messages_for_session_v3_workspaces__workspace_id__sessions__session_id__messages_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}/messages/upload": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Create Messages With File + * @description Create messages from uploaded files. Files are converted to text and split into multiple messages. + */ + post: operations["create_messages_with_file_v3_workspaces__workspace_id__sessions__session_id__messages_upload_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}/messages/list": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Get Messages + * @description Get all messages for a Session with optional filters. Results are paginated. + */ + post: operations["get_messages_v3_workspaces__workspace_id__sessions__session_id__messages_list_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/sessions/{session_id}/messages/{message_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Get Message + * @description Get a single message by ID from a Session. + */ + get: operations["get_message_v3_workspaces__workspace_id__sessions__session_id__messages__message_id__get"]; + /** + * Update Message + * @description Update the metadata of a message. + * + * This will overwrite any existing metadata for the message. + */ + put: operations["update_message_v3_workspaces__workspace_id__sessions__session_id__messages__message_id__put"]; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/conclusions": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Create Conclusions + * @description Create one or more Conclusions. + * + * Conclusions are logical certainties derived from interactions between Peers. They form the basis of a Peer's Representation. + */ + post: operations["create_conclusions_v3_workspaces__workspace_id__conclusions_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/conclusions/list": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * List Conclusions + * @description List Conclusions using optional filters, ordered by recency unless `reverse` is true. Results are paginated. + */ + post: operations["list_conclusions_v3_workspaces__workspace_id__conclusions_list_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/conclusions/query": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Query Conclusions + * @description Query Conclusions using semantic search. Use `top_k` to control the number of results returned. + */ + post: operations["query_conclusions_v3_workspaces__workspace_id__conclusions_query_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/conclusions/{conclusion_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + /** + * Delete Conclusion + * @description Delete a single Conclusion by ID. + * + * This action cannot be undone. + */ + delete: operations["delete_conclusion_v3_workspaces__workspace_id__conclusions__conclusion_id__delete"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/keys": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * Create Key + * @description Create a new Key + */ + post: operations["create_key_v3_keys_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/webhooks": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * List Webhook Endpoints + * @description List all webhook endpoints, optionally filtered by workspace. + */ + get: operations["list_webhook_endpoints_v3_workspaces__workspace_id__webhooks_get"]; + put?: never; + /** + * Get Or Create Webhook Endpoint + * @description Get or create a webhook endpoint URL. + */ + post: operations["get_or_create_webhook_endpoint_v3_workspaces__workspace_id__webhooks_post"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/webhooks/{endpoint_id}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + post?: never; + /** + * Delete Webhook Endpoint + * @description Delete a specific webhook endpoint. + */ + delete: operations["delete_webhook_endpoint_v3_workspaces__workspace_id__webhooks__endpoint_id__delete"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/v3/workspaces/{workspace_id}/webhooks/test": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * Test Emit + * @description Test publishing a webhook event. + */ + get: operations["test_emit_v3_workspaces__workspace_id__webhooks_test_get"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; +} +export type webhooks = Record; +export interface components { + schemas: { + /** Body_create_messages_with_file_v3_workspaces__workspace_id__sessions__session_id__messages_upload_post */ + Body_create_messages_with_file_v3_workspaces__workspace_id__sessions__session_id__messages_upload_post: { + /** File */ + file: string; + /** Peer Id */ + peer_id: string; + /** Metadata */ + metadata?: string | null; + /** Configuration */ + configuration?: string | null; + /** Created At */ + created_at?: string | null; + }; + /** + * Conclusion + * @description Conclusion response - external view of a document. + */ + Conclusion: { + /** Id */ + id: string; + /** Content */ + content: string; + /** + * Observer Id + * @description The peer who made the conclusion + */ + observer_id: string; + /** + * Observed Id + * @description The peer the conclusion is about + */ + observed_id: string; + /** Session Id */ + session_id?: string | null; + /** + * Created At + * Format: date-time + */ + created_at: string; + }; + /** + * ConclusionBatchCreate + * @description Schema for batch conclusion creation with a max of 100 conclusions. + */ + ConclusionBatchCreate: { + /** Conclusions */ + conclusions: components["schemas"]["ConclusionCreate"][]; + }; + /** + * ConclusionCreate + * @description Schema for creating a single conclusion. + */ + ConclusionCreate: { + /** Content */ + content: string; + /** + * Observer Id + * @description The peer making the conclusion + */ + observer_id: string; + /** + * Observed Id + * @description The peer the conclusion is about + */ + observed_id: string; + /** + * Session Id + * @description A session ID to store the conclusion in, if specified + */ + session_id?: string | null; + }; + /** + * ConclusionGet + * @description Schema for listing conclusions with optional filters. + */ + ConclusionGet: { + /** Filters */ + filters?: { + [key: string]: unknown; + } | null; + }; + /** + * ConclusionQuery + * @description Query parameters for semantic search of conclusions. + */ + ConclusionQuery: { + /** + * Query + * @description Semantic search query + */ + query: string; + /** + * Top K + * @description Number of results to return + * @default 10 + */ + top_k: number; + /** + * Distance + * @description Maximum cosine distance threshold for results + */ + distance?: number | null; + /** + * Filters + * @description Additional filters to apply + */ + filters?: { + [key: string]: unknown; + } | null; + }; + /** DialecticOptions */ + DialecticOptions: { + /** + * Session Id + * @description ID of the session to scope the representation to + */ + session_id?: string | null; + /** + * Target + * @description Optional peer to get the representation for, from the perspective of this peer + */ + target?: string | null; + /** + * Query + * @description Dialectic API Prompt + */ + query: string; + /** + * Stream + * @default false + */ + stream: boolean; + /** + * Reasoning Level + * @description Level of reasoning to apply: minimal, low, medium, high, or max + * @default low + * @enum {string} + */ + reasoning_level: "minimal" | "low" | "medium" | "high" | "max"; + }; + /** DreamConfiguration */ + DreamConfiguration: { + /** + * Enabled + * @description Whether to enable dream functionality. If reasoning is disabled, dreams will also be disabled and this setting will be ignored. + */ + enabled?: boolean | null; + }; + /** + * DreamType + * @description Types of dreams that can be triggered. + * @enum {string} + */ + DreamType: "omni"; + /** HTTPValidationError */ + HTTPValidationError: { + /** Detail */ + detail?: components["schemas"]["ValidationError"][]; + }; + /** Message */ + Message: { + /** Id */ + id: string; + /** Content */ + content: string; + /** Peer Id */ + peer_id: string; + /** Session Id */ + session_id: string; + /** Metadata */ + metadata?: { + [key: string]: unknown; + }; + /** + * Created At + * Format: date-time + */ + created_at: string; + /** Workspace Id */ + workspace_id: string; + /** Token Count */ + token_count: number; + }; + /** + * MessageBatchCreate + * @description Schema for batch message creation with a max of 100 messages + */ + MessageBatchCreate: { + /** Messages */ + messages: components["schemas"]["MessageCreate"][]; + }; + /** + * MessageConfiguration + * @description The set of options that can be in a message DB-level configuration dictionary. + * + * All fields are optional. Message-level configuration overrides all other configurations. + */ + MessageConfiguration: { + /** @description Configuration for reasoning functionality. */ + reasoning?: components["schemas"]["ReasoningConfiguration"] | null; + }; + /** MessageCreate */ + MessageCreate: { + /** Content */ + content: string; + /** Peer Id */ + peer_id: string; + /** Metadata */ + metadata?: { + [key: string]: unknown; + } | null; + configuration?: components["schemas"]["MessageConfiguration"] | null; + /** Created At */ + created_at?: string | null; + }; + /** MessageGet */ + MessageGet: { + /** Filters */ + filters?: { + [key: string]: unknown; + } | null; + }; + /** MessageSearchOptions */ + MessageSearchOptions: { + /** + * Query + * @description Search query + */ + query: string; + /** + * Filters + * @description Filters to scope the search + */ + filters?: { + [key: string]: unknown; + } | null; + /** + * Limit + * @description Number of results to return + * @default 10 + */ + limit: number; + }; + /** MessageUpdate */ + MessageUpdate: { + /** Metadata */ + metadata?: { + [key: string]: unknown; + } | null; + }; + /** Page[Conclusion] */ + Page_Conclusion_: { + /** Items */ + items: components["schemas"]["Conclusion"][]; + /** Total */ + total: number; + /** Page */ + page: number; + /** Size */ + size: number; + /** Pages */ + pages: number; + }; + /** Page[Message] */ + Page_Message_: { + /** Items */ + items: components["schemas"]["Message"][]; + /** Total */ + total: number; + /** Page */ + page: number; + /** Size */ + size: number; + /** Pages */ + pages: number; + }; + /** Page[Peer] */ + Page_Peer_: { + /** Items */ + items: components["schemas"]["Peer"][]; + /** Total */ + total: number; + /** Page */ + page: number; + /** Size */ + size: number; + /** Pages */ + pages: number; + }; + /** Page[Session] */ + Page_Session_: { + /** Items */ + items: components["schemas"]["Session"][]; + /** Total */ + total: number; + /** Page */ + page: number; + /** Size */ + size: number; + /** Pages */ + pages: number; + }; + /** Page[WebhookEndpoint] */ + Page_WebhookEndpoint_: { + /** Items */ + items: components["schemas"]["WebhookEndpoint"][]; + /** Total */ + total: number; + /** Page */ + page: number; + /** Size */ + size: number; + /** Pages */ + pages: number; + }; + /** Page[Workspace] */ + Page_Workspace_: { + /** Items */ + items: components["schemas"]["Workspace"][]; + /** Total */ + total: number; + /** Page */ + page: number; + /** Size */ + size: number; + /** Pages */ + pages: number; + }; + /** Peer */ + Peer: { + /** Id */ + id: string; + /** Workspace Id */ + workspace_id: string; + /** + * Created At + * Format: date-time + */ + created_at: string; + /** Metadata */ + metadata?: { + [key: string]: unknown; + }; + /** Configuration */ + configuration?: { + [key: string]: unknown; + }; + }; + /** PeerCardConfiguration */ + PeerCardConfiguration: { + /** + * Use + * @description Whether to use peer card related to this peer during reasoning process. + */ + use?: boolean | null; + /** + * Create + * @description Whether to generate peer card based on content. + */ + create?: boolean | null; + }; + /** PeerCardResponse */ + PeerCardResponse: { + /** + * Peer Card + * @description The peer card content, or None if not found + */ + peer_card?: string[] | null; + }; + /** PeerCardSet */ + PeerCardSet: { + /** + * Peer Card + * @description The peer card content to set + */ + peer_card: string[]; + }; + /** + * PeerContext + * @description Context for a peer, including representation and peer card. + */ + PeerContext: { + /** + * Peer Id + * @description The ID of the peer + */ + peer_id: string; + /** + * Target Id + * @description The ID of the target peer being observed + */ + target_id: string; + /** + * Representation + * @description A curated subset of the representation of the target peer from the observer's perspective + */ + representation?: string | null; + /** + * Peer Card + * @description The peer card for the target peer from the observer's perspective + */ + peer_card?: string[] | null; + }; + /** PeerCreate */ + PeerCreate: { + /** Id */ + id: string; + /** Metadata */ + metadata?: { + [key: string]: unknown; + } | null; + /** Configuration */ + configuration?: { + [key: string]: unknown; + } | null; + }; + /** PeerGet */ + PeerGet: { + /** Filters */ + filters?: { + [key: string]: unknown; + } | null; + }; + /** PeerRepresentationGet */ + PeerRepresentationGet: { + /** + * Session Id + * @description Optional session ID within which to scope the representation + */ + session_id?: string | null; + /** + * Target + * @description Optional peer ID to get the representation for, from the perspective of this peer + */ + target?: string | null; + /** + * Search Query + * @description Optional input to curate the representation around semantic search results + */ + search_query?: string | null; + /** + * Search Top K + * @description Only used if `search_query` is provided. Number of semantic-search-retrieved conclusions to include in the representation + */ + search_top_k?: number | null; + /** + * Search Max Distance + * @description Only used if `search_query` is provided. Maximum distance to search for semantically relevant conclusions + */ + search_max_distance?: number | null; + /** + * Include Most Frequent + * @description Only used if `search_query` is provided. Whether to include the most frequent conclusions in the representation + */ + include_most_frequent?: boolean | null; + /** + * Max Conclusions + * @description Only used if `search_query` is provided. Maximum number of conclusions to include in the representation + * @default 25 + */ + max_conclusions: number | null; + }; + /** PeerUpdate */ + PeerUpdate: { + /** Metadata */ + metadata?: { + [key: string]: unknown; + } | null; + /** Configuration */ + configuration?: { + [key: string]: unknown; + } | null; + }; + /** + * QueueStatus + * @description Aggregated processing queue status. + * + * Tracks user-facing task types only: representation, summary, and dream. + * Internal infrastructure tasks (reconciler, webhook, deletion) are excluded. + * + * Note: completed_work_units reflects items since the last periodic queue + * cleanup, not lifetime totals. + */ + QueueStatus: { + /** + * Total Work Units + * @description Total work units + */ + total_work_units: number; + /** + * Completed Work Units + * @description Completed work units (since last periodic cleanup) + */ + completed_work_units: number; + /** + * In Progress Work Units + * @description Work units currently being processed + */ + in_progress_work_units: number; + /** + * Pending Work Units + * @description Work units waiting to be processed + */ + pending_work_units: number; + /** + * Sessions + * @description Per-session status when not filtered by session + */ + sessions?: { + [key: string]: components["schemas"]["SessionQueueStatus"]; + } | null; + }; + /** ReasoningConfiguration */ + ReasoningConfiguration: { + /** + * Enabled + * @description Whether to enable reasoning functionality. + */ + enabled?: boolean | null; + /** + * Custom Instructions + * @description TODO: currently unused. Custom instructions to use for the reasoning system on this workspace/session/message. + */ + custom_instructions?: string | null; + }; + /** RepresentationResponse */ + RepresentationResponse: { + /** Representation */ + representation: string; + }; + /** ScheduleDreamRequest */ + ScheduleDreamRequest: { + /** + * Observer + * @description Observer peer name + */ + observer: string; + /** + * Observed + * @description Observed peer name (defaults to observer if not specified) + */ + observed?: string | null; + /** @description Type of dream to schedule */ + dream_type: components["schemas"]["DreamType"]; + /** + * Session Id + * @description Session ID to scope the dream to if specified + */ + session_id?: string | null; + }; + /** Session */ + Session: { + /** Id */ + id: string; + /** Is Active */ + is_active: boolean; + /** Workspace Id */ + workspace_id: string; + /** Metadata */ + metadata?: { + [key: string]: unknown; + }; + /** Configuration */ + configuration?: { + [key: string]: unknown; + }; + /** + * Created At + * Format: date-time + */ + created_at: string; + }; + /** + * SessionConfiguration + * @description The set of options that can be in a session DB-level configuration dictionary. + * + * All fields are optional. Session-level configuration overrides workspace-level configuration, which overrides global configuration. + */ + SessionConfiguration: { + /** @description Configuration for reasoning functionality. */ + reasoning?: components["schemas"]["ReasoningConfiguration"] | null; + /** @description Configuration for peer card functionality. If reasoning is disabled, peer cards will also be disabled and these settings will be ignored. */ + peer_card?: components["schemas"]["PeerCardConfiguration"] | null; + /** @description Configuration for summary functionality. */ + summary?: components["schemas"]["SummaryConfiguration"] | null; + /** @description Configuration for dream functionality. If reasoning is disabled, dreams will also be disabled and these settings will be ignored. */ + dream?: components["schemas"]["DreamConfiguration"] | null; + } & { + [key: string]: unknown; + }; + /** SessionContext */ + SessionContext: { + /** Id */ + id: string; + /** Messages */ + messages: components["schemas"]["Message"][]; + /** @description The summary if available */ + summary?: components["schemas"]["Summary"] | null; + /** + * Peer Representation + * @description A curated subset of a peer representation, if context is requested from a specific perspective + */ + peer_representation?: string | null; + /** + * Peer Card + * @description The peer card, if context is requested from a specific perspective + */ + peer_card?: string[] | null; + }; + /** SessionCreate */ + SessionCreate: { + /** Id */ + id: string; + /** Metadata */ + metadata?: { + [key: string]: unknown; + } | null; + /** Peers */ + peers?: { + [key: string]: components["schemas"]["SessionPeerConfig"]; + } | null; + configuration?: components["schemas"]["SessionConfiguration"] | null; + }; + /** SessionGet */ + SessionGet: { + /** Filters */ + filters?: { + [key: string]: unknown; + } | null; + }; + /** SessionPeerConfig */ + SessionPeerConfig: { + /** + * Observe Me + * @description Whether Honcho will use reasoning to form a representation of this peer + */ + observe_me?: boolean | null; + /** + * Observe Others + * @description Whether this peer should form a session-level theory-of-mind representation of other peers in the session + */ + observe_others?: boolean | null; + }; + /** + * SessionQueueStatus + * @description Status for a specific session within the processing queue. + */ + SessionQueueStatus: { + /** + * Session Id + * @description Session ID if filtered by session + */ + session_id?: string | null; + /** + * Total Work Units + * @description Total work units + */ + total_work_units: number; + /** + * Completed Work Units + * @description Completed work units + */ + completed_work_units: number; + /** + * In Progress Work Units + * @description Work units currently being processed + */ + in_progress_work_units: number; + /** + * Pending Work Units + * @description Work units waiting to be processed + */ + pending_work_units: number; + }; + /** SessionSummaries */ + SessionSummaries: { + /** Id */ + id: string; + /** @description The short summary if available */ + short_summary?: components["schemas"]["Summary"] | null; + /** @description The long summary if available */ + long_summary?: components["schemas"]["Summary"] | null; + }; + /** SessionUpdate */ + SessionUpdate: { + /** Metadata */ + metadata?: { + [key: string]: unknown; + } | null; + configuration?: components["schemas"]["SessionConfiguration"] | null; + }; + /** Summary */ + Summary: { + /** + * Content + * @description The summary text + */ + content: string; + /** + * Message Id + * @description The public ID of the message that this summary covers up to + */ + message_id: string; + /** + * Summary Type + * @description The type of summary (short or long) + */ + summary_type: string; + /** + * Created At + * @description The timestamp of when the summary was created (ISO format) + */ + created_at: string; + /** + * Token Count + * @description The number of tokens in the summary text + */ + token_count: number; + }; + /** SummaryConfiguration */ + SummaryConfiguration: { + /** + * Enabled + * @description Whether to enable summary functionality. + */ + enabled?: boolean | null; + /** + * Messages Per Short Summary + * @description Number of messages per short summary. Must be positive, greater than or equal to 10, and less than messages_per_long_summary. + */ + messages_per_short_summary?: number | null; + /** + * Messages Per Long Summary + * @description Number of messages per long summary. Must be positive, greater than or equal to 20, and greater than messages_per_short_summary. + */ + messages_per_long_summary?: number | null; + }; + /** ValidationError */ + ValidationError: { + /** Location */ + loc: (string | number)[]; + /** Message */ + msg: string; + /** Error Type */ + type: string; + /** Input */ + input?: unknown; + /** Context */ + ctx?: Record; + }; + /** WebhookEndpoint */ + WebhookEndpoint: { + /** Id */ + id: string; + /** Workspace Id */ + workspace_id: string | null; + /** Url */ + url: string; + /** + * Created At + * Format: date-time + */ + created_at: string; + }; + /** WebhookEndpointCreate */ + WebhookEndpointCreate: { + /** Url */ + url: string; + }; + /** Workspace */ + Workspace: { + /** Id */ + id: string; + /** Metadata */ + metadata?: { + [key: string]: unknown; + }; + /** Configuration */ + configuration?: { + [key: string]: unknown; + }; + /** + * Created At + * Format: date-time + */ + created_at: string; + }; + /** + * WorkspaceConfiguration + * @description The set of options that can be in a workspace DB-level configuration dictionary. + * + * All fields are optional. Session-level configuration overrides workspace-level configuration, which overrides global configuration. + */ + WorkspaceConfiguration: { + /** @description Configuration for reasoning functionality. */ + reasoning?: components["schemas"]["ReasoningConfiguration"] | null; + /** @description Configuration for peer card functionality. If reasoning is disabled, peer cards will also be disabled and these settings will be ignored. */ + peer_card?: components["schemas"]["PeerCardConfiguration"] | null; + /** @description Configuration for summary functionality. */ + summary?: components["schemas"]["SummaryConfiguration"] | null; + /** @description Configuration for dream functionality. If reasoning is disabled, dreams will also be disabled and these settings will be ignored. */ + dream?: components["schemas"]["DreamConfiguration"] | null; + } & { + [key: string]: unknown; + }; + /** WorkspaceCreate */ + WorkspaceCreate: { + /** Id */ + id: string; + /** + * Metadata + * @default {} + */ + metadata: { + [key: string]: unknown; + }; + configuration?: components["schemas"]["WorkspaceConfiguration"]; + }; + /** WorkspaceGet */ + WorkspaceGet: { + /** Filters */ + filters?: { + [key: string]: unknown; + } | null; + }; + /** WorkspaceUpdate */ + WorkspaceUpdate: { + /** Metadata */ + metadata?: { + [key: string]: unknown; + } | null; + configuration?: components["schemas"]["WorkspaceConfiguration"] | null; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; +} +export type $defs = Record; +export interface operations { + get_or_create_workspace_v3_workspaces_post: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["WorkspaceCreate"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Workspace"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_all_workspaces_v3_workspaces_list_post: { + parameters: { + query?: { + /** @description Page number */ + page?: number; + /** @description Page size */ + size?: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: { + content: { + "application/json": components["schemas"]["WorkspaceGet"] | null; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Page_Workspace_"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + update_workspace_v3_workspaces__workspace_id__put: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["WorkspaceUpdate"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Workspace"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + delete_workspace_v3_workspaces__workspace_id__delete: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 202: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": unknown; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + search_workspace_v3_workspaces__workspace_id__search_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["MessageSearchOptions"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Message"][]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_queue_status_v3_workspaces__workspace_id__queue_status_get: { + parameters: { + query?: { + /** @description Optional observer ID to filter by */ + observer_id?: string | null; + /** @description Optional sender ID to filter by */ + sender_id?: string | null; + /** @description Optional session ID to filter by */ + session_id?: string | null; + }; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["QueueStatus"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + schedule_dream_v3_workspaces__workspace_id__schedule_dream_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["ScheduleDreamRequest"]; + }; + }; + responses: { + /** @description Successful Response */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_peers_v3_workspaces__workspace_id__peers_list_post: { + parameters: { + query?: { + /** @description Page number */ + page?: number; + /** @description Page size */ + size?: number; + }; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody?: { + content: { + "application/json": components["schemas"]["PeerGet"] | null; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Page_Peer_"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_or_create_peer_v3_workspaces__workspace_id__peers_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["PeerCreate"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Peer"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + update_peer_v3_workspaces__workspace_id__peers__peer_id__put: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + peer_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["PeerUpdate"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Peer"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_sessions_for_peer_v3_workspaces__workspace_id__peers__peer_id__sessions_post: { + parameters: { + query?: { + /** @description Page number */ + page?: number; + /** @description Page size */ + size?: number; + }; + header?: never; + path: { + workspace_id: string; + peer_id: string; + }; + cookie?: never; + }; + requestBody?: { + content: { + "application/json": components["schemas"]["SessionGet"] | null; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Page_Session_"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + chat_v3_workspaces__workspace_id__peers__peer_id__chat_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + peer_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["DialecticOptions"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": { + /** Content */ + content: string | null; + }; + "text/event-stream": unknown; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_representation_v3_workspaces__workspace_id__peers__peer_id__representation_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + peer_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["PeerRepresentationGet"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["RepresentationResponse"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_peer_card_v3_workspaces__workspace_id__peers__peer_id__card_get: { + parameters: { + query?: { + /** @description Optional target peer to retrieve a card for, from the observer's perspective. If not provided, returns the observer's own card */ + target?: string | null; + }; + header?: never; + path: { + workspace_id: string; + /** @description ID of the observer peer */ + peer_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["PeerCardResponse"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + set_peer_card_v3_workspaces__workspace_id__peers__peer_id__card_put: { + parameters: { + query?: { + /** @description Optional target peer to set a card for, from the observer's perspective. If not provided, sets the observer's own card */ + target?: string | null; + }; + header?: never; + path: { + workspace_id: string; + /** @description ID of the observer peer */ + peer_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["PeerCardSet"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["PeerCardResponse"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_peer_context_v3_workspaces__workspace_id__peers__peer_id__context_get: { + parameters: { + query?: { + /** @description Optional target peer to get context for, from the observer's perspective. If not provided, returns the observer's own context (self-observation) */ + target?: string | null; + /** @description Optional query to curate the representation around semantic search results */ + search_query?: string | null; + /** @description Only used if `search_query` is provided. Number of semantic-search-retrieved conclusions to include */ + search_top_k?: number | null; + /** @description Only used if `search_query` is provided. Maximum distance for semantically relevant conclusions */ + search_max_distance?: number | null; + /** @description Whether to include the most frequent conclusions in the representation */ + include_most_frequent?: boolean; + /** @description Maximum number of conclusions to include in the representation */ + max_conclusions?: number | null; + }; + header?: never; + path: { + workspace_id: string; + /** @description ID of the observer peer */ + peer_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["PeerContext"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + search_peer_v3_workspaces__workspace_id__peers__peer_id__search_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + peer_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["MessageSearchOptions"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Message"][]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_sessions_v3_workspaces__workspace_id__sessions_list_post: { + parameters: { + query?: { + /** @description Page number */ + page?: number; + /** @description Page size */ + size?: number; + }; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody?: { + content: { + "application/json": components["schemas"]["SessionGet"] | null; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Page_Session_"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_or_create_session_v3_workspaces__workspace_id__sessions_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["SessionCreate"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Session"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + update_session_v3_workspaces__workspace_id__sessions__session_id__put: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["SessionUpdate"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Session"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + delete_session_v3_workspaces__workspace_id__sessions__session_id__delete: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 202: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": unknown; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + clone_session_v3_workspaces__workspace_id__sessions__session_id__clone_post: { + parameters: { + query?: { + /** @description Message ID to cut off the clone at */ + message_id?: string | null; + }; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Session"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_session_peers_v3_workspaces__workspace_id__sessions__session_id__peers_get: { + parameters: { + query?: { + /** @description Page number */ + page?: number; + /** @description Page size */ + size?: number; + }; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Page_Peer_"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + set_session_peers_v3_workspaces__workspace_id__sessions__session_id__peers_put: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": { + [key: string]: components["schemas"]["SessionPeerConfig"]; + }; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Session"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + add_peers_to_session_v3_workspaces__workspace_id__sessions__session_id__peers_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": { + [key: string]: components["schemas"]["SessionPeerConfig"]; + }; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Session"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + remove_peers_from_session_v3_workspaces__workspace_id__sessions__session_id__peers_delete: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": string[]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Session"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_peer_config_v3_workspaces__workspace_id__sessions__session_id__peers__peer_id__config_get: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + peer_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SessionPeerConfig"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + set_peer_config_v3_workspaces__workspace_id__sessions__session_id__peers__peer_id__config_put: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + peer_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["SessionPeerConfig"]; + }; + }; + responses: { + /** @description Successful Response */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_session_context_v3_workspaces__workspace_id__sessions__session_id__context_get: { + parameters: { + query?: { + /** @description Number of tokens to use for the context. Includes summary if set to true. Includes representation and peer card if they are included in the response. If not provided, the context will be exhaustive (within 100000 tokens) */ + tokens?: number | null; + /** @description A query string used to fetch semantically relevant conclusions */ + search_query?: string | null; + /** @description Whether or not to include a summary *if* one is available for the session */ + summary?: boolean; + /** @description The target of the perspective. If given without `peer_perspective`, will get the Honcho-level representation and peer card for this peer. If given with `peer_perspective`, will get the representation and card for this peer *from the perspective of that peer*. */ + peer_target?: string | null; + /** @description A peer to get context for. If given, response will attempt to include representation and card from the perspective of that peer. Must be provided with `peer_target`. */ + peer_perspective?: string | null; + /** @description Only used if `search_query` is provided. Whether to limit the representation to the session (as opposed to everything known about the target peer) */ + limit_to_session?: boolean; + /** @description Only used if `search_query` is provided. The number of semantic-search-retrieved conclusions to include in the representation */ + search_top_k?: number | null; + /** @description Only used if `search_query` is provided. The maximum distance to search for semantically relevant conclusions */ + search_max_distance?: number | null; + /** @description Only used if `search_query` is provided. Whether to include the most frequent conclusions in the representation */ + include_most_frequent?: boolean; + /** @description Only used if `search_query` is provided. The maximum number of conclusions to include in the representation */ + max_conclusions?: number | null; + }; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SessionContext"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_session_summaries_v3_workspaces__workspace_id__sessions__session_id__summaries_get: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["SessionSummaries"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + search_session_v3_workspaces__workspace_id__sessions__session_id__search_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["MessageSearchOptions"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Message"][]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + create_messages_for_session_v3_workspaces__workspace_id__sessions__session_id__messages_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["MessageBatchCreate"]; + }; + }; + responses: { + /** @description Successful Response */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Message"][]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + create_messages_with_file_v3_workspaces__workspace_id__sessions__session_id__messages_upload_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "multipart/form-data": components["schemas"]["Body_create_messages_with_file_v3_workspaces__workspace_id__sessions__session_id__messages_upload_post"]; + }; + }; + responses: { + /** @description Successful Response */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Message"][]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_messages_v3_workspaces__workspace_id__sessions__session_id__messages_list_post: { + parameters: { + query?: { + /** @description Whether to reverse the order of results */ + reverse?: boolean | null; + /** @description Page number */ + page?: number; + /** @description Page size */ + size?: number; + }; + header?: never; + path: { + workspace_id: string; + session_id: string; + }; + cookie?: never; + }; + requestBody?: { + content: { + "application/json": components["schemas"]["MessageGet"] | null; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Page_Message_"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_message_v3_workspaces__workspace_id__sessions__session_id__messages__message_id__get: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + message_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Message"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + update_message_v3_workspaces__workspace_id__sessions__session_id__messages__message_id__put: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + session_id: string; + message_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["MessageUpdate"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Message"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + create_conclusions_v3_workspaces__workspace_id__conclusions_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["ConclusionBatchCreate"]; + }; + }; + responses: { + /** @description Successful Response */ + 201: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Conclusion"][]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + list_conclusions_v3_workspaces__workspace_id__conclusions_list_post: { + parameters: { + query?: { + /** @description Whether to reverse the order of results */ + reverse?: boolean | null; + /** @description Page number */ + page?: number; + /** @description Page size */ + size?: number; + }; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody?: { + content: { + "application/json": components["schemas"]["ConclusionGet"] | null; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Page_Conclusion_"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + query_conclusions_v3_workspaces__workspace_id__conclusions_query_post: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["ConclusionQuery"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Conclusion"][]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + delete_conclusion_v3_workspaces__workspace_id__conclusions__conclusion_id__delete: { + parameters: { + query?: never; + header?: never; + path: { + workspace_id: string; + conclusion_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + create_key_v3_keys_post: { + parameters: { + query?: { + /** @description ID of the workspace to scope the key to */ + workspace_id?: string | null; + /** @description ID of the peer to scope the key to */ + peer_id?: string | null; + /** @description ID of the session to scope the key to */ + session_id?: string | null; + expires_at?: string | null; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": unknown; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + list_webhook_endpoints_v3_workspaces__workspace_id__webhooks_get: { + parameters: { + query?: { + /** @description Page number */ + page?: number; + /** @description Page size */ + size?: number; + }; + header?: never; + path: { + /** @description Workspace ID */ + workspace_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["Page_WebhookEndpoint_"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + get_or_create_webhook_endpoint_v3_workspaces__workspace_id__webhooks_post: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Workspace ID */ + workspace_id: string; + }; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["WebhookEndpointCreate"]; + }; + }; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["WebhookEndpoint"]; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + delete_webhook_endpoint_v3_workspaces__workspace_id__webhooks__endpoint_id__delete: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Workspace ID */ + workspace_id: string; + /** @description Webhook endpoint ID */ + endpoint_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 204: { + headers: { + [name: string]: unknown; + }; + content?: never; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; + test_emit_v3_workspaces__workspace_id__webhooks_test_get: { + parameters: { + query?: never; + header?: never; + path: { + /** @description Workspace ID */ + workspace_id: string; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description Successful Response */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": unknown; + }; + }; + /** @description Validation Error */ + 422: { + headers: { + [name: string]: unknown; + }; + content: { + "application/json": components["schemas"]["HTTPValidationError"]; + }; + }; + }; + }; +} diff --git a/src/components/chat/ChatPage.tsx b/packages/web/src/components/chat/ChatPage.tsx similarity index 76% rename from src/components/chat/ChatPage.tsx rename to packages/web/src/components/chat/ChatPage.tsx index 1b92d37..b87a12b 100644 --- a/src/components/chat/ChatPage.tsx +++ b/packages/web/src/components/chat/ChatPage.tsx @@ -1,11 +1,15 @@ -import { useState, useRef, useEffect } from "react"; -import { Link, useParams } from "@tanstack/react-router"; -import { motion, AnimatePresence } from "framer-motion"; -import { Send, Brain } from "lucide-react"; import { useChat } from "@/api/queries"; import { LoadingSpinner } from "@/components/shared/LoadingSpinner"; +import { Button } from "@/components/ui/button"; +import { Textarea } from "@/components/ui/input"; +import { SectionHeading } from "@/components/ui/typography"; +import { Link, useParams } from "@tanstack/react-router"; +import { AnimatePresence, motion } from "framer-motion"; +import { Brain, Send } from "lucide-react"; +import { useEffect, useRef, useState } from "react"; interface Message { + id: string; role: "user" | "assistant"; content: string; } @@ -21,7 +25,9 @@ export function ChatPage() { const chatMutation = useChat(workspaceId, peerId); useEffect(() => { - bottomRef.current?.scrollIntoView({ behavior: "smooth" }); + if (messages.length > 0) { + bottomRef.current?.scrollIntoView({ behavior: "smooth" }); + } }, [messages]); async function handleSend() { @@ -29,21 +35,22 @@ export function ChatPage() { if (!trimmed || chatMutation.isPending) return; setInput(""); - setMessages((prev) => [...prev, { role: "user", content: trimmed }]); + setMessages((prev) => [...prev, { id: crypto.randomUUID(), role: "user", content: trimmed }]); try { const result = await chatMutation.mutateAsync(trimmed); const responseText = - typeof result === "string" - ? result - : typeof (result as { response?: unknown })?.response === "string" - ? (result as { response: string }).response - : JSON.stringify(result); - setMessages((prev) => [...prev, { role: "assistant", content: responseText }]); + (result as { content?: string | null }).content ?? + (typeof result === "string" ? result : JSON.stringify(result)); + setMessages((prev) => [ + ...prev, + { id: crypto.randomUUID(), role: "assistant", content: responseText }, + ]); } catch (err) { setMessages((prev) => [ ...prev, { + id: crypto.randomUUID(), role: "assistant", content: `Error: ${err instanceof Error ? err.message : "Unknown error"}`, }, @@ -78,13 +85,12 @@ export function ChatPage() {
-

+ Memory-augmented chat -

+

- Honcho responds using accumulated context for{" "} - {peerId} + Honcho responds using accumulated context for {peerId}

@@ -100,7 +106,10 @@ export function ChatPage() {
@@ -114,9 +123,9 @@ export function ChatPage() { )} - {messages.map((msg, i) => ( + {messages.map((msg) => (
-