From ceb03fb2bc539f14e82f9727bb5bc1f2b90874e0 Mon Sep 17 00:00:00 2001 From: Steven Enamakel <31011319+senamakel@users.noreply.github.com> Date: Thu, 5 Feb 2026 19:29:21 +0530 Subject: [PATCH] Fix/prod build (#51) * chore: add CI secrets management and local testing script - Added ci-secrets.example.json to provide a template for CI secrets configuration. - Introduced test-ci-local.sh script to facilitate local testing of the package-and-publish workflow using act. - Updated .gitignore to exclude the actual ci-secrets.json file containing sensitive tokens. * chore: enhance local testing and environment loading scripts - Added scripts to load environment variables from .env and JSON files, improving local development setup. - Introduced ci-event.json to simulate GitHub event payloads for local CI testing. - Updated test-ci-local.sh to utilize the new event JSON for better integration with local testing workflows. - Modified .gitignore to include ci-secrets.local.json for local secret management. * chore: enhance environment loading and improve V8 memory management - Updated load-env.sh to conditionally load ci-secrets.local.json and set APPLE_PASSWORD for notarization. - Introduced a delay in auto-starting skills to prevent memory spikes during initialization. - Adjusted V8 runtime memory settings to minimize initial heap allocation, reducing the risk of OOM errors. * chore: update version bump workflow to modify tauri.conf.json - Changed the version update process to reflect changes in tauri.conf.json instead of Cargo.toml. - Adjusted the commit message to indicate the inclusion of tauri.conf.json in the version bump process. * chore: migrate from V8 to QuickJS runtime and update related configurations - Replaced V8 runtime references with QuickJS throughout the codebase, including updates to initialization and error handling. - Modified package.json to change the build command for macOS to source environment variables correctly. - Updated Cargo.toml to remove deno_core dependency and include rquickjs with appropriate features. - Cleaned up unused V8-related code and comments in the runtime modules. - Adjusted skill manifest checks to support QuickJS compatibility. * refactor: implement QuickJS runtime and remove V8 references - Replaced V8 engine with QuickJS in the runtime module, updating related imports and initialization logic. - Introduced new `qjs_engine.rs` and `qjs_skill_instance.rs` files to handle QuickJS-specific functionality. - Removed the deprecated `v8_skill_instance.rs` and associated V8-related code. - Updated JavaScript bootstrap code to align with QuickJS operations and APIs. - Adjusted documentation and comments to reflect the transition to QuickJS. * refactor: update IdbStorage to use parking_lot::Mutex for improved concurrency - Changed the connection management in IdbStorage from RwLock to parking_lot::Mutex for better performance. - Updated related methods to reflect the new locking mechanism, enhancing the efficiency of database operations. - Adjusted the IdbOpenResult struct to include serde::Serialize for potential serialization needs. * refactor: update QuickJS skill instance and timer management - Modified memory limit and stack size settings in QjsSkillInstance to be asynchronous, improving performance. - Cleaned up imports in qjs_ops.rs by removing unused dependencies and enhancing function definitions for clarity. - Refactored timer management functions for better readability and efficiency, including renaming and restructuring comments. * chore: update package.json scripts and clean up build.rs - Added a new script for running the Tauri app with environment variable loading. - Simplified the macOS development command to use a dedicated build script. - Removed unnecessary environment variable logging from build.rs to streamline the build process. - Cleaned up commented-out sections in the GitHub Actions workflow for Android packaging. --- .github/workflows/package-and-publish.yml | 121 -- .github/workflows/version-bump.yml | 12 +- .gitignore | 4 + package.json | 9 +- scripts/ci-event.json | 16 + scripts/ci-secrets.example.json | 28 + scripts/load-dotenv.sh | 47 + scripts/load-env-json.sh | 29 + scripts/load-env.sh | 17 + scripts/test-ci-local.sh | 152 ++ skills | 2 +- src-tauri/Cargo.lock | 602 ++------ src-tauri/Cargo.toml | 2 +- src-tauri/build.rs | 193 +-- src-tauri/images/background-dmg.png | Bin 274576 -> 281817 bytes src-tauri/src/commands/runtime.rs | 2 +- src-tauri/src/lib.rs | 42 +- src-tauri/src/runtime/loader.rs | 7 +- src-tauri/src/runtime/manifest.rs | 6 +- src-tauri/src/runtime/mod.rs | 12 +- .../runtime/{v8_engine.rs => qjs_engine.rs} | 38 +- src-tauri/src/runtime/qjs_skill_instance.rs | 649 +++++++++ src-tauri/src/runtime/skill_registry.rs | 2 +- src-tauri/src/runtime/socket_manager.rs | 2 +- src-tauri/src/runtime/v8_skill_instance.rs | 712 ---------- src-tauri/src/services/tdlib_v8/bootstrap.js | 134 +- src-tauri/src/services/tdlib_v8/mod.rs | 10 +- src-tauri/src/services/tdlib_v8/ops/mod.rs | 1236 ----------------- src-tauri/src/services/tdlib_v8/qjs_ops.rs | 799 +++++++++++ src-tauri/src/services/tdlib_v8/storage.rs | 60 +- src-tauri/src/utils/config.rs | 48 - src-tauri/tauri.conf.json | 2 +- 32 files changed, 2010 insertions(+), 2985 deletions(-) create mode 100644 scripts/ci-event.json create mode 100644 scripts/ci-secrets.example.json create mode 100755 scripts/load-dotenv.sh create mode 100755 scripts/load-env-json.sh create mode 100755 scripts/load-env.sh create mode 100755 scripts/test-ci-local.sh rename src-tauri/src/runtime/{v8_engine.rs => qjs_engine.rs} (93%) create mode 100644 src-tauri/src/runtime/qjs_skill_instance.rs delete mode 100644 src-tauri/src/runtime/v8_skill_instance.rs delete mode 100644 src-tauri/src/services/tdlib_v8/ops/mod.rs create mode 100644 src-tauri/src/services/tdlib_v8/qjs_ops.rs diff --git a/.github/workflows/package-and-publish.yml b/.github/workflows/package-and-publish.yml index 2a28a1303..d85755857 100644 --- a/.github/workflows/package-and-publish.yml +++ b/.github/workflows/package-and-publish.yml @@ -402,127 +402,6 @@ jobs: name: ${{ steps.file-info.outputs.filename }} path: ${{ steps.file-info.outputs.path }}/${{ steps.file-info.outputs.filename }} - # package-android: - # name: Build and package Android APK - # needs: [get-version, check-version, create-release] - # if: ${{ !failure() && !cancelled() && needs.check-version.outputs.should-skip != 'true' }} - # environment: ${{ github.ref == 'refs/heads/main' && 'Production' || '' }} - # runs-on: ubuntu-22.04 - # permissions: - # contents: write - # steps: - # - name: Checkout - # uses: actions/checkout@v4 - # with: - # fetch-depth: 1 - # ref: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.ref || github.ref }} - - # - name: Setup Node.js 24.x - # uses: actions/setup-node@v4 - # with: - # node-version: 24.x - # cache: 'yarn' - - # - name: Install Rust stable - # uses: dtolnay/rust-toolchain@stable - # with: - # targets: aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android - - # - name: Setup Java 17 - # uses: actions/setup-java@v4 - # with: - # distribution: 'temurin' - # java-version: '17' - - # - name: Setup Android SDK - # uses: android-actions/setup-android@v3 - - # - name: Install Android NDK - # run: sdkmanager --install "ndk;27.0.12077973" - - # - name: Set NDK path - # run: echo "NDK_HOME=$ANDROID_HOME/ndk/27.0.12077973" >> $GITHUB_ENV - - # - name: Cache node modules - # id: yarn-cache - # uses: actions/cache@v4 - # with: - # path: node_modules - # key: ${{ runner.os }}-build-${{ hashFiles('**/yarn.lock') }} - # restore-keys: | - # ${{ runner.os }}-build- - - # - name: Install dependencies - # if: steps.yarn-cache.outputs.cache-hit != 'true' - # run: yarn install --frozen-lockfile - - # - name: Build frontend - # run: yarn build - # env: - # NODE_ENV: production - # VITE_BACKEND_URL: ${{ vars.VITE_BACKEND_URL }} - # VITE_TELEGRAM_BOT_USERNAME: ${{ secrets.VITE_TELEGRAM_BOT_USERNAME }} - # VITE_TELEGRAM_BOT_ID: ${{ secrets.VITE_TELEGRAM_BOT_ID }} - # VITE_TELEGRAM_API_ID: ${{ secrets.VITE_TELEGRAM_API_ID }} - # VITE_TELEGRAM_API_HASH: ${{ secrets.VITE_TELEGRAM_API_HASH }} - # VITE_SENTRY_DSN: ${{ secrets.VITE_SENTRY_DSN }} - # VITE_SKILLS_GITHUB_REPO: ${{ vars.VITE_SKILLS_GITHUB_REPO }} - # VITE_DEBUG: ${{ vars.VITE_DEBUG }} - - # - name: Initialize Tauri Android - # run: npx tauri android init - - # - name: Decode keystore - # if: needs.get-version.outputs.should-publish != '' - # env: - # ANDROID_KEYSTORE: ${{ secrets.ANDROID_KEYSTORE }} - # run: | - # echo "$ANDROID_KEYSTORE" | base64 --decode > ${{ github.workspace }}/release.jks - - # - name: Build Android APK (signed) - # if: needs.get-version.outputs.should-publish != '' - # env: - # BASE_URL: ${{ vars.BASE_URL }} - # ANDROID_KEYSTORE_PATH: ${{ github.workspace }}/release.jks - # ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} - # ANDROID_KEY_ALIAS: ${{ secrets.ANDROID_KEY_ALIAS }} - # ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }} - # run: npx tauri android build --apk - - # - name: Build Android APK (unsigned) - # if: needs.get-version.outputs.should-publish == '' - # env: - # BASE_URL: ${{ vars.BASE_URL }} - # run: npx tauri android build --apk - - # - name: Find APK - # id: find-apk - # run: | - # APK_PATH=$(find gen/android -name '*.apk' -type f | head -1) - # if [ -z "$APK_PATH" ]; then - # echo "No APK found" - # exit 1 - # fi - # APK_FILENAME=$(basename "$APK_PATH") - # echo "path=$APK_PATH" >> $GITHUB_OUTPUT - # echo "filename=$APK_FILENAME" >> $GITHUB_OUTPUT - - # - name: Upload APK artifact - # uses: actions/upload-artifact@v4 - # with: - # name: android-apk - # path: ${{ steps.find-apk.outputs.path }} - - # - name: Upload APK to release - # if: needs.get-version.outputs.should-publish != '' - # env: - # RELEASE_ID: ${{ needs.create-release.outputs.releaseId }} - # run: | - # curl -X POST -H "Authorization: Bearer $XGH_TOKEN" \ - # -H "Content-Type: application/octet-stream" \ - # --data-binary "@${{ steps.find-apk.outputs.path }}" \ - # "https://uploads.github.com/repos/$PUBLISH_REPO/releases/$RELEASE_ID/assets?name=${{ steps.find-apk.outputs.filename }}" - publish-release: runs-on: ubuntu-latest # needs: [get-version, check-version, create-release, package-tauri, package-android] diff --git a/.github/workflows/version-bump.yml b/.github/workflows/version-bump.yml index 9287b0405..3f3fcd929 100644 --- a/.github/workflows/version-bump.yml +++ b/.github/workflows/version-bump.yml @@ -75,11 +75,15 @@ jobs: require('fs').writeFileSync('package.json', JSON.stringify(p, null, 2) + '\n'); " - # Update Cargo.toml to match - sed -i 's/^version = .*/version = "'"$NEW_VERSION"'"/' src-tauri/Cargo.toml + # Update tauri.conf.json to match + node -e " + const c = require('./src-tauri/tauri.conf.json'); + c.version = process.env.NEW_VERSION; + require('fs').writeFileSync('src-tauri/tauri.conf.json', JSON.stringify(c, null, 2) + '\n'); + " - # Single commit and tag for both npm and Cargo - git add package.json src-tauri/Cargo.toml + # Single commit and tag for package.json and tauri.conf.json + git add package.json src-tauri/tauri.conf.json git commit -m "chore: bump version to $NEW_VERSION [skip ci]" git tag "v$NEW_VERSION" diff --git a/.gitignore b/.gitignore index 8e64f0c04..bb66f93d6 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,10 @@ dist-ssr .env.local .env.*.local +# CI secrets for local testing (contains real tokens) +scripts/ci-secrets.json +scripts/ci-secrets.local.json + # Editor directories and files .idea .DS_Store diff --git a/package.json b/package.json index 693be6cb9..d51292107 100644 --- a/package.json +++ b/package.json @@ -6,18 +6,19 @@ "scripts": { "dev": "vite", "dev:web": "vite", + "dev:app": "source scripts/load-dotenv.sh && tauri dev", "build": "tsc && vite build", "build:app": "yarn skills:build && tsc && vite build", "compile": "tsc --noEmit", "preview": "vite preview", "tauri": "tauri", - "macos:build": "tauri build --debug --bundles app && ./src-tauri/scripts/bundle-tdlib-macos.sh debug", - "macos:build:release": "tauri build --bundles app dmg && ./src-tauri/scripts/bundle-tdlib-macos.sh release", + "macos:build:debug": "yarn macos:build:release --debug", + "macos:build:release": "source scripts/load-dotenv.sh && tauri build --bundles app dmg", + "macos:build:sign:release": "source scripts/load-env.sh && tauri build --bundles app dmg", "macos:run": "open 'src-tauri/target/debug/bundle/macos/AlphaHuman.app'", - "macos:dev": "tauri build --debug --bundles app && ./src-tauri/scripts/bundle-tdlib-macos.sh debug && open 'src-tauri/target/debug/bundle/macos/AlphaHuman.app'", + "macos:dev": "yarn macos:build:debug && open 'src-tauri/target/debug/bundle/macos/AlphaHuman.app'", "android:dev": "tauri android dev", "android:build": "tauri android build", - "dev:app": "RUST_BACKTRACE=1 RUST_LOG=info tauri dev", "test": "vitest run", "test:watch": "vitest", "test:coverage": "vitest run --coverage", diff --git a/scripts/ci-event.json b/scripts/ci-event.json new file mode 100644 index 000000000..b5c4baa3d --- /dev/null +++ b/scripts/ci-event.json @@ -0,0 +1,16 @@ +{ + "ref": "refs/heads/develop", + "before": "0000000000000000000000000000000000000000", + "after": "19281e16457e7c8ff8e6bda6ceda77f0880d10d2", + "repository": { + "full_name": "vezuresdotxyz/alphahuman-frontend-runner", + "default_branch": "main", + "name": "alphahuman-frontend-runner", + "owner": { "login": "vezuresdotxyz" } + }, + "head_commit": { + "id": "19281e16457e7c8ff8e6bda6ceda77f0880d10d2", + "message": "local test build" + }, + "sender": { "login": "local-dev" } +} diff --git a/scripts/ci-secrets.example.json b/scripts/ci-secrets.example.json new file mode 100644 index 000000000..e17fb8a53 --- /dev/null +++ b/scripts/ci-secrets.example.json @@ -0,0 +1,28 @@ +{ + "secrets": { + "XGH_TOKEN": "", + "GITHUB_TOKEN": "", + "UPDATER_GIST_URL": "", + "UPDATER_GIST_ID": "", + "UPDATER_PUBLIC_KEY": "", + "UPDATER_PRIVATE_KEY": "", + "UPDATER_PRIVATE_KEY_PASSWORD": "", + "APPLE_CERTIFICATE_BASE64": "", + "APPLE_CERTIFICATE_PASSWORD": "", + "APPLE_SIGNING_IDENTITY": "", + "APPLE_ID": "", + "APPLE_APP_SPECIFIC_PASSWORD": "", + "APPLE_TEAM_ID": "", + "VITE_TELEGRAM_BOT_USERNAME": "", + "VITE_TELEGRAM_BOT_ID": "", + "VITE_TELEGRAM_API_ID": "", + "VITE_TELEGRAM_API_HASH": "", + "VITE_SENTRY_DSN": "" + }, + "vars": { + "BASE_URL": "https://localhost", + "VITE_BACKEND_URL": "https://localhost:5005", + "VITE_SKILLS_GITHUB_REPO": "", + "VITE_DEBUG": "true" + } +} diff --git a/scripts/load-dotenv.sh b/scripts/load-dotenv.sh new file mode 100755 index 000000000..d0649cb46 --- /dev/null +++ b/scripts/load-dotenv.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +# Load .env file into environment variables. +# Usage: +# source scripts/load-dotenv.sh [path/to/.env] +# eval "$(scripts/load-dotenv.sh [path/to/.env])" +# Default path: .env (project root when run from repo root) + +set -e +FILE="${1:-.env}" +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]:-$0}")" && pwd)" +ROOT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)" +RESOLVED="${1:+$1}" +RESOLVED="${RESOLVED:-$ROOT_DIR/.env}" + +if [[ ! -f "$RESOLVED" ]]; then + echo "File not found: $RESOLVED" >&2 + exit 1 +fi + +exports=() +while IFS= read -r line || [[ -n "$line" ]]; do + line="${line%%#*}" + line="${line#"${line%%[![:space:]]*}"}" + line="${line%"${line##*[![:space:]]}"}" + [[ -z "$line" ]] && continue + if [[ "$line" == export\ * ]]; then + line="${line#export }" + fi + if [[ "$line" == *"="* ]]; then + key="${line%%=*}" + key="${key%"${key##*[![:space:]]}"}" + value="${line#*=}" + value="${value#\"}" + value="${value%\"}" + value="${value#\'}" + value="${value%\'}" + [[ -n "$key" ]] && exports+=("$(printf 'export %s=%q' "$key" "$value")") + fi +done < "$RESOLVED" + +joined=$(printf '%s\n' "${exports[@]}") + +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + echo "$joined" +else + eval "$joined" +fi diff --git a/scripts/load-env-json.sh b/scripts/load-env-json.sh new file mode 100755 index 000000000..47913701d --- /dev/null +++ b/scripts/load-env-json.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +# Load key-value JSON into environment variables. +# Usage: +# source scripts/load-env-json.sh path/to/file.json +# eval "$(scripts/load-env-json.sh path/to/file.json)" +# Optional jq filter to select object (default: .): +# source scripts/load-env-json.sh ci-secrets.json '.secrets + .vars' + +set -e +FILE="${1:?Usage: $0 [jq-filter]}" +FILTER="${2:-.}" + +if [[ ! -f "$FILE" ]]; then + echo "File not found: $FILE" >&2 + exit 1 +fi + +if ! command -v jq &>/dev/null; then + echo "jq is required" >&2 + exit 1 +fi + +exports=$(jq -r "${FILTER} | to_entries | .[] | \"export \(.key)=\(.value | @sh)\"" "$FILE") + +if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then + echo "$exports" +else + eval "$exports" +fi diff --git a/scripts/load-env.sh b/scripts/load-env.sh new file mode 100755 index 000000000..0274305a8 --- /dev/null +++ b/scripts/load-env.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash +# Load .env file into environment variables and optional ci-secrets for signing/notarization. +# Usage: +# source scripts/load-env.sh +# eval "$(scripts/load-env.sh)" + +set -e + +source scripts/load-dotenv.sh + +if [[ -f scripts/ci-secrets.local.json ]]; then + source scripts/load-env-json.sh scripts/ci-secrets.local.json + # Tauri notarization expects APPLE_PASSWORD; secrets file uses APPLE_APP_SPECIFIC_PASSWORD + if [[ -z "${APPLE_PASSWORD:-}" && -n "${APPLE_APP_SPECIFIC_PASSWORD:-}" ]]; then + export APPLE_PASSWORD="$APPLE_APP_SPECIFIC_PASSWORD" + fi +fi diff --git a/scripts/test-ci-local.sh b/scripts/test-ci-local.sh new file mode 100755 index 000000000..fc05942e1 --- /dev/null +++ b/scripts/test-ci-local.sh @@ -0,0 +1,152 @@ +#!/usr/bin/env bash +# Test the package-and-publish workflow locally using `act`. +# +# Prerequisites: +# brew install act jq +# +# Setup: +# cp scripts/ci-secrets.example.json scripts/ci-secrets.json +# # Edit scripts/ci-secrets.json with your real values +# +# Usage: +# ./scripts/test-ci-local.sh # Run full workflow via act +# ./scripts/test-ci-local.sh --manual # Run build steps natively on macOS (recommended) +# ./scripts/test-ci-local.sh --list # List available jobs +# ./scripts/test-ci-local.sh --dryrun # Dry-run (show what would execute) + +set -euo pipefail +cd "$(git rev-parse --show-toplevel)" + +# ── Configuration ───────────────────────────────────────────────────────────── + +WORKFLOW=".github/workflows/package-and-publish.yml" +SECRETS_JSON="scripts/ci-secrets.json" +EVENT_JSON="scripts/ci-event.json" + +if [[ ! -f "$SECRETS_JSON" ]]; then + echo "ERROR: $SECRETS_JSON not found." + echo "" + echo "Create it from the example:" + echo " cp scripts/ci-secrets.example.json scripts/ci-secrets.json" + echo " # then fill in your values" + exit 1 +fi + +# ── Generate event payload with current HEAD ────────────────────────────────── + +CURRENT_REF=$(git rev-parse HEAD) +cat > "$EVENT_JSON" < "$SECRETS_FILE" + +# Extract "vars" object → KEY=VALUE +jq -r '.vars // {} | to_entries[] | "\(.key)=\(.value)"' "$SECRETS_JSON" > "$VARS_FILE" + +echo "Loaded $(wc -l < "$SECRETS_FILE" | tr -d ' ') secrets and $(wc -l < "$VARS_FILE" | tr -d ' ') vars from $SECRETS_JSON" + +# ── Common act arguments ────────────────────────────────────────────────────── + +ACT_ARGS=( + -W "$WORKFLOW" + --secret-file "$SECRETS_FILE" + --var-file "$VARS_FILE" + --eventpath "$EVENT_JSON" + -P ubuntu-latest=catthehacker/ubuntu:act-latest + -P macos-latest=-self-hosted +) + +# ── Handle CLI flags ────────────────────────────────────────────────────────── + +if [[ "${1:-}" == "--list" ]]; then + echo "Available jobs in $WORKFLOW:" + act -W "$WORKFLOW" --list + exit 0 +fi + +if [[ "${1:-}" == "--dryrun" ]]; then + echo "Dry-run of workflow:" + act push "${ACT_ARGS[@]}" -n + exit 0 +fi + +# ── Manual macOS-native build (recommended) ─────────────────────────────────── + +if [[ "${1:-}" == "--manual" ]]; then + echo "=== Running build steps manually on macOS host ===" + echo "" + + # Export VITE_* vars from the JSON so the frontend build picks them up + eval "$(jq -r ' + (.secrets // {}) + (.vars // {}) + | to_entries[] + | select(.key | startswith("VITE_")) + | "export \(.key)=\(.value | @sh)" + ' "$SECRETS_JSON")" + + # Step 1: Ensure OpenSSL is installed + echo ">>> Step 1: Ensure OpenSSL is installed" + brew install openssl@3 2>/dev/null || true + + # Step 2: Install Node dependencies + echo ">>> Step 2: Install Node dependencies" + yarn install --frozen-lockfile + + # Step 3: Install skills dependencies and build + echo ">>> Step 3: Build skills" + (cd skills && yarn install --frozen-lockfile && yarn build) + + # Step 4: Build frontend + echo ">>> Step 4: Build frontend" + NODE_ENV=production yarn build + + # Step 5: Build Tauri (aarch64) + echo ">>> Step 5: Build Tauri app (aarch64-apple-darwin)" + yarn tauri build --target aarch64-apple-darwin + + echo "" + echo "=== Build complete ===" + echo "Check src-tauri/target/aarch64-apple-darwin/release/bundle/ for output" + exit 0 +fi + +# ── Default: run full workflow with act ──────────────────────────────────────── +# +# We run the full workflow (not -j single-job) so act executes the dependency +# chain: get-version → check-version → create-release (skipped) → package-tauri. +# Using -j package-tauri alone fails because act can't resolve outputs from +# skipped `needs` jobs. + +echo "=== Testing package-and-publish workflow locally ===" +echo "" +echo "Workflow: $WORKFLOW" +echo "Event: push to develop (from $EVENT_JSON)" +echo "" +echo "NOTE: act uses Docker containers — macOS-specific steps won't work." +echo "For a native macOS build, use: $0 --manual" +echo "" + +act push "${ACT_ARGS[@]}" --verbose diff --git a/skills b/skills index d9dfb8d97..f78b3319d 160000 --- a/skills +++ b/skills @@ -1 +1 @@ -Subproject commit d9dfb8d974609e8b0324d78888fcbd1f711178a7 +Subproject commit f78b3319d803213dee74bd13ec45ef86c1fa34dc diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 4960a8fec..9dd5203bf 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -12,7 +12,6 @@ dependencies = [ "base64 0.22.1", "chrono", "cron", - "deno_core", "dirs 5.0.1", "dotenvy", "encoding_rs", @@ -26,6 +25,7 @@ dependencies = [ "parking_lot", "rand 0.8.5", "reqwest", + "rquickjs", "rusqlite", "rust_socketio", "serde", @@ -44,12 +44,6 @@ dependencies = [ "uuid", ] -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - [[package]] name = "adler2" version = "2.0.1" @@ -133,6 +127,12 @@ dependencies = [ "alloc-no-stdlib", ] +[[package]] +name = "allocator-api2" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" + [[package]] name = "android_log-sys" version = "0.3.2" @@ -287,7 +287,7 @@ dependencies = [ "futures-lite", "parking", "polling", - "rustix 1.1.3", + "rustix", "slab", "windows-sys 0.61.2", ] @@ -318,7 +318,7 @@ dependencies = [ "cfg-if", "event-listener", "futures-lite", - "rustix 1.1.3", + "rustix", ] [[package]] @@ -344,7 +344,7 @@ dependencies = [ "cfg-if", "futures-core", "futures-io", - "rustix 1.1.3", + "rustix", "signal-hook-registry", "slab", "windows-sys 0.61.2", @@ -458,53 +458,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "base64-simd" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "781dd20c3aff0bd194fe7d2a977dd92f21c173891f3a03b677359e5fa457e5d5" -dependencies = [ - "simd-abstraction", -] - [[package]] name = "base64ct" version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06" -[[package]] -name = "bincode" -version = "1.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bindgen" -version = "0.69.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271383c67ccabffb7381723dea0672a673f292304fcb45c01cc648c7a8d58088" -dependencies = [ - "bitflags 2.10.0", - "cexpr", - "clang-sys", - "itertools", - "lazy_static", - "lazycell", - "log", - "prettyplease", - "proc-macro2", - "quote", - "regex", - "rustc-hash 1.1.0", - "shlex", - "syn 2.0.114", - "which 4.4.2", -] - [[package]] name = "bindgen" version = "0.72.1" @@ -520,26 +479,11 @@ dependencies = [ "proc-macro2", "quote", "regex", - "rustc-hash 2.1.1", + "rustc-hash", "shlex", "syn 2.0.114", ] -[[package]] -name = "bit-set" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" -dependencies = [ - "bit-vec", -] - -[[package]] -name = "bit-vec" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" - [[package]] name = "bitflags" version = "1.3.2" @@ -555,18 +499,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "bitvec" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" -dependencies = [ - "funty", - "radium", - "tap", - "wyz", -] - [[package]] name = "blake2" version = "0.10.6" @@ -725,7 +657,7 @@ checksum = "dd5eb614ed4c27c5d706420e4320fbe3216ab31fa1c33cd8246ac36dae4479ba" dependencies = [ "camino", "cargo-platform", - "semver 1.0.27", + "semver", "serde", "serde_json", "thiserror 2.0.18", @@ -903,10 +835,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" [[package]] -name = "cooked-waker" -version = "5.0.0" +name = "convert_case" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "147be55d677052dabc6b22252d5dd0fd4c29c8c27aa4f2fbef0f94aa003b406f" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] [[package]] name = "cookie" @@ -1131,86 +1066,12 @@ version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" -[[package]] -name = "debugid" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" -dependencies = [ - "serde", - "uuid", -] - [[package]] name = "deflate64" version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26bf8fc351c5ed29b5c2f0cbbac1b209b74f60ecd62e675a998df72c49af5204" -[[package]] -name = "deno_core" -version = "0.314.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83138917579676069b423c3eb9be3c1e579f60dc022d85f6ded4c792456255ff" -dependencies = [ - "anyhow", - "bincode", - "bit-set", - "bit-vec", - "bytes", - "cooked-waker", - "deno_core_icudata", - "deno_ops", - "deno_unsync", - "futures", - "libc", - "memoffset", - "parking_lot", - "percent-encoding", - "pin-project", - "serde", - "serde_json", - "serde_v8", - "smallvec", - "sourcemap", - "static_assertions", - "tokio", - "url", - "v8", -] - -[[package]] -name = "deno_core_icudata" -version = "0.0.73" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a13951ea98c0a4c372f162d669193b4c9d991512de9f2381dd161027f34b26b1" - -[[package]] -name = "deno_ops" -version = "0.190.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26f46d4e4f52f26c882b74a9b58810ea75252b807cf0966166ec333077cdfd85" -dependencies = [ - "proc-macro-rules", - "proc-macro2", - "quote", - "strum", - "strum_macros", - "syn 2.0.114", - "thiserror 1.0.69", -] - -[[package]] -name = "deno_unsync" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6742a724e8becb372a74c650a1aefb8924a5b8107f7d75b3848763ea24b27a87" -dependencies = [ - "futures-util", - "parking_lot", - "tokio", -] - [[package]] name = "deranged" version = "0.5.5" @@ -1238,10 +1099,10 @@ version = "0.99.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6edb4b64a43d977b8e99788fe3a04d483834fba1215a7e02caa415b626497f7f" dependencies = [ - "convert_case", + "convert_case 0.4.0", "proc-macro2", "quote", - "rustc_version 0.4.1", + "rustc_version", "syn 2.0.114", ] @@ -1433,7 +1294,7 @@ checksum = "55a075fc573c64510038d7ee9abc7990635863992f83ebc52c8b433b8411a02e" dependencies = [ "cc", "memchr", - "rustc_version 0.4.1", + "rustc_version", "toml 0.9.11+spec-1.1.0", "vswhom", "winreg 0.55.0", @@ -1586,7 +1447,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38e2275cc4e4fc009b0669731a1e5ab7ebf11f469eaede2bab9309a5b4d6057f" dependencies = [ "memoffset", - "rustc_version 0.4.1", + "rustc_version", ] [[package]] @@ -1611,7 +1472,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" dependencies = [ "crc32fast", - "miniz_oxide 0.8.9", + "miniz_oxide", ] [[package]] @@ -1620,6 +1481,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[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.3.2" @@ -1671,22 +1538,6 @@ dependencies = [ "percent-encoding", ] -[[package]] -name = "fslock" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "funty" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" - [[package]] name = "futf" version = "0.1.5" @@ -1923,7 +1774,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix 1.1.3", + "rustix", "windows-link 0.2.1", ] @@ -2123,15 +1974,6 @@ dependencies = [ "syn 2.0.114", ] -[[package]] -name = "gzip-header" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95cc527b92e6029a62960ad99aa8a6660faa4555fe5f731aab13aa6a921795a2" -dependencies = [ - "crc32fast", -] - [[package]] name = "h2" version = "0.4.13" @@ -2171,6 +2013,11 @@ name = "hashbrown" version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] [[package]] name = "hashlink" @@ -2214,15 +2061,6 @@ dependencies = [ "digest", ] -[[package]] -name = "home" -version = "0.5.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc627f471c528ff0c4a49e1d5e60450c8f6461dd6d10ba9dcd3a61d3dff7728d" -dependencies = [ - "windows-sys 0.61.2", -] - [[package]] name = "html5ever" version = "0.29.1" @@ -2497,12 +2335,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "if_chain" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd62e6b5e86ea8eeeb8db1de02880a6abc01a397b2ebb64b5d74ac255318f5cb" - [[package]] name = "indexmap" version = "1.9.3" @@ -2759,12 +2591,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lazycell" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" - [[package]] name = "libappindicator" version = "0.9.0" @@ -2836,12 +2662,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - [[package]] name = "linux-raw-sys" version = "0.11.0" @@ -2874,7 +2694,7 @@ version = "0.1.133" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a180dfa6d6f9d1df1e031bcdf0464bbad4f9b326395bfd28f2fa539d8cbc9c2b" dependencies = [ - "bindgen 0.72.1", + "bindgen", "cc", "cmake", "find_cuda_helper", @@ -3000,15 +2820,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" -[[package]] -name = "miniz_oxide" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" -dependencies = [ - "adler", -] - [[package]] name = "miniz_oxide" version = "0.8.9" @@ -3146,32 +2957,12 @@ dependencies = [ "zbus", ] -[[package]] -name = "num-bigint" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" -dependencies = [ - "num-integer", - "num-traits", - "rand 0.8.5", -] - [[package]] name = "num-conv" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf97ec579c3c42f953ef76dbf8d55ac91fb219dde70e49aa4a6b7d74e9919050" -[[package]] -name = "num-integer" -version = "0.1.46" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" -dependencies = [ - "num-traits", -] - [[package]] name = "num-traits" version = "0.2.19" @@ -3560,12 +3351,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "outref" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f222829ae9293e33a9f5e9f440c6760a3d450a64affe1846486b140db81c1f4" - [[package]] name = "pango" version = "0.18.3" @@ -3631,12 +3416,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "paste" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" - [[package]] name = "pathdiff" version = "0.2.3" @@ -3793,26 +3572,6 @@ dependencies = [ "siphasher 1.0.1", ] -[[package]] -name = "pin-project" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.114", -] - [[package]] name = "pin-project-lite" version = "0.2.16" @@ -3865,7 +3624,7 @@ dependencies = [ "crc32fast", "fdeflate", "flate2", - "miniz_oxide 0.8.9", + "miniz_oxide", ] [[package]] @@ -3878,7 +3637,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.3", + "rustix", "windows-sys 0.61.2", ] @@ -4008,29 +3767,6 @@ version = "0.5.20+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" -[[package]] -name = "proc-macro-rules" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07c277e4e643ef00c1233393c673f655e3672cf7eb3ba08a00bdd0ea59139b5f" -dependencies = [ - "proc-macro-rules-macros", - "proc-macro2", - "syn 2.0.114", -] - -[[package]] -name = "proc-macro-rules-macros" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "207fffb0fe655d1d47f6af98cc2793405e85929bdbc420d685554ff07be27ac7" -dependencies = [ - "once_cell", - "proc-macro2", - "quote", - "syn 2.0.114", -] - [[package]] name = "proc-macro2" version = "1.0.106" @@ -4069,7 +3805,7 @@ dependencies = [ "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "socket2", "thiserror 2.0.18", @@ -4089,7 +3825,7 @@ dependencies = [ "lru-slab", "rand 0.9.2", "ring", - "rustc-hash 2.1.1", + "rustc-hash", "rustls", "rustls-pki-types", "slab", @@ -4128,12 +3864,6 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" -[[package]] -name = "radium" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" - [[package]] name = "rand" version = "0.7.3" @@ -4330,6 +4060,15 @@ version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +[[package]] +name = "relative-path" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bca40a312222d8ba74837cb474edef44b37f561da5f773981007a10bbaa992b0" +dependencies = [ + "serde", +] + [[package]] name = "reqwest" version = "0.12.28" @@ -4392,6 +4131,54 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rquickjs" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c50dc6d6c587c339edb4769cf705867497a2baf0eca8b4645fa6ecd22f02c77a" +dependencies = [ + "rquickjs-core", + "rquickjs-macro", +] + +[[package]] +name = "rquickjs-core" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8bf7840285c321c3ab20e752a9afb95548c75cd7f4632a0627cea3507e310c1" +dependencies = [ + "async-lock", + "hashbrown 0.16.1", + "relative-path", + "rquickjs-sys", +] + +[[package]] +name = "rquickjs-macro" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7106215ff41a5677b104906a13e1a440b880f4b6362b5dc4f3978c267fad2b80" +dependencies = [ + "convert_case 0.10.0", + "fnv", + "ident_case", + "indexmap 2.13.0", + "proc-macro-crate 3.4.0", + "proc-macro2", + "quote", + "rquickjs-core", + "syn 2.0.114", +] + +[[package]] +name = "rquickjs-sys" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27344601ef27460e82d6a4e1ecb9e7e99f518122095f3c51296da8e9be2b9d83" +dependencies = [ + "cc", +] + [[package]] name = "rusqlite" version = "0.31.0" @@ -4463,47 +4250,19 @@ dependencies = [ "url", ] -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - [[package]] name = "rustc-hash" version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - [[package]] name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", -] - -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", + "semver", ] [[package]] @@ -4515,7 +4274,7 @@ dependencies = [ "bitflags 2.10.0", "errno", "libc", - "linux-raw-sys 0.11.0", + "linux-raw-sys", "windows-sys 0.61.2", ] @@ -4682,15 +4441,6 @@ dependencies = [ "smallvec", ] -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - [[package]] name = "semver" version = "1.0.27" @@ -4701,12 +4451,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "semver-parser" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" - [[package]] name = "serde" version = "1.0.228" @@ -4766,7 +4510,6 @@ version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.13.0", "itoa", "memchr", "serde", @@ -4815,19 +4558,6 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_v8" -version = "0.223.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf3d859dda87ee96423c01244f10af864fa6d6a9fcdc2b77e0595078ea0ea11" -dependencies = [ - "num-bigint", - "serde", - "smallvec", - "thiserror 1.0.69", - "v8", -] - [[package]] name = "serde_with" version = "3.16.1" @@ -4929,15 +4659,6 @@ dependencies = [ "libc", ] -[[package]] -name = "simd-abstraction" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cadb29c57caadc51ff8346233b5cec1d240b68ce55cf1afc764818791876987" -dependencies = [ - "outref", -] - [[package]] name = "simd-adler32" version = "0.3.8" @@ -5026,37 +4747,12 @@ dependencies = [ "system-deps", ] -[[package]] -name = "sourcemap" -version = "8.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "208d40b9e8cad9f93613778ea295ed8f3c2b1824217c6cfc7219d3f6f45b96d4" -dependencies = [ - "base64-simd", - "bitvec", - "data-encoding", - "debugid", - "if_chain", - "rustc-hash 1.1.0", - "rustc_version 0.2.3", - "serde", - "serde_json", - "unicode-id-start", - "url", -] - [[package]] name = "stable_deref_trait" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "string_cache" version = "0.8.9" @@ -5088,28 +4784,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "strum" -version = "0.25.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" -dependencies = [ - "strum_macros", -] - -[[package]] -name = "strum_macros" -version = "0.25.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.114", -] - [[package]] name = "subtle" version = "2.6.1" @@ -5263,12 +4937,6 @@ dependencies = [ "syn 2.0.114", ] -[[package]] -name = "tap" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" - [[package]] name = "target-lexicon" version = "0.12.16" @@ -5339,7 +5007,7 @@ dependencies = [ "heck 0.5.0", "json-patch", "schemars 0.8.22", - "semver 1.0.27", + "semver", "serde", "serde_json", "tauri-utils", @@ -5362,7 +5030,7 @@ dependencies = [ "png", "proc-macro2", "quote", - "semver 1.0.27", + "semver", "serde", "serde_json", "sha2", @@ -5576,7 +5244,7 @@ dependencies = [ "quote", "regex", "schemars 0.8.22", - "semver 1.0.27", + "semver", "serde", "serde-untagged", "serde_json", @@ -5656,7 +5324,7 @@ dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix 1.1.3", + "rustix", "windows-sys 0.61.2", ] @@ -6172,12 +5840,6 @@ dependencies = [ "unic-common", ] -[[package]] -name = "unicode-id-start" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81b79ad29b5e19de4260020f8919b443b2ef0277d242ce532ec7b7a2cc8b6007" - [[package]] name = "unicode-ident" version = "1.0.22" @@ -6261,23 +5923,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "v8" -version = "0.106.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a381badc47c6f15acb5fe0b5b40234162349ed9d4e4fd7c83a7f5547c0fc69c5" -dependencies = [ - "bindgen 0.69.5", - "bitflags 2.10.0", - "fslock", - "gzip-header", - "home", - "miniz_oxide 0.7.4", - "once_cell", - "paste", - "which 6.0.3", -] - [[package]] name = "valuable" version = "0.1.1" @@ -6552,30 +6197,6 @@ dependencies = [ "windows-core 0.61.2", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix 0.38.44", -] - -[[package]] -name = "which" -version = "6.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" -dependencies = [ - "either", - "home", - "rustix 0.38.44", - "winsafe", -] - [[package]] name = "winapi" version = "0.3.9" @@ -7124,12 +6745,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "winsafe" -version = "0.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" - [[package]] name = "wit-bindgen" version = "0.51.0" @@ -7187,15 +6802,6 @@ dependencies = [ "x11-dl", ] -[[package]] -name = "wyz" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" -dependencies = [ - "tap", -] - [[package]] name = "x11" version = "2.21.0" @@ -7271,7 +6877,7 @@ dependencies = [ "hex", "libc", "ordered-stream", - "rustix 1.1.3", + "rustix", "serde", "serde_repr", "tracing", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 7e122f2b8..93239b688 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -93,7 +93,7 @@ tauri-plugin-autostart = "2" tauri-plugin-notification = "2" # V8 JavaScript runtime (via deno_core - powers Deno) # Only available on desktop - prebuilt binaries don't exist for Android/iOS -deno_core = "0.314" +rquickjs = { version = "0.11", features = ["futures", "macro", "loader", "parallel"] } # TDLib Rust bindings (desktop only - downloads prebuilt TDLib library) tdlib-rs = { version = "1.2", features = ["download-tdlib"] } # Local LLM inference - desktop only (llama.cpp requires native C++ compilation) diff --git a/src-tauri/build.rs b/src-tauri/build.rs index f34696619..7cc371b36 100644 --- a/src-tauri/build.rs +++ b/src-tauri/build.rs @@ -1,195 +1,4 @@ fn main() { - // Get the target OS from environment variable (set by Cargo during cross-compilation) - let target = std::env::var("TARGET").unwrap_or_default(); - let is_mobile_target = target.contains("android") || target.contains("ios"); - let is_macos_target = target.contains("apple") && !target.contains("ios"); - - // TDLib build configuration (desktop only) - // The tdlib-rs crate with download-tdlib feature handles downloading and linking - // the prebuilt TDLib library automatically. - // Note: We check the TARGET env var because cfg() checks the HOST platform for build scripts. - #[cfg(not(any(target_os = "android", target_os = "ios")))] - if !is_mobile_target { - // Download and link TDLib library - // Pass None to use default download location - tdlib_rs::build::build(None); - - // On macOS, copy TDLib and its dependencies to libraries/ so that - // tauri.conf.json > bundle > macOS > frameworks can bundle them into - // the .app's Contents/Frameworks/ directory. - if is_macos_target { - prepare_macos_libraries(); - } - } - - // Add @executable_path/../Frameworks to rpath so the binary can find - // bundled dylibs at runtime (macOS only). - if is_macos_target && !is_mobile_target { - println!("cargo:rustc-link-arg=-Wl,-rpath,@executable_path/../Frameworks"); - } - + tdlib_rs::build::build(None); tauri_build::build() } - -/// Copy TDLib dylib and its non-system dependencies (OpenSSL) to src-tauri/libraries/ -/// and rewrite their install names to use @rpath so they work inside Contents/Frameworks/. -#[cfg(not(any(target_os = "android", target_os = "ios")))] -fn prepare_macos_libraries() { - use std::fs; - use std::os::unix::fs::PermissionsExt; - use std::path::{Path, PathBuf}; - - let out_dir = std::env::var("OUT_DIR").expect("OUT_DIR not set"); - let tdlib_lib_dir = PathBuf::from(&out_dir).join("tdlib").join("lib"); - let manifest_dir = - PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").expect("CARGO_MANIFEST_DIR not set")); - let dest_dir = manifest_dir.join("libraries"); - - // Create libraries/ directory - fs::create_dir_all(&dest_dir).expect("Failed to create libraries directory"); - - let tdlib_dylib = "libtdjson.1.8.29.dylib"; - let tdlib_src = tdlib_lib_dir.join(tdlib_dylib); - - if !tdlib_src.exists() { - println!( - "cargo:warning=TDLib dylib not found at {}, skipping library preparation", - tdlib_src.display() - ); - return; - } - - // Copy TDLib dylib - let tdlib_dest = dest_dir.join(tdlib_dylib); - fs::copy(&tdlib_src, &tdlib_dest).expect("Failed to copy TDLib dylib"); - make_writable(&tdlib_dest); - - // Fix TDLib's install name - run_install_name_tool(&["-id", &format!("@rpath/{tdlib_dylib}"), tdlib_dest.to_str().unwrap()]); - - // Find and bundle non-system dependencies (e.g. OpenSSL from Homebrew) - let deps = get_non_system_deps(&tdlib_dest); - for dep_path in &deps { - let dep_name = Path::new(dep_path) - .file_name() - .unwrap() - .to_str() - .unwrap(); - let dep_dest = dest_dir.join(dep_name); - - if Path::new(dep_path).exists() { - fs::copy(dep_path, &dep_dest).unwrap_or_else(|e| panic!("Failed to copy {dep_name}: {e}")); - make_writable(&dep_dest); - - // Fix the dependency's install name - run_install_name_tool(&[ - "-id", - &format!("@rpath/{dep_name}"), - dep_dest.to_str().unwrap(), - ]); - - // Update TDLib's reference to this dependency - run_install_name_tool(&[ - "-change", - dep_path, - &format!("@rpath/{dep_name}"), - tdlib_dest.to_str().unwrap(), - ]); - - println!("cargo:warning=Bundled dependency: {dep_name}"); - } else { - println!("cargo:warning=Dependency not found: {dep_path}"); - } - } - - // Fix cross-references between dependencies (e.g. libssl -> libcrypto) - let bundled_libs: Vec = fs::read_dir(&dest_dir) - .unwrap() - .filter_map(|e| e.ok()) - .map(|e| e.path()) - .filter(|p| p.extension().is_some_and(|ext| ext == "dylib")) - .collect(); - - for lib in &bundled_libs { - let lib_deps = get_non_system_deps(lib); - for dep_path in &lib_deps { - let dep_name = Path::new(dep_path) - .file_name() - .unwrap() - .to_str() - .unwrap(); - // Only fix if the dep is one we bundled - if dest_dir.join(dep_name).exists() { - run_install_name_tool(&[ - "-change", - dep_path, - &format!("@rpath/{dep_name}"), - lib.to_str().unwrap(), - ]); - } - } - } - - println!("cargo:warning=TDLib libraries prepared in libraries/"); -} - -/// Get non-system dependencies of a dylib using otool -#[cfg(not(any(target_os = "android", target_os = "ios")))] -fn get_non_system_deps(dylib_path: &std::path::Path) -> Vec { - use std::process::Command; - - let output = Command::new("otool") - .args(["-L", dylib_path.to_str().unwrap()]) - .output() - .expect("Failed to run otool"); - - let stdout = String::from_utf8_lossy(&output.stdout); - stdout - .lines() - .skip(1) // First line is the dylib itself - .filter_map(|line| { - let path = line.trim().split_whitespace().next()?; - // Keep only non-system, non-rpath paths (e.g. Homebrew libs) - if path.starts_with("/usr/lib/") - || path.starts_with("/System/") - || path.starts_with("@rpath/") - || path.starts_with("@executable_path/") - { - None - } else if path.starts_with("/opt/homebrew/") || path.starts_with("/usr/local/") { - Some(path.to_string()) - } else { - None - } - }) - .collect() -} - -/// Make a file writable (Homebrew libs are read-only) -#[cfg(not(any(target_os = "android", target_os = "ios")))] -fn make_writable(path: &std::path::Path) { - use std::os::unix::fs::PermissionsExt; - let mut perms = std::fs::metadata(path) - .expect("Failed to read file metadata") - .permissions(); - perms.set_mode(0o755); - std::fs::set_permissions(path, perms).expect("Failed to set file permissions"); -} - -/// Run install_name_tool with the given arguments -#[cfg(not(any(target_os = "android", target_os = "ios")))] -fn run_install_name_tool(args: &[&str]) { - use std::process::Command; - - let status = Command::new("install_name_tool") - .args(args) - .status() - .expect("Failed to run install_name_tool"); - - if !status.success() { - println!( - "cargo:warning=install_name_tool failed with args: {}", - args.join(" ") - ); - } -} diff --git a/src-tauri/images/background-dmg.png b/src-tauri/images/background-dmg.png index 1c8e0d7bbb1e99f7af546a88e9b5c453733ce980..0e296d3feb3fc292b7a72867f990becc1fd2e94a 100644 GIT binary patch literal 281817 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�f)PzOH02kR;8@Hh!q~)zQ?Mj; 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%0AJVsASgPU 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 literal 274576 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%0AWl_5LWVr(L>0=z-8C`W{S@4_mF^#% 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

_CK=iWtp;&b^h0aj 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%0Avqy+VagBA8=U1Hp@nmNs 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 z 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%0DpAA0a$(ka1qrYJ=?Ny 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

8i)3_(sZa;|jCvLt>?lBRhJgP}{vu+Gn78v(c zHVC4u4ikDQJ={7vyec6jvLUYPlxD*g0PfEPiuzhaxn^Q9RtDZ`pIGG%fU%r@

h* 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 Result<(), Box> { #[cfg_attr(mobile, tauri::mobile_entry_point)] pub fn run() { - // Load .env file (silently ignore if missing — production won't have one) - // Try current directory first, then parent (for when running from src-tauri) - if dotenvy::dotenv().is_err() { - if let Ok(cwd) = std::env::current_dir() { - if let Some(parent) = cwd.parent() { - let _ = dotenvy::from_path(parent.join(".env")); - } - } - } // Initialize platform-appropriate logger #[cfg(target_os = "android")] @@ -289,7 +280,7 @@ pub fn run() { ); socket_mgr.set_app_handle(app.handle().clone()); - // Initialize V8 Runtime Engine (desktop only - V8 not available on Android/iOS) + // Initialize QuickJS Runtime Engine (desktop only - not available on Android/iOS) #[cfg(not(any(target_os = "android", target_os = "ios")))] { let data_dir = app @@ -308,7 +299,7 @@ pub fn run() { services::llama::LLAMA_MANAGER.set_data_dir(model_dir); log::info!("[runtime] Local model service initialized"); - match runtime::v8_engine::RuntimeEngine::new(skills_data_dir) { + match runtime::qjs_engine::RuntimeEngine::new(skills_data_dir) { Ok(engine) => { engine.set_app_handle(app.handle().clone()); @@ -330,28 +321,29 @@ pub fn run() { cron.start(); }); - // Auto-start skills in background + // Auto-start skills in background (no delay needed for QuickJS - + // lightweight contexts don't have V8's memory reservation issue) let engine_clone = engine.clone(); tauri::async_runtime::spawn(async move { engine_clone.auto_start_skills().await; }); - log::info!("[runtime] V8 runtime engine initialized"); + log::info!("[runtime] QuickJS runtime engine initialized"); } Err(e) => { - log::error!("[runtime] Failed to initialize V8 runtime: {e}"); + log::error!("[runtime] Failed to initialize QuickJS runtime: {e}"); } } } #[cfg(target_os = "android")] { - log::info!("[runtime] V8 runtime and local model disabled on Android"); + log::info!("[runtime] QuickJS runtime and local model disabled on Android"); } #[cfg(target_os = "ios")] { - log::info!("[runtime] V8 runtime and local model disabled on iOS"); + log::info!("[runtime] QuickJS runtime and local model disabled on iOS"); } // Store SocketManager as Tauri state @@ -433,7 +425,7 @@ pub fn run() { ai_read_memory_file, ai_write_memory_file, ai_list_memory_files, - // V8 runtime commands + // Runtime commands runtime_discover_skills, runtime_list_skills, runtime_start_skill, @@ -442,14 +434,14 @@ pub fn run() { runtime_call_tool, runtime_all_tools, runtime_broadcast_event, - // V8 runtime enable/disable + KV commands + // Runtime enable/disable + KV commands runtime_enable_skill, runtime_disable_skill, runtime_is_skill_enabled, runtime_get_skill_preferences, runtime_skill_kv_get, runtime_skill_kv_set, - // V8 runtime JSON-RPC + data commands + // Runtime JSON-RPC + data commands runtime_rpc, runtime_skill_data_read, runtime_skill_data_write, @@ -525,7 +517,7 @@ pub fn run() { ai_read_memory_file, ai_write_memory_file, ai_list_memory_files, - // V8 runtime commands + // Runtime commands runtime_discover_skills, runtime_list_skills, runtime_start_skill, @@ -534,14 +526,14 @@ pub fn run() { runtime_call_tool, runtime_all_tools, runtime_broadcast_event, - // V8 runtime enable/disable + KV commands + // Runtime enable/disable + KV commands runtime_enable_skill, runtime_disable_skill, runtime_is_skill_enabled, runtime_get_skill_preferences, runtime_skill_kv_get, runtime_skill_kv_set, - // V8 runtime JSON-RPC + data commands + // Runtime JSON-RPC + data commands runtime_rpc, runtime_skill_data_read, runtime_skill_data_write, diff --git a/src-tauri/src/runtime/loader.rs b/src-tauri/src/runtime/loader.rs index f65721713..7479035de 100644 --- a/src-tauri/src/runtime/loader.rs +++ b/src-tauri/src/runtime/loader.rs @@ -1,10 +1,9 @@ -//! Custom V8 module resolver and loader for `@alphahuman/*` imports. +//! Custom module resolver and loader for `@alphahuman/*` imports. //! //! NOTE: Currently unused. Skills access bridge APIs via globals (db, store, console) -//! injected by v8_skill_instance.rs. This module is reserved for future ES module +//! injected by qjs_skill_instance.rs. This module is reserved for future ES module //! import support (e.g., `import { db } from '@alphahuman/db'`). //! //! The globals-based approach was chosen because: -//! - V8/deno_core shares the module loader across all contexts in the same runtime -//! - Per-skill module loaders would require separate runtime instances //! - Globals are simpler and sufficient for the initial implementation +//! - Per-skill module loaders can be added later if needed diff --git a/src-tauri/src/runtime/manifest.rs b/src-tauri/src/runtime/manifest.rs index edd1ba2d1..9897cbb17 100644 --- a/src-tauri/src/runtime/manifest.rs +++ b/src-tauri/src/runtime/manifest.rs @@ -86,10 +86,10 @@ impl SkillManifest { Self::from_json(&content) } - /// Whether this manifest declares a JavaScript runtime (V8). - /// Accepts "v8", "javascript" for compatibility. + /// Whether this manifest declares a JavaScript runtime (QuickJS). + /// Accepts "v8", "javascript", "quickjs" for compatibility. pub fn is_javascript(&self) -> bool { - self.runtime == "v8" || self.runtime == "javascript" + matches!(self.runtime.as_str(), "v8" | "javascript" | "quickjs") } /// Whether the skill is available on the current platform. diff --git a/src-tauri/src/runtime/mod.rs b/src-tauri/src/runtime/mod.rs index 720f9d16d..c4acfb5f1 100644 --- a/src-tauri/src/runtime/mod.rs +++ b/src-tauri/src/runtime/mod.rs @@ -1,9 +1,9 @@ -//! V8 skill runtime module. +//! QuickJS skill runtime module. //! //! Provides a persistent JavaScript execution environment for skills -//! using the V8 engine via `deno_core`. +//! using the QuickJS engine via `rquickjs`. //! -//! Note: V8/deno_core is only available on desktop platforms. +//! Note: The skill runtime is only available on desktop platforms. //! On mobile (Android/iOS), the skill runtime is disabled. // Platform-agnostic modules @@ -13,7 +13,7 @@ pub mod preferences; pub mod socket_manager; pub mod types; -// V8/deno_core modules - desktop only (no prebuilt binaries for Android/iOS) +// QuickJS modules - desktop only (not available on Android/iOS) #[cfg(not(any(target_os = "android", target_os = "ios")))] pub mod bridge; #[cfg(not(any(target_os = "android", target_os = "ios")))] @@ -21,6 +21,6 @@ pub mod cron_scheduler; #[cfg(not(any(target_os = "android", target_os = "ios")))] pub mod skill_registry; #[cfg(not(any(target_os = "android", target_os = "ios")))] -pub mod v8_engine; +pub mod qjs_engine; #[cfg(not(any(target_os = "android", target_os = "ios")))] -pub mod v8_skill_instance; +pub mod qjs_skill_instance; diff --git a/src-tauri/src/runtime/v8_engine.rs b/src-tauri/src/runtime/qjs_engine.rs similarity index 93% rename from src-tauri/src/runtime/v8_engine.rs rename to src-tauri/src/runtime/qjs_engine.rs index d54d5f8b9..cada75935 100644 --- a/src-tauri/src/runtime/v8_engine.rs +++ b/src-tauri/src/runtime/qjs_engine.rs @@ -1,7 +1,7 @@ -//! RuntimeEngine — top-level orchestrator for the V8 skill runtime. +//! RuntimeEngine — top-level orchestrator for the QuickJS skill runtime. //! //! Manages skill lifecycle and provides the public API consumed by Tauri commands. -//! Uses V8 (via deno_core) for JavaScript execution. +//! Uses QuickJS (via rquickjs) for JavaScript execution. use std::path::PathBuf; use std::sync::Arc; @@ -14,10 +14,10 @@ use crate::runtime::manifest::SkillManifest; use crate::runtime::preferences::PreferencesStore; use crate::runtime::skill_registry::SkillRegistry; use crate::runtime::types::{events, SkillSnapshot, SkillStatus, ToolResult}; -use crate::runtime::v8_skill_instance::{BridgeDeps, V8SkillInstance}; +use crate::runtime::qjs_skill_instance::{BridgeDeps, QjsSkillInstance}; use crate::services::tdlib_v8::storage::IdbStorage; -/// The central runtime engine using V8. +/// The central runtime engine using QuickJS. pub struct RuntimeEngine { /// Registry of all skills. registry: Arc, @@ -43,7 +43,7 @@ impl RuntimeEngine { cron_scheduler.set_registry(Arc::clone(®istry)); let preferences = Arc::new(PreferencesStore::new(&skills_data_dir)); - log::info!("[runtime] V8 RuntimeEngine created"); + log::info!("[runtime] QuickJS RuntimeEngine created"); Ok(Self { registry, @@ -111,9 +111,7 @@ impl RuntimeEngine { } // 4. Production: bundled resources - // Tauri converts "../" to "_up_/" when bundling resources with array notation if let Some(resource_dir) = self.resource_dir.read().as_ref() { - // Try: $RESOURCE/_up_/skills/skills/ (array notation with ../) let bundled_skills = resource_dir.join("_up_").join("skills").join("skills"); if bundled_skills.exists() { log::info!( @@ -123,7 +121,6 @@ impl RuntimeEngine { return Ok(bundled_skills); } - // Try: $RESOURCE/skills/ (map notation) let bundled_skills_alt = resource_dir.join("skills"); if bundled_skills_alt.exists() { log::info!( @@ -140,7 +137,7 @@ impl RuntimeEngine { ); } - // 5. Final fallback: app data dir (for user-installed skills) + // 5. Final fallback: app data dir let prod_dir = self.skills_data_dir.clone(); log::info!( "[runtime] Skills source dir (data dir fallback): {:?}", @@ -184,7 +181,6 @@ impl RuntimeEngine { ); } Ok(_) => { - // Not a JavaScript skill, skip log::info!( "[runtime] Skipping skill '{}': not a JavaScript skill", manifest_path.display() @@ -227,7 +223,7 @@ impl RuntimeEngine { let manifest = SkillManifest::from_path(&manifest_path).await?; if !manifest.is_javascript() { return Err(format!( - "Skill '{}' uses runtime '{}', not 'v8' or 'javascript'", + "Skill '{}' uses runtime '{}', not a supported JavaScript runtime", skill_id, manifest.runtime )); } @@ -235,15 +231,15 @@ impl RuntimeEngine { let config = manifest.to_config(); let data_dir = self.skills_data_dir.join(skill_id); - // Create the V8 skill instance - log::info!("[runtime] Creating V8 skill instance for '{}'", skill_id); + // Create the QuickJS skill instance + log::info!("[runtime] Creating QuickJS skill instance for '{}'", skill_id); log::info!("[runtime] Config: {:?}", config); log::info!("[runtime] Skill dir: {:?}", skill_dir); log::info!("[runtime] Data dir: {:?}", data_dir); - let (instance, rx) = V8SkillInstance::new(config.clone(), skill_dir, data_dir.clone()); - log::info!("[runtime] V8 skill instance created for '{}'", skill_id); + let (instance, rx) = QjsSkillInstance::new(config.clone(), skill_dir, data_dir.clone()); + log::info!("[runtime] QuickJS skill instance created for '{}'", skill_id); - // Bundle bridge dependencies + // Bundle bridge dependencies (no creation lock needed for QuickJS) let deps = BridgeDeps { cron_scheduler: self.cron_scheduler.clone(), skill_registry: self.registry.clone(), @@ -265,8 +261,7 @@ impl RuntimeEngine { self.emit_status_change(skill_id); - // Wait for initialization to complete (Running or Error status) - // with a reasonable timeout + // Wait for initialization to complete let state = instance.state.clone(); let skill_id_owned = skill_id.to_string(); let max_wait = std::time::Duration::from_secs(10); @@ -278,12 +273,10 @@ impl RuntimeEngine { match current_status { SkillStatus::Running => { - // Successfully started self.emit_status_change(&skill_id_owned); return Ok(instance.snapshot()); } SkillStatus::Error => { - // Initialization failed - unregister and return error let error_msg = state .read() .error @@ -297,7 +290,6 @@ impl RuntimeEngine { )); } SkillStatus::Stopped => { - // Skill stopped unexpectedly during init self.registry.unregister(&skill_id_owned); return Err(format!( "Skill '{}' stopped unexpectedly during initialization", @@ -305,9 +297,7 @@ impl RuntimeEngine { )); } SkillStatus::Initializing | SkillStatus::Pending => { - // Still initializing, continue waiting if start.elapsed() > max_wait { - // Timeout - skill is taking too long log::warn!( "[runtime] Skill '{}' initialization timeout, returning current state", skill_id_owned @@ -317,7 +307,6 @@ impl RuntimeEngine { tokio::time::sleep(poll_interval).await; } SkillStatus::Stopping => { - // Unexpected state during startup return Err(format!( "Skill '{}' is in unexpected Stopping state during startup", skill_id_owned @@ -375,6 +364,7 @@ impl RuntimeEngine { } /// Auto-start skills based on user preferences. + /// No stagger delay needed for QuickJS (lightweight contexts). pub async fn auto_start_skills(&self) { match self.discover_skills().await { Ok(manifests) => { diff --git a/src-tauri/src/runtime/qjs_skill_instance.rs b/src-tauri/src/runtime/qjs_skill_instance.rs new file mode 100644 index 000000000..a000c6857 --- /dev/null +++ b/src-tauri/src/runtime/qjs_skill_instance.rs @@ -0,0 +1,649 @@ +//! QjsSkillInstance — manages one QuickJS context per skill. +//! +//! Key differences from V8 version: +//! - QuickJS contexts are Send+Sync with `parallel` feature, so we use regular tokio::spawn (not spawn_blocking) +//! - No V8 creation lock needed (QuickJS contexts are lightweight ~1-2MB) +//! - No stagger delay needed between skill starts +//! - Direct memory limits via `rt.set_memory_limit()` +//! - Uses `ctx.eval::(code)` instead of `runtime.execute_script()` +//! - Simplified error handling with rquickjs::Error + +use std::collections::HashMap; +use std::path::PathBuf; +use std::sync::Arc; +use std::time::Duration; + +use parking_lot::RwLock; +use tokio::sync::mpsc; + +use crate::runtime::cron_scheduler::CronScheduler; +use crate::runtime::skill_registry::SkillRegistry; +use crate::runtime::types::{ + SkillConfig, SkillMessage, SkillSnapshot, SkillStatus, ToolContent, ToolDefinition, ToolResult, +}; +use crate::services::tdlib_v8::{qjs_ops, IdbStorage}; + +/// Dependencies passed to a skill instance for bridge installation. +#[allow(dead_code)] +pub struct BridgeDeps { + pub cron_scheduler: Arc, + pub skill_registry: Arc, + pub app_handle: Option, + pub data_dir: PathBuf, + // NOTE: No v8_creation_lock - QuickJS doesn't need it +} + +/// Shared mutable state for a skill instance. +pub struct SkillState { + pub status: SkillStatus, + pub tools: Vec, + pub error: Option, + pub published_state: HashMap, +} + +impl Default for SkillState { + fn default() -> Self { + Self { + status: SkillStatus::Pending, + tools: Vec::new(), + error: None, + published_state: HashMap::new(), + } + } +} + +/// A running skill instance using QuickJS. +pub struct QjsSkillInstance { + pub config: SkillConfig, + pub state: Arc>, + pub sender: mpsc::Sender, + pub skill_dir: PathBuf, + pub data_dir: PathBuf, +} + +impl QjsSkillInstance { + /// Create a new QuickJS skill instance. + pub fn new( + config: SkillConfig, + skill_dir: PathBuf, + data_dir: PathBuf, + ) -> (Self, mpsc::Receiver) { + let (tx, rx) = mpsc::channel(64); + let instance = Self { + config, + state: Arc::new(RwLock::new(SkillState::default())), + sender: tx, + skill_dir, + data_dir, + }; + (instance, rx) + } + + /// Take a snapshot of the current skill state. + pub fn snapshot(&self) -> SkillSnapshot { + let state = self.state.read(); + SkillSnapshot { + skill_id: self.config.skill_id.clone(), + name: self.config.name.clone(), + status: state.status, + tools: state.tools.clone(), + error: state.error.clone(), + state: state.published_state.clone(), + } + } + + /// Spawn the skill's execution loop as a tokio task. + /// Unlike V8 (which needed spawn_blocking), QuickJS contexts are Send. + pub fn spawn( + &self, + mut rx: mpsc::Receiver, + _deps: BridgeDeps, + ) -> tokio::task::JoinHandle<()> { + let config = self.config.clone(); + let state = self.state.clone(); + let skill_dir = self.skill_dir.clone(); + let data_dir = self.data_dir.clone(); + + tokio::spawn(async move { + // Update status + state.write().status = SkillStatus::Initializing; + + // Create storage + let storage = match IdbStorage::new(&data_dir) { + Ok(s) => s, + Err(e) => { + let mut s = state.write(); + s.status = SkillStatus::Error; + s.error = Some(format!("Failed to create storage: {e}")); + log::error!("[skill:{}] Storage creation failed: {e}", config.skill_id); + return; + } + }; + + // Read the entry point JS file + let entry_path = skill_dir.join(&config.entry_point); + let js_source = match tokio::fs::read_to_string(&entry_path).await { + Ok(src) => src, + Err(e) => { + let mut s = state.write(); + s.status = SkillStatus::Error; + s.error = Some(format!("Failed to read {}: {e}", config.entry_point)); + log::error!("[skill:{}] Failed to read entry point: {e}", config.skill_id); + return; + } + }; + + // Create QuickJS runtime with memory limits + let rt = match rquickjs::AsyncRuntime::new() { + Ok(rt) => rt, + Err(e) => { + let mut s = state.write(); + s.status = SkillStatus::Error; + s.error = Some(format!("Failed to create QuickJS runtime: {e}")); + log::error!("[skill:{}] Failed to create QuickJS runtime: {e}", config.skill_id); + return; + } + }; + + // Set memory limit (config.memory_limit is in bytes) + rt.set_memory_limit(config.memory_limit).await; + rt.set_max_stack_size(512 * 1024).await; // 512KB stack + + // Create context with full standard library + let ctx = match rquickjs::AsyncContext::full(&rt).await { + Ok(ctx) => ctx, + Err(e) => { + let mut s = state.write(); + s.status = SkillStatus::Error; + s.error = Some(format!("Failed to create QuickJS context: {e}")); + log::error!("[skill:{}] Failed to create context: {e}", config.skill_id); + return; + } + }; + + // Create shared timer state + let timer_state = Arc::new(RwLock::new(qjs_ops::TimerState::default())); + + // Create WebSocket state + let ws_state = Arc::new(RwLock::new(qjs_ops::WebSocketState::default())); + + // Create published skill state (different from SkillState above) + let published_state = Arc::new(RwLock::new(qjs_ops::SkillState::default())); + + // Register ops and run bootstrap + skill code + let skill_id = config.skill_id.clone(); + let init_result = ctx.with(|js_ctx| { + // Register native ops as __ops global + let skill_context = qjs_ops::SkillContext { + skill_id: skill_id.clone(), + data_dir: data_dir.clone(), + }; + + if let Err(e) = qjs_ops::register_ops( + &js_ctx, + storage.clone(), + skill_context, + published_state.clone(), + timer_state.clone(), + ws_state.clone(), + ) { + return Err(format!("Failed to register ops: {e}")); + } + + // Load bootstrap + let bootstrap_code = include_str!("../services/tdlib_v8/bootstrap.js"); + if let Err(e) = js_ctx.eval::(bootstrap_code) { + let err_str = format!("Bootstrap failed: {e}"); + return Err(err_str); + } + + // Set skill ID + let bridge_code = format!( + r#"globalThis.__skillId = "{}";"#, + skill_id.replace('"', r#"\""#) + ); + if let Err(e) = js_ctx.eval::(bridge_code.as_bytes()) { + return Err(format!("Skill init failed: {e}")); + } + + // Execute the skill's entry point + if let Err(e) = js_ctx.eval::(js_source.as_bytes()) { + return Err(format!("Skill load failed: {e}")); + } + + // Extract tool definitions + extract_tools(&js_ctx, &state); + + Ok(()) + }).await; + + if let Err(e) = init_result { + let mut s = state.write(); + s.status = SkillStatus::Error; + s.error = Some(e.clone()); + log::error!("[skill:{}] {e}", config.skill_id); + return; + } + + // Call init() lifecycle + if let Err(e) = call_lifecycle(&ctx, "init").await { + let mut s = state.write(); + s.status = SkillStatus::Error; + s.error = Some(format!("init() failed: {e}")); + log::error!("[skill:{}] init() failed: {e}", config.skill_id); + return; + } + + // Execute pending jobs after init (process promises) + drive_jobs(&rt).await; + + // Call start() lifecycle + if let Err(e) = call_lifecycle(&ctx, "start").await { + let mut s = state.write(); + s.status = SkillStatus::Error; + s.error = Some(format!("start() failed: {e}")); + log::error!("[skill:{}] start() failed: {e}", config.skill_id); + return; + } + + // Execute pending jobs after start + drive_jobs(&rt).await; + + // Mark as running + state.write().status = SkillStatus::Running; + log::info!("[skill:{}] Running (QuickJS)", config.skill_id); + + // Run the event loop + run_event_loop(&rt, &ctx, &mut rx, &state, &config.skill_id, &timer_state).await; + }) + } +} + +// ============================================================================ +// Event Loop +// ============================================================================ + +/// The main event loop that drives the QuickJS runtime. +/// This continuously: +/// 1. Polls for ready timers and fires their callbacks +/// 2. Checks for incoming messages (non-blocking) +/// 3. Runs the QuickJS job queue for promises/async ops +/// 4. Sleeps efficiently when idle +async fn run_event_loop( + rt: &rquickjs::AsyncRuntime, + ctx: &rquickjs::AsyncContext, + rx: &mut mpsc::Receiver, + state: &Arc>, + skill_id: &str, + timer_state: &Arc>, +) { + // Maximum sleep duration when no timers are pending + const MAX_IDLE_SLEEP: Duration = Duration::from_millis(100); + // Minimum sleep to prevent busy-spinning + const MIN_SLEEP: Duration = Duration::from_millis(1); + + loop { + // 1. Poll and fire ready timers + let ready_timers = { + let (ready, _next) = qjs_ops::poll_timers(timer_state); + ready + }; + + // Fire timer callbacks in JavaScript + for timer_id in ready_timers { + fire_timer_callback(ctx, timer_id).await; + } + + // 2. Check for incoming messages (non-blocking) + match rx.try_recv() { + Ok(msg) => { + let should_stop = handle_message(ctx, msg, state, skill_id).await; + if should_stop { + break; + } + } + Err(mpsc::error::TryRecvError::Empty) => { + // No message - that's fine + } + Err(mpsc::error::TryRecvError::Disconnected) => { + // Channel closed, exit + log::info!("[skill:{}] Message channel disconnected, stopping", skill_id); + break; + } + } + + // 3. Drive QuickJS job queue (process pending promises) + drive_jobs(rt).await; + + // 4. Calculate sleep duration based on next timer + let sleep_duration = { + let (_, next_timer) = qjs_ops::poll_timers(timer_state); + match next_timer { + Some(d) if d < MIN_SLEEP => MIN_SLEEP, + Some(d) if d > MAX_IDLE_SLEEP => MAX_IDLE_SLEEP, + Some(d) => d, + None => MAX_IDLE_SLEEP, + } + }; + + // Sleep efficiently - this yields the thread when no work is needed + tokio::time::sleep(sleep_duration).await; + } +} + +/// Drive the QuickJS job queue until no more jobs are pending. +async fn drive_jobs(rt: &rquickjs::AsyncRuntime) { + // idle() runs all pending futures and jobs + rt.idle().await; +} + +/// Fire a timer callback in JavaScript. +async fn fire_timer_callback(ctx: &rquickjs::AsyncContext, timer_id: u32) { + let code = format!("globalThis.__handleTimer({});", timer_id); + ctx.with(|js_ctx| { + if let Err(e) = js_ctx.eval::(code.as_bytes()) { + log::error!("[timer] Callback for timer {} failed: {}", timer_id, e); + } + }).await; +} + +/// Handle a single message from the channel. +/// Returns true if the skill should stop. +async fn handle_message( + ctx: &rquickjs::AsyncContext, + msg: SkillMessage, + state: &Arc>, + skill_id: &str, +) -> bool { + match msg { + SkillMessage::CallTool { tool_name, arguments, reply } => { + let result = handle_tool_call(ctx, &tool_name, arguments).await; + let _ = reply.send(result); + } + SkillMessage::ServerEvent { event, data } => { + let _ = handle_server_event(ctx, &event, data).await; + } + SkillMessage::CronTrigger { schedule_id } => { + let _ = handle_cron_trigger(ctx, &schedule_id).await; + } + SkillMessage::Stop { reply } => { + let _ = call_lifecycle(ctx, "stop").await; + state.write().status = SkillStatus::Stopped; + log::info!("[skill:{}] Stopped", skill_id); + let _ = reply.send(()); + return true; // Signal to stop + } + SkillMessage::SetupStart { reply } => { + let result = handle_js_call(ctx, "onSetupStart", "{}").await; + let _ = reply.send(result); + } + SkillMessage::SetupSubmit { step_id, values, reply } => { + let args = serde_json::json!({ "stepId": step_id, "values": values }); + let result = handle_js_call(ctx, "onSetupSubmit", &args.to_string()).await; + let _ = reply.send(result); + } + SkillMessage::SetupCancel { reply } => { + let result = handle_js_void_call(ctx, "onSetupCancel", "{}").await; + let _ = reply.send(result); + } + SkillMessage::ListOptions { reply } => { + let result = handle_js_call(ctx, "onListOptions", "{}").await; + let _ = reply.send(result); + } + SkillMessage::SetOption { name, value, reply } => { + let args = serde_json::json!({ "name": name, "value": value }); + let result = handle_js_void_call(ctx, "onSetOption", &args.to_string()).await; + let _ = reply.send(result); + } + SkillMessage::SessionStart { session_id, reply } => { + let args = serde_json::json!({ "sessionId": session_id }); + let result = handle_js_void_call(ctx, "onSessionStart", &args.to_string()).await; + let _ = reply.send(result); + } + SkillMessage::SessionEnd { session_id, reply } => { + let args = serde_json::json!({ "sessionId": session_id }); + let result = handle_js_void_call(ctx, "onSessionEnd", &args.to_string()).await; + let _ = reply.send(result); + } + SkillMessage::Tick { reply } => { + let result = handle_js_void_call(ctx, "onTick", "{}").await; + let _ = reply.send(result); + } + SkillMessage::Rpc { method, params, reply } => { + let args = serde_json::json!({ "method": method, "params": params }); + let result = handle_js_call(ctx, "onRpc", &args.to_string()).await; + let _ = reply.send(result); + } + } + false // Don't stop +} + +// ============================================================================ +// Helper Functions +// ============================================================================ + +/// Call a lifecycle function on the skill object. +/// Looks for the skill at globalThis.__skill.default first, then falls back to globalThis. +async fn call_lifecycle(ctx: &rquickjs::AsyncContext, name: &str) -> Result<(), String> { + let name = name.to_string(); + ctx.with(|js_ctx| { + let code = format!( + r#"(function() {{ + var skill = globalThis.__skill && globalThis.__skill.default + ? globalThis.__skill.default + : (globalThis.__skill || globalThis); + if (typeof skill.{name} === 'function') {{ + skill.{name}(); + }} else if (typeof globalThis.{name} === 'function') {{ + globalThis.{name}(); + }} + }})()"# + ); + js_ctx.eval::(code.as_bytes()) + .map_err(|e| format!("{name}() failed: {e}"))?; + Ok(()) + }).await +} + +/// Extract tool definitions from the skill. +fn extract_tools(js_ctx: &rquickjs::Ctx<'_>, state: &Arc>) { + let code = r#" + (function() { + var skill = globalThis.__skill && globalThis.__skill.default + ? globalThis.__skill.default + : (globalThis.__skill || null); + var tools = (skill && skill.tools) || globalThis.tools || []; + return JSON.stringify(tools.map(function(t) { + return { + name: t.name || "", + description: t.description || "", + input_schema: t.inputSchema || t.input_schema || {} + }; + })); + })() + "#; + + // eval with String type hint tells rquickjs to convert the result to a Rust String + match js_ctx.eval::(code) { + Ok(json_str) => { + match serde_json::from_str::>(&json_str) { + Ok(tools) => { + state.write().tools = tools; + } + Err(e) => { + log::warn!("[tools] Failed to parse tools JSON: {e}"); + } + } + } + Err(e) => { + log::warn!("[tools] Failed to extract tools: {e}"); + } + } +} + +/// Handle a tool call. +async fn handle_tool_call( + ctx: &rquickjs::AsyncContext, + tool_name: &str, + arguments: serde_json::Value, +) -> Result { + let args_str = serde_json::to_string(&arguments) + .map_err(|e| format!("Failed to serialize args: {e}"))?; + let tool_name = tool_name.to_string(); + + let result_text = ctx.with(|js_ctx| { + let code = format!( + r#"(function() {{ + var skill = globalThis.__skill && globalThis.__skill.default + ? globalThis.__skill.default + : (globalThis.__skill || null); + var tools = (skill && skill.tools) || globalThis.tools || []; + for (var i = 0; i < tools.length; i++) {{ + if (tools[i].name === "{}") {{ + var args = {}; + var result = tools[i].execute(args); + if (result && typeof result === 'object') {{ + return JSON.stringify(result); + }} + return String(result); + }} + }} + throw new Error("Tool '{}' not found"); + }})()"#, + tool_name.replace('"', r#"\""#), + args_str, + tool_name.replace('"', r#"\""#), + ); + + match js_ctx.eval::(code.as_bytes()) { + Ok(s) => Ok(s), + Err(e) => Err(format!("Tool execution failed: {e}")) + } + }).await?; + + Ok(ToolResult { + content: vec![ToolContent::Text { text: result_text }], + is_error: false, + }) +} + +/// Handle a server event. +async fn handle_server_event( + ctx: &rquickjs::AsyncContext, + event: &str, + data: serde_json::Value, +) -> Result<(), String> { + let data_str = serde_json::to_string(&data).unwrap_or_else(|_| "null".to_string()); + let event = event.to_string(); + + ctx.with(|js_ctx| { + let code = format!( + r#"(function() {{ + var skill = globalThis.__skill && globalThis.__skill.default + ? globalThis.__skill.default + : (globalThis.__skill || globalThis); + if (typeof skill.onServerEvent === 'function') {{ + skill.onServerEvent("{}", {}); + }} else if (typeof globalThis.onServerEvent === 'function') {{ + globalThis.onServerEvent("{}", {}); + }} + }})()"#, + event.replace('"', r#"\""#), + data_str, + event.replace('"', r#"\""#), + data_str, + ); + + js_ctx.eval::(code.as_bytes()) + .map_err(|e| format!("Event handler failed: {e}"))?; + Ok(()) + }).await +} + +/// Handle a cron trigger. +async fn handle_cron_trigger(ctx: &rquickjs::AsyncContext, schedule_id: &str) -> Result<(), String> { + let schedule_id = schedule_id.to_string(); + ctx.with(|js_ctx| { + let code = format!( + r#"(function() {{ + var skill = globalThis.__skill && globalThis.__skill.default + ? globalThis.__skill.default + : (globalThis.__skill || globalThis); + if (typeof skill.onCronTrigger === 'function') {{ + skill.onCronTrigger("{}"); + }} else if (typeof globalThis.onCronTrigger === 'function') {{ + globalThis.onCronTrigger("{}"); + }} + }})()"#, + schedule_id.replace('"', r#"\""#), + schedule_id.replace('"', r#"\""#), + ); + js_ctx.eval::(code.as_bytes()) + .map_err(|e| format!("Cron trigger failed: {e}")) + .map(|_| ()) + }).await +} + +/// Call a JS function on the skill object that returns a JSON value. +async fn handle_js_call( + ctx: &rquickjs::AsyncContext, + fn_name: &str, + args_json: &str, +) -> Result { + let fn_name = fn_name.to_string(); + let args_json = args_json.to_string(); + + let result_text = ctx.with(|js_ctx| { + let code = format!( + r#"(function() {{ + var skill = globalThis.__skill && globalThis.__skill.default + ? globalThis.__skill.default + : (globalThis.__skill || globalThis); + var fn = skill.{fn_name} || globalThis.{fn_name}; + if (typeof fn === 'function') {{ + var args = {args_json}; + var result = fn.call(skill, args); + return JSON.stringify(result); + }} + return "null"; + }})()"# + ); + + match js_ctx.eval::(code.as_bytes()) { + Ok(s) => Ok(s), + Err(e) => Err(format!("{fn_name}() failed: {e}")) + } + }).await?; + + serde_json::from_str(&result_text) + .map_err(|e| format!("{fn_name}() returned invalid JSON: {e}")) +} + +/// Call a JS function on the skill object that returns void. +async fn handle_js_void_call( + ctx: &rquickjs::AsyncContext, + fn_name: &str, + args_json: &str, +) -> Result<(), String> { + let fn_name = fn_name.to_string(); + let args_json = args_json.to_string(); + + ctx.with(|js_ctx| { + let code = format!( + r#"(function() {{ + var skill = globalThis.__skill && globalThis.__skill.default + ? globalThis.__skill.default + : (globalThis.__skill || globalThis); + var fn = skill.{fn_name} || globalThis.{fn_name}; + if (typeof fn === 'function') {{ + var args = {args_json}; + fn.call(skill, args); + }} + }})()"# + ); + + js_ctx.eval::(code.as_bytes()) + .map_err(|e| format!("{fn_name}() failed: {e}")) + .map(|_| ()) + }).await +} diff --git a/src-tauri/src/runtime/skill_registry.rs b/src-tauri/src/runtime/skill_registry.rs index 96dc5e67a..7584a39d9 100644 --- a/src-tauri/src/runtime/skill_registry.rs +++ b/src-tauri/src/runtime/skill_registry.rs @@ -6,7 +6,7 @@ use std::sync::Arc; use parking_lot::RwLock; use tokio::sync::{mpsc, oneshot}; -use crate::runtime::v8_skill_instance::SkillState; +use crate::runtime::qjs_skill_instance::SkillState; use crate::runtime::types::{ SkillConfig, SkillMessage, SkillSnapshot, SkillStatus, ToolDefinition, ToolResult, }; diff --git a/src-tauri/src/runtime/socket_manager.rs b/src-tauri/src/runtime/socket_manager.rs index f2f043738..a8e9ce957 100644 --- a/src-tauri/src/runtime/socket_manager.rs +++ b/src-tauri/src/runtime/socket_manager.rs @@ -30,7 +30,7 @@ use rust_socketio::{ Event, Payload, }; -// SkillRegistry only available on desktop (V8/deno_core required) +// SkillRegistry only available on desktop (QuickJS required) #[cfg(not(any(target_os = "android", target_os = "ios")))] use crate::runtime::skill_registry::SkillRegistry; diff --git a/src-tauri/src/runtime/v8_skill_instance.rs b/src-tauri/src/runtime/v8_skill_instance.rs deleted file mode 100644 index 13c516c65..000000000 --- a/src-tauri/src/runtime/v8_skill_instance.rs +++ /dev/null @@ -1,712 +0,0 @@ -//! V8SkillInstance — manages one V8 context per skill. -//! -//! Each skill runs on its own dedicated thread (V8's JsRuntime is not Send) -//! with: -//! - A scoped SQLite database -//! - Bridge globals (db, store, net, platform, console) -//! - An async event loop that drives timers, promises, and handles messages -//! - Lifecycle hooks: init() -> start() -> [event loop] -> stop() - -use std::collections::HashMap; -use std::path::PathBuf; -use std::sync::Arc; -use std::time::Duration; - -use deno_core::{v8, JsRuntime, PollEventLoopOptions, RuntimeOptions}; -use parking_lot::RwLock; -use tokio::sync::mpsc; - -use crate::runtime::cron_scheduler::CronScheduler; -use crate::runtime::skill_registry::SkillRegistry; -use crate::runtime::types::{ - SkillConfig, SkillMessage, SkillSnapshot, SkillStatus, ToolContent, ToolDefinition, ToolResult, -}; -use crate::services::tdlib_v8::{ops, IdbStorage}; - -/// Dependencies passed to a skill instance for bridge installation. -/// Currently not all fields are used, but they're kept for future feature parity. -#[allow(dead_code)] -pub struct BridgeDeps { - pub cron_scheduler: Arc, - pub skill_registry: Arc, - pub app_handle: Option, - pub data_dir: PathBuf, -} - -/// Shared mutable state for a skill instance. -pub struct SkillState { - pub status: SkillStatus, - pub tools: Vec, - pub error: Option, - pub published_state: HashMap, -} - -impl Default for SkillState { - fn default() -> Self { - Self { - status: SkillStatus::Pending, - tools: Vec::new(), - error: None, - published_state: HashMap::new(), - } - } -} - -/// A running skill instance using V8. -pub struct V8SkillInstance { - pub config: SkillConfig, - pub state: Arc>, - pub sender: mpsc::Sender, - pub skill_dir: PathBuf, - pub data_dir: PathBuf, -} - -impl V8SkillInstance { - /// Create a new V8 skill instance. - pub fn new( - config: SkillConfig, - skill_dir: PathBuf, - data_dir: PathBuf, - ) -> (Self, mpsc::Receiver) { - let (tx, rx) = mpsc::channel(64); - let instance = Self { - config, - state: Arc::new(RwLock::new(SkillState::default())), - sender: tx, - skill_dir, - data_dir, - }; - (instance, rx) - } - - /// Take a snapshot of the current skill state. - pub fn snapshot(&self) -> SkillSnapshot { - let state = self.state.read(); - SkillSnapshot { - skill_id: self.config.skill_id.clone(), - name: self.config.name.clone(), - status: state.status, - tools: state.tools.clone(), - error: state.error.clone(), - state: state.published_state.clone(), - } - } - - /// Spawn the skill's execution loop in a dedicated thread. - /// Returns a JoinHandle wrapped in a tokio task for compatibility. - pub fn spawn( - &self, - mut rx: mpsc::Receiver, - _deps: BridgeDeps, - ) -> tokio::task::JoinHandle<()> { - let config = self.config.clone(); - let state = self.state.clone(); - let skill_dir = self.skill_dir.clone(); - let data_dir = self.data_dir.clone(); - - // Use std::thread::spawn since JsRuntime is not Send - // Wrap in tokio task for API compatibility - tokio::task::spawn_blocking(move || { - // Update status - state.write().status = SkillStatus::Initializing; - - // Create storage - let storage = match IdbStorage::new(&data_dir) { - Ok(s) => s, - Err(e) => { - let mut s = state.write(); - s.status = SkillStatus::Error; - s.error = Some(format!("Failed to create storage: {e}")); - log::error!("[skill:{}] Storage creation failed: {e}", config.skill_id); - return; - } - }; - - // Read the entry point JS file synchronously - let entry_path = skill_dir.join(&config.entry_point); - let js_source = match std::fs::read_to_string(&entry_path) { - Ok(src) => src, - Err(e) => { - let mut s = state.write(); - s.status = SkillStatus::Error; - s.error = Some(format!("Failed to read {}: {e}", config.entry_point)); - log::error!("[skill:{}] Failed to read entry point: {e}", config.skill_id); - return; - } - }; - - // Create V8 runtime with memory limits to prevent OOM crashes. - // Each skill gets its own V8 isolate; without limits V8 tries to reserve - // ~1.4 GB per isolate which can exhaust memory when multiple skills start. - let extension = ops::build_extension(storage.clone()); - let create_params = v8::CreateParams::default() - .heap_limits(0, config.memory_limit); - let mut runtime = match JsRuntime::try_new(RuntimeOptions { - extensions: vec![extension], - create_params: Some(create_params), - ..Default::default() - }) { - Ok(rt) => rt, - Err(e) => { - let mut s = state.write(); - s.status = SkillStatus::Error; - s.error = Some(format!("Failed to create V8 runtime: {e}")); - log::error!( - "[skill:{}] Failed to create V8 runtime (memory_limit={}): {e}", - config.skill_id, - config.memory_limit - ); - return; - } - }; - - // Set skill context in op state - { - let op_state = runtime.op_state(); - let mut state_ref = op_state.borrow_mut(); - ops::init_state_with_data_dir( - &mut state_ref, - storage, - config.skill_id.clone(), - data_dir.clone(), - state.clone(), - ); - } - - // Load bootstrap - let bootstrap_code = include_str!("../services/tdlib_v8/bootstrap.js"); - if let Err(e) = runtime.execute_script("", bootstrap_code.to_string()) { - let mut s = state.write(); - s.status = SkillStatus::Error; - s.error = Some(format!("Bootstrap failed: {e}")); - log::error!("[skill:{}] Bootstrap failed: {e}", config.skill_id); - return; - } - - // Install skill-specific bridges - let skill_id = config.skill_id.clone(); - let bridge_code = format!( - r#"globalThis.__skillId = "{}";"#, - skill_id.replace('"', r#"\""#) - ); - - if let Err(e) = runtime.execute_script("", bridge_code) { - let mut s = state.write(); - s.status = SkillStatus::Error; - s.error = Some(format!("Skill init failed: {e}")); - return; - } - - // Execute the skill's entry point - // Use a static string for the filename - let filename: &'static str = Box::leak(format!("", config.skill_id).into_boxed_str()); - if let Err(e) = runtime.execute_script(filename, js_source) { - let mut s = state.write(); - s.status = SkillStatus::Error; - s.error = Some(format!("Skill load failed: {e}")); - log::error!("[skill:{}] Load failed: {e}", config.skill_id); - return; - } - - // Extract tool definitions - extract_tools(&mut runtime, &state); - - // Create a tokio runtime for this thread FIRST - all async ops must run inside it - // This is critical because deno_unsync requires CurrentThread runtime for async ops - let rt = tokio::runtime::Builder::new_current_thread() - .enable_all() - .build() - .expect("Failed to create tokio runtime"); - - // Run the entire lifecycle inside the CurrentThread runtime - rt.block_on(async { - // Call init() - if let Err(e) = call_lifecycle_fn_async(&mut runtime, "init").await { - let mut s = state.write(); - s.status = SkillStatus::Error; - s.error = Some(format!("init() failed: {e}")); - log::error!("[skill:{}] init() failed: {e}", config.skill_id); - return; - } - - // Call start() - if let Err(e) = call_lifecycle_fn_async(&mut runtime, "start").await { - let mut s = state.write(); - s.status = SkillStatus::Error; - s.error = Some(format!("start() failed: {e}")); - log::error!("[skill:{}] start() failed: {e}", config.skill_id); - return; - } - - // Mark as running - state.write().status = SkillStatus::Running; - log::info!("[skill:{}] Running (V8)", config.skill_id); - - // Run the event loop - run_event_loop(&mut runtime, &mut rx, &state, &config.skill_id).await; - }); - }) - } -} - -// ============================================================================ -// Event Loop -// ============================================================================ - -/// The main event loop that drives the V8 runtime. -/// This continuously: -/// 1. Polls for ready timers and fires their callbacks -/// 2. Checks for incoming messages (non-blocking) -/// 3. Runs the V8 event loop for promises/async ops -/// 4. Sleeps efficiently when idle -async fn run_event_loop( - runtime: &mut JsRuntime, - rx: &mut mpsc::Receiver, - state: &Arc>, - skill_id: &str, -) { - // Maximum sleep duration when no timers are pending - const MAX_IDLE_SLEEP: Duration = Duration::from_millis(100); - // Minimum sleep to prevent busy-spinning - const MIN_SLEEP: Duration = Duration::from_millis(1); - - loop { - // 1. Poll and fire ready timers - let ready_timers = { - let op_state = runtime.op_state(); - let mut state_ref = op_state.borrow_mut(); - let (ready, _next) = ops::poll_timers(&mut state_ref); - ready - }; - - // Fire timer callbacks in JavaScript - for timer_id in ready_timers { - fire_timer_callback(runtime, timer_id); - } - - // 2. Check for incoming messages (non-blocking) - match rx.try_recv() { - Ok(msg) => { - let should_stop = handle_message(runtime, msg, state, skill_id).await; - if should_stop { - break; - } - } - Err(mpsc::error::TryRecvError::Empty) => { - // No message - that's fine - } - Err(mpsc::error::TryRecvError::Disconnected) => { - // Channel closed, exit - log::info!("[skill:{}] Message channel disconnected, stopping", skill_id); - break; - } - } - - // 3. Run the V8 event loop (processes promises, async ops, etc.) - // Use poll mode - returns immediately if nothing to do - let poll_result = runtime - .run_event_loop(PollEventLoopOptions { - wait_for_inspector: false, - pump_v8_message_loop: true, - }) - .await; - - if let Err(e) = poll_result { - log::error!("[skill:{}] Event loop error: {}", skill_id, e); - // Don't break - try to continue - } - - // 4. Calculate sleep duration based on next timer - let sleep_duration = { - let op_state = runtime.op_state(); - let mut state_ref = op_state.borrow_mut(); - let (_, next_timer) = ops::poll_timers(&mut state_ref); - match next_timer { - Some(d) if d < MIN_SLEEP => MIN_SLEEP, - Some(d) if d > MAX_IDLE_SLEEP => MAX_IDLE_SLEEP, - Some(d) => d, - None => MAX_IDLE_SLEEP, - } - }; - - // Sleep efficiently - this yields the thread when no work is needed - tokio::time::sleep(sleep_duration).await; - } -} - -/// Fire a timer callback in JavaScript. -fn fire_timer_callback(runtime: &mut JsRuntime, timer_id: u32) { - let code = format!("globalThis.__handleTimer({});", timer_id); - if let Err(e) = runtime.execute_script("", code) { - log::error!("[timer] Callback for timer {} failed: {}", timer_id, e); - } -} - -/// Handle a single message from the channel. -/// Returns true if the skill should stop. -async fn handle_message( - runtime: &mut JsRuntime, - msg: SkillMessage, - state: &Arc>, - skill_id: &str, -) -> bool { - match msg { - SkillMessage::CallTool { - tool_name, - arguments, - reply, - } => { - let result = handle_tool_call_sync(runtime, &tool_name, arguments); - let _ = reply.send(result); - } - SkillMessage::ServerEvent { event, data } => { - let _ = handle_server_event_sync(runtime, &event, data); - } - SkillMessage::CronTrigger { schedule_id } => { - let _ = handle_cron_trigger_sync(runtime, &schedule_id); - } - SkillMessage::Stop { reply } => { - let _ = call_lifecycle_fn_sync(runtime, "stop"); - state.write().status = SkillStatus::Stopped; - log::info!("[skill:{}] Stopped", skill_id); - let _ = reply.send(()); - return true; // Signal to stop - } - SkillMessage::SetupStart { reply } => { - let result = handle_js_call_sync(runtime, "onSetupStart", "{}"); - let _ = reply.send(result); - } - SkillMessage::SetupSubmit { - step_id, - values, - reply, - } => { - let args = serde_json::json!({ - "stepId": step_id, - "values": values, - }); - let result = handle_js_call_sync(runtime, "onSetupSubmit", &args.to_string()); - let _ = reply.send(result); - } - SkillMessage::SetupCancel { reply } => { - let result = handle_js_void_call_sync(runtime, "onSetupCancel", "{}"); - let _ = reply.send(result); - } - SkillMessage::ListOptions { reply } => { - let result = handle_js_call_sync(runtime, "onListOptions", "{}"); - let _ = reply.send(result); - } - SkillMessage::SetOption { name, value, reply } => { - let args = serde_json::json!({ - "name": name, - "value": value, - }); - let result = handle_js_void_call_sync(runtime, "onSetOption", &args.to_string()); - let _ = reply.send(result); - } - SkillMessage::SessionStart { session_id, reply } => { - let args = serde_json::json!({ "sessionId": session_id }); - let result = handle_js_void_call_sync(runtime, "onSessionStart", &args.to_string()); - let _ = reply.send(result); - } - SkillMessage::SessionEnd { session_id, reply } => { - let args = serde_json::json!({ "sessionId": session_id }); - let result = handle_js_void_call_sync(runtime, "onSessionEnd", &args.to_string()); - let _ = reply.send(result); - } - SkillMessage::Tick { reply } => { - let result = handle_js_void_call_sync(runtime, "onTick", "{}"); - let _ = reply.send(result); - } - SkillMessage::Rpc { - method, - params, - reply, - } => { - let args = serde_json::json!({ - "method": method, - "params": params, - }); - let result = handle_js_call_sync(runtime, "onRpc", &args.to_string()); - let _ = reply.send(result); - } - } - false // Don't stop -} - -/// Extract tool definitions from skill.tools (supports both globalThis.__skill.default and globalThis.tools). -fn extract_tools(runtime: &mut JsRuntime, state: &Arc>) { - let code = r#" - (function() { - // Try to get skill from bundled export first, then fall back to globalThis.tools - var skill = globalThis.__skill && globalThis.__skill.default - ? globalThis.__skill.default - : (globalThis.__skill || null); - var tools = (skill && skill.tools) || globalThis.tools || []; - return JSON.stringify(tools.map(function(t) { - return { - name: t.name || "", - description: t.description || "", - input_schema: t.inputSchema || t.input_schema || {} - }; - })); - })() - "#; - - if let Ok(result) = runtime.execute_script("", code.to_string()) { - let scope = &mut runtime.handle_scope(); - let local = v8::Local::new(scope, result); - - if let Some(s) = local.to_string(scope) { - let json_str = s.to_rust_string_lossy(scope); - if let Ok(tools) = serde_json::from_str::>(&json_str) { - state.write().tools = tools; - } - } - } -} - -/// Call a lifecycle function on the skill object asynchronously. -/// This version runs inside the skill's CurrentThread runtime - no nested runtime creation. -/// Looks for the skill at globalThis.__skill.default first, then falls back to globalThis. -/// -/// Note: This does NOT wait for the event loop to complete, because lifecycle functions -/// may start async operations (like update loops) that run indefinitely. The main event -/// loop will process pending async work after init/start complete. -async fn call_lifecycle_fn_async(runtime: &mut JsRuntime, name: &str) -> Result<(), String> { - let code = format!( - r#"(function() {{ - var skill = globalThis.__skill && globalThis.__skill.default - ? globalThis.__skill.default - : (globalThis.__skill || globalThis); - if (typeof skill.{name} === 'function') {{ - skill.{name}(); - }} else if (typeof globalThis.{name} === 'function') {{ - globalThis.{name}(); - }} - }})()"# - ); - - runtime - .execute_script("", code) - .map_err(|e| format!("{name}() failed: {e}"))?; - - // Don't wait for event loop here - the main event loop will handle pending async work. - // This is important because lifecycle functions may start long-running async operations - // (like TDLib update loops) that would block init/start from completing. - - Ok(()) -} - -/// Call a lifecycle function on the skill object synchronously. -/// WARNING: This creates its own tokio runtime - only use when NOT inside an async context. -/// Looks for the skill at globalThis.__skill.default first, then falls back to globalThis. -#[allow(dead_code)] -fn call_lifecycle_fn_sync(runtime: &mut JsRuntime, name: &str) -> Result<(), String> { - let code = format!( - r#"(function() {{ - var skill = globalThis.__skill && globalThis.__skill.default - ? globalThis.__skill.default - : (globalThis.__skill || globalThis); - if (typeof skill.{name} === 'function') {{ - skill.{name}(); - }} else if (typeof globalThis.{name} === 'function') {{ - globalThis.{name}(); - }} - }})()"# - ); - - runtime - .execute_script("", code) - .map_err(|e| format!("{name}() failed: {e}"))?; - - // Run event loop synchronously to handle any pending ops - let rt = tokio::runtime::Builder::new_current_thread() - .enable_all() - .build() - .map_err(|e| format!("Failed to create runtime: {e}"))?; - - rt.block_on(async { - runtime - .run_event_loop(PollEventLoopOptions::default()) - .await - .map_err(|e| format!("Event loop error: {e}")) - })?; - - Ok(()) -} - -/// Handle a tool call synchronously (no async ops waited). -/// This is used when we just need to invoke the tool and get immediate result. -fn handle_tool_call_sync( - runtime: &mut JsRuntime, - tool_name: &str, - arguments: serde_json::Value, -) -> Result { - let args_str = - serde_json::to_string(&arguments).map_err(|e| format!("Failed to serialize args: {e}"))?; - - let code = format!( - r#"(function() {{ - var skill = globalThis.__skill && globalThis.__skill.default - ? globalThis.__skill.default - : (globalThis.__skill || null); - var tools = (skill && skill.tools) || globalThis.tools || []; - for (var i = 0; i < tools.length; i++) {{ - if (tools[i].name === "{}") {{ - var args = {}; - var result = tools[i].execute(args); - if (result && typeof result === 'object') {{ - return JSON.stringify(result); - }} - return String(result); - }} - }} - throw new Error("Tool '{}' not found"); - }})()"#, - tool_name.replace('"', r#"\""#), - args_str, - tool_name.replace('"', r#"\""#), - ); - - let result = runtime - .execute_script("", code) - .map_err(|e| format!("Tool execution failed: {e}"))?; - - // Note: We don't run the event loop here because we're already inside - // the skill's event loop. Pending async ops will be handled by the main loop. - - let scope = &mut runtime.handle_scope(); - let local = v8::Local::new(scope, result); - - let result_text = if let Some(s) = local.to_string(scope) { - s.to_rust_string_lossy(scope) - } else { - "null".to_string() - }; - - Ok(ToolResult { - content: vec![ToolContent::Text { text: result_text }], - is_error: false, - }) -} - -/// Handle a server event synchronously. -fn handle_server_event_sync( - runtime: &mut JsRuntime, - event: &str, - data: serde_json::Value, -) -> Result<(), String> { - let data_str = serde_json::to_string(&data).unwrap_or_else(|_| "null".to_string()); - - let code = format!( - r#"(function() {{ - var skill = globalThis.__skill && globalThis.__skill.default - ? globalThis.__skill.default - : (globalThis.__skill || globalThis); - if (typeof skill.onServerEvent === 'function') {{ - skill.onServerEvent("{}", {}); - }} else if (typeof globalThis.onServerEvent === 'function') {{ - globalThis.onServerEvent("{}", {}); - }} - }})()"#, - event.replace('"', r#"\""#), - data_str, - event.replace('"', r#"\""#), - data_str, - ); - - runtime - .execute_script("", code) - .map_err(|e| format!("Event handler failed: {e}"))?; - - Ok(()) -} - -/// Handle a cron trigger synchronously. -fn handle_cron_trigger_sync(runtime: &mut JsRuntime, schedule_id: &str) -> Result<(), String> { - let code = format!( - r#"(function() {{ - var skill = globalThis.__skill && globalThis.__skill.default - ? globalThis.__skill.default - : (globalThis.__skill || globalThis); - if (typeof skill.onCronTrigger === 'function') {{ - skill.onCronTrigger("{}"); - }} else if (typeof globalThis.onCronTrigger === 'function') {{ - globalThis.onCronTrigger("{}"); - }} - }})()"#, - schedule_id.replace('"', r#"\""#), - schedule_id.replace('"', r#"\""#), - ); - - runtime - .execute_script("", code) - .map_err(|e| format!("Cron trigger failed: {e}"))?; - - Ok(()) -} - -/// Call a JS function on the skill object that returns a JSON value synchronously. -fn handle_js_call_sync( - runtime: &mut JsRuntime, - fn_name: &str, - args_json: &str, -) -> Result { - let code = format!( - r#"(function() {{ - var skill = globalThis.__skill && globalThis.__skill.default - ? globalThis.__skill.default - : (globalThis.__skill || globalThis); - var fn = skill.{fn_name} || globalThis.{fn_name}; - if (typeof fn === 'function') {{ - var args = {args_json}; - var result = fn.call(skill, args); - return JSON.stringify(result); - }} - return "null"; - }})()"# - ); - - let result = runtime - .execute_script("", code) - .map_err(|e| format!("{fn_name}() failed: {e}"))?; - - let scope = &mut runtime.handle_scope(); - let local = v8::Local::new(scope, result); - - let result_text = if let Some(s) = local.to_string(scope) { - s.to_rust_string_lossy(scope) - } else { - "null".to_string() - }; - - serde_json::from_str(&result_text) - .map_err(|e| format!("{fn_name}() returned invalid JSON: {e}")) -} - -/// Call a JS function on the skill object that returns void synchronously. -fn handle_js_void_call_sync( - runtime: &mut JsRuntime, - fn_name: &str, - args_json: &str, -) -> Result<(), String> { - let code = format!( - r#"(function() {{ - var skill = globalThis.__skill && globalThis.__skill.default - ? globalThis.__skill.default - : (globalThis.__skill || globalThis); - var fn = skill.{fn_name} || globalThis.{fn_name}; - if (typeof fn === 'function') {{ - var args = {args_json}; - fn.call(skill, args); - }} - }})()"# - ); - - runtime - .execute_script("", code) - .map_err(|e| format!("{fn_name}() failed: {e}"))?; - - Ok(()) -} diff --git a/src-tauri/src/services/tdlib_v8/bootstrap.js b/src-tauri/src/services/tdlib_v8/bootstrap.js index d8a2fe9c8..2662db39f 100644 --- a/src-tauri/src/services/tdlib_v8/bootstrap.js +++ b/src-tauri/src/services/tdlib_v8/bootstrap.js @@ -1,5 +1,5 @@ /** - * Bootstrap JavaScript for V8 Runtime + * Bootstrap JavaScript for QuickJS Runtime * * Provides browser-like API shims that tdweb expects. * These shims call Rust "ops" for actual I/O. @@ -14,19 +14,19 @@ globalThis.window = globalThis; // ============================================================================ globalThis.console = { log: function (...args) { - Deno.core.ops.op_console_log(args.map(String).join(' ')); + __ops.console_log(args.map(String).join(' ')); }, info: function (...args) { - Deno.core.ops.op_console_log(args.map(String).join(' ')); + __ops.console_log(args.map(String).join(' ')); }, warn: function (...args) { - Deno.core.ops.op_console_warn(args.map(String).join(' ')); + __ops.console_warn(args.map(String).join(' ')); }, error: function (...args) { - Deno.core.ops.op_console_error(args.map(String).join(' ')); + __ops.console_error(args.map(String).join(' ')); }, debug: function (...args) { - Deno.core.ops.op_console_log('[DEBUG] ' + args.map(String).join(' ')); + __ops.console_log('[DEBUG] ' + args.map(String).join(' ')); }, }; @@ -39,25 +39,25 @@ let nextTimerId = 1; globalThis.setTimeout = function (callback, delay, ...args) { const id = nextTimerId++; timerCallbacks.set(id, { callback, args, type: 'timeout' }); - Deno.core.ops.op_ah_timer_start(id, delay || 0, false); + __ops.timer_start(id, delay || 0, false); return id; }; globalThis.setInterval = function (callback, delay, ...args) { const id = nextTimerId++; timerCallbacks.set(id, { callback, args, type: 'interval' }); - Deno.core.ops.op_ah_timer_start(id, delay || 0, true); + __ops.timer_start(id, delay || 0, true); return id; }; globalThis.clearTimeout = function (id) { timerCallbacks.delete(id); - Deno.core.ops.op_ah_timer_cancel(id); + __ops.timer_cancel(id); }; globalThis.clearInterval = function (id) { timerCallbacks.delete(id); - Deno.core.ops.op_ah_timer_cancel(id); + __ops.timer_cancel(id); }; // Timer callback handler (called from Rust) @@ -146,7 +146,7 @@ globalThis.fetch = async function (url, options = {}) { headersObj = headers; } - const result = await Deno.core.ops.op_fetch(url.toString(), { + const result = await __ops.fetch(url.toString(), { method, headers: headersObj, body: typeof body === 'string' ? body : body ? JSON.stringify(body) : null, @@ -259,7 +259,7 @@ class WebSocket { async _connect() { try { - this._id = await Deno.core.ops.op_ws_connect(this.url); + this._id = await __ops.ws_connect(this.url); this.readyState = WebSocket.OPEN; // Register for message callbacks @@ -282,7 +282,7 @@ class WebSocket { async _startReceiving() { while (this.readyState === WebSocket.OPEN) { try { - const message = await Deno.core.ops.op_ws_recv(this._id); + const message = await __ops.ws_recv(this._id); if (message === null) { // Connection closed this._handleClose(1000, ''); @@ -322,7 +322,7 @@ class WebSocket { } const dataStr = typeof data === 'string' ? data : JSON.stringify(data); - Deno.core.ops.op_ws_send(this._id, dataStr); + __ops.ws_send(this._id, dataStr); } close(code = 1000, reason = '') { @@ -331,7 +331,7 @@ class WebSocket { } this.readyState = WebSocket.CLOSING; - Deno.core.ops.op_ws_close(this._id, code, reason); + __ops.ws_close(this._id, code, reason); } } @@ -350,7 +350,7 @@ class IDBFactory { const request = new IDBRequest(); (async () => { try { - await Deno.core.ops.op_idb_delete_database(name); + await __ops.idb_delete_database(name); request._success(undefined); } catch (e) { request._error(e); @@ -398,7 +398,7 @@ class IDBOpenDBRequest extends IDBRequest { async _open() { try { - const info = await Deno.core.ops.op_idb_open(this._name, this._version); + const info = await __ops.idb_open(this._name, this._version); const db = new IDBDatabase(this._name, this._version, info.objectStores || []); if (info.needsUpgrade) { @@ -433,13 +433,13 @@ class IDBDatabase { } createObjectStore(name, options = {}) { - Deno.core.ops.op_idb_create_object_store(this.name, name, options); + __ops.idb_create_object_store(this.name, name, options); this.objectStoreNames.push(name); return new IDBObjectStore(this, name); } deleteObjectStore(name) { - Deno.core.ops.op_idb_delete_object_store(this.name, name); + __ops.idb_delete_object_store(this.name, name); const idx = this.objectStoreNames.indexOf(name); if (idx >= 0) this.objectStoreNames.splice(idx, 1); } @@ -449,7 +449,7 @@ class IDBDatabase { } close() { - Deno.core.ops.op_idb_close(this.name); + __ops.idb_close(this.name); } } @@ -495,7 +495,7 @@ class IDBObjectStore { const request = new IDBRequest(); (async () => { try { - const value = await Deno.core.ops.op_idb_get(this._db.name, this.name, key); + const value = await __ops.idb_get(this._db.name, this.name, key); request._success(value); } catch (e) { request._error(e); @@ -508,7 +508,7 @@ class IDBObjectStore { const request = new IDBRequest(); (async () => { try { - await Deno.core.ops.op_idb_put(this._db.name, this.name, key, value); + await __ops.idb_put(this._db.name, this.name, key, value); request._success(key); } catch (e) { request._error(e); @@ -525,7 +525,7 @@ class IDBObjectStore { const request = new IDBRequest(); (async () => { try { - await Deno.core.ops.op_idb_delete(this._db.name, this.name, key); + await __ops.idb_delete(this._db.name, this.name, key); request._success(undefined); } catch (e) { request._error(e); @@ -538,7 +538,7 @@ class IDBObjectStore { const request = new IDBRequest(); (async () => { try { - await Deno.core.ops.op_idb_clear(this._db.name, this.name); + await __ops.idb_clear(this._db.name, this.name); request._success(undefined); } catch (e) { request._error(e); @@ -551,7 +551,7 @@ class IDBObjectStore { const request = new IDBRequest(); (async () => { try { - const values = await Deno.core.ops.op_idb_get_all(this._db.name, this.name, count); + const values = await __ops.idb_get_all(this._db.name, this.name, count); request._success(values); } catch (e) { request._error(e); @@ -564,7 +564,7 @@ class IDBObjectStore { const request = new IDBRequest(); (async () => { try { - const keys = await Deno.core.ops.op_idb_get_all_keys(this._db.name, this.name, count); + const keys = await __ops.idb_get_all_keys(this._db.name, this.name, count); request._success(keys); } catch (e) { request._error(e); @@ -577,7 +577,7 @@ class IDBObjectStore { const request = new IDBRequest(); (async () => { try { - const count = await Deno.core.ops.op_idb_count(this._db.name, this.name); + const count = await __ops.idb_count(this._db.name, this.name); request._success(count); } catch (e) { request._error(e); @@ -636,13 +636,13 @@ if (typeof globalThis.TextDecoder === 'undefined') { // ============================================================================ if (typeof globalThis.atob === 'undefined') { globalThis.atob = function (str) { - return Deno.core.ops.op_atob(str); + return __ops.atob(str); }; } if (typeof globalThis.btoa === 'undefined') { globalThis.btoa = function (str) { - return Deno.core.ops.op_btoa(str); + return __ops.btoa(str); }; } @@ -651,7 +651,7 @@ if (typeof globalThis.btoa === 'undefined') { // ============================================================================ globalThis.crypto = { getRandomValues: function (array) { - const bytes = Deno.core.ops.op_crypto_random(array.length); + const bytes = __ops.crypto_random(array.length); array.set(bytes); return array; }, @@ -662,7 +662,7 @@ globalThis.crypto = { // ============================================================================ globalThis.performance = { now: function () { - return Deno.core.ops.op_performance_now(); + return __ops.performance_now(); }, }; @@ -673,53 +673,53 @@ globalThis.performance = { globalThis.__db = { exec: function (sql, paramsJson) { - return Deno.core.ops.op_db_exec(sql, paramsJson); + return __ops.db_exec(sql, paramsJson); }, get: function (sql, paramsJson) { - return Deno.core.ops.op_db_get(sql, paramsJson); + return __ops.db_get(sql, paramsJson); }, all: function (sql, paramsJson) { - return Deno.core.ops.op_db_all(sql, paramsJson); + return __ops.db_all(sql, paramsJson); }, kvGet: function (key) { - return Deno.core.ops.op_db_kv_get(key); + return __ops.db_kv_get(key); }, kvSet: function (key, valueJson) { - return Deno.core.ops.op_db_kv_set(key, valueJson); + return __ops.db_kv_set(key, valueJson); }, }; globalThis.__store = { get: function (key) { - return Deno.core.ops.op_store_get(key); + return __ops.store_get(key); }, set: function (key, valueJson) { - return Deno.core.ops.op_store_set(key, valueJson); + return __ops.store_set(key, valueJson); }, delete: function (key) { - return Deno.core.ops.op_store_delete(key); + return __ops.store_delete(key); }, keys: function () { - return Deno.core.ops.op_store_keys(); + return __ops.store_keys(); }, }; globalThis.__net = { fetch: function (url, optionsJson) { - return Deno.core.ops.op_net_fetch(url, optionsJson); + return __ops.net_fetch(url, optionsJson); }, }; globalThis.__platform = { os: function () { - return Deno.core.ops.op_platform_os(); + return __ops.platform_os(); }, env: function (key) { - return Deno.core.ops.op_platform_env(key); + return __ops.platform_env(key); }, }; -// High-level wrappers for skills (V8 bridge) +// High-level wrappers for skills (QuickJS bridge) globalThis.db = { exec: function (sql, params) { return __db.exec(sql, params ? JSON.stringify(params) : undefined); @@ -779,13 +779,13 @@ globalThis.platform = { // ============================================================================ globalThis.__state = { get: function (key) { - return Deno.core.ops.op_state_get(key); + return __ops.state_get(key); }, set: function (key, valueJson) { - return Deno.core.ops.op_state_set(key, valueJson); + return __ops.state_set(key, valueJson); }, setPartial: function (partialJson) { - return Deno.core.ops.op_state_set_partial(partialJson); + return __ops.state_set_partial(partialJson); }, }; @@ -807,10 +807,10 @@ globalThis.state = { // ============================================================================ globalThis.__data = { read: function (filename) { - return Deno.core.ops.op_data_read(filename); + return __ops.data_read(filename); }, write: function (filename, content) { - return Deno.core.ops.op_data_write(filename, content); + return __ops.data_write(filename, content); }, }; @@ -828,15 +828,15 @@ globalThis.data = { // ============================================================================ globalThis.cron = { register: function (scheduleId, cronExpr) { - console.warn('[cron] register not implemented in V8 runtime yet'); + console.warn('[cron] register not implemented in QuickJS runtime yet'); return false; }, unregister: function (scheduleId) { - console.warn('[cron] unregister not implemented in V8 runtime yet'); + console.warn('[cron] unregister not implemented in QuickJS runtime yet'); return false; }, list: function () { - console.warn('[cron] list not implemented in V8 runtime yet'); + console.warn('[cron] list not implemented in QuickJS runtime yet'); return []; }, }; @@ -846,11 +846,11 @@ globalThis.cron = { // ============================================================================ globalThis.skills = { list: function () { - console.warn('[skills] list not implemented in V8 runtime yet'); + console.warn('[skills] list not implemented in QuickJS runtime yet'); return []; }, callTool: function (skillId, toolName, args) { - console.warn('[skills] callTool not implemented in V8 runtime yet'); + console.warn('[skills] callTool not implemented in QuickJS runtime yet'); return { error: 'Not implemented' }; }, }; @@ -868,8 +868,8 @@ globalThis.tdlib = { */ isAvailable: function () { try { - return typeof Deno?.core?.ops?.op_tdlib_is_available === 'function' - ? Deno.core.ops.op_tdlib_is_available() + return typeof __ops?.tdlib_is_available === 'function' + ? __ops.tdlib_is_available() : false; } catch (e) { return false; @@ -881,8 +881,8 @@ globalThis.tdlib = { * @param {string} dataDir - Path to store TDLib data files. * @returns {Promise} Client ID (always 1 for singleton). */ - createClient: async function (dataDir) { - return await Deno.core.ops.op_tdlib_create_client(dataDir); + createClient: function (dataDir) { + return __ops.tdlib_create_client(dataDir); }, /** @@ -891,7 +891,7 @@ globalThis.tdlib = { * @returns {Promise} TDLib response object. */ send: async function (request) { - return await Deno.core.ops.op_tdlib_send(request); + return await __ops.tdlib_send(request); }, /** @@ -900,7 +900,7 @@ globalThis.tdlib = { * @returns {Promise} Update object or null if timeout. */ receive: async function (timeoutMs = 1000) { - return await Deno.core.ops.op_tdlib_receive(timeoutMs); + return await __ops.tdlib_receive(timeoutMs); }, /** @@ -908,7 +908,7 @@ globalThis.tdlib = { * @returns {Promise} */ destroy: async function () { - return await Deno.core.ops.op_tdlib_destroy(); + return await __ops.tdlib_destroy(); }, }; @@ -919,21 +919,21 @@ globalThis.tdlib = { globalThis.__model = { isAvailable: function () { try { - return typeof Deno?.core?.ops?.op_model_is_available === 'function' - ? Deno.core.ops.op_model_is_available() + return typeof __ops?.model_is_available === 'function' + ? __ops.model_is_available() : false; } catch (e) { return false; } }, getStatus: function () { - return Deno.core.ops.op_model_get_status(); + return __ops.model_get_status(); }, generate: async function (prompt, configJson) { - return await Deno.core.ops.op_model_generate(prompt, configJson); + return await __ops.model_generate(prompt, configJson); }, summarize: async function (text, maxTokens) { - return await Deno.core.ops.op_model_summarize(text, maxTokens); + return await __ops.model_summarize(text, maxTokens); }, }; @@ -986,4 +986,4 @@ globalThis.model = { }; console.log('[bootstrap] Model API initialized'); -console.log('[bootstrap] V8 browser APIs initialized'); +console.log('[bootstrap] QuickJS browser APIs initialized'); diff --git a/src-tauri/src/services/tdlib_v8/mod.rs b/src-tauri/src/services/tdlib_v8/mod.rs index 8623c47e0..aa590cdfb 100644 --- a/src-tauri/src/services/tdlib_v8/mod.rs +++ b/src-tauri/src/services/tdlib_v8/mod.rs @@ -1,10 +1,10 @@ -//! TDLib V8 Runtime Module +//! TDLib Runtime Module //! -//! Provides a V8 JavaScript runtime (via deno_core) for running -//! skill JavaScript code and TDLib via tdweb. Provides a browser-like -//! environment that supports WASM natively. +//! Provides a QuickJS JavaScript runtime (via rquickjs) for running +//! skill JavaScript code and TDLib integration. Provides a browser-like +//! environment for skill execution. -pub mod ops; +pub mod qjs_ops; pub mod service; pub mod storage; diff --git a/src-tauri/src/services/tdlib_v8/ops/mod.rs b/src-tauri/src/services/tdlib_v8/ops/mod.rs deleted file mode 100644 index fa274e813..000000000 --- a/src-tauri/src/services/tdlib_v8/ops/mod.rs +++ /dev/null @@ -1,1236 +0,0 @@ -//! Custom Deno Core Ops for V8 Runtime -//! -//! Provides browser API implementations as Rust ops. - -use std::cell::RefCell; -use std::collections::HashMap; -use std::rc::Rc; - -use deno_core::{extension, op2, OpState}; -use serde::{Deserialize, Serialize}; -use tokio::sync::mpsc; - -use super::storage::IdbStorage; - -// ============================================================================ -// Extension Definition -// ============================================================================ - -extension!( - alphahuman_ops, - ops = [ - // Console ops - op_console_log, - op_console_warn, - op_console_error, - // Crypto ops - op_crypto_random, - op_atob, - op_btoa, - // Performance ops - op_performance_now, - // Platform ops - op_platform_os, - op_platform_env, - // Timer ops (prefixed to avoid conflict with deno_core built-ins) - op_ah_timer_start, - op_ah_timer_cancel, - // Fetch ops - op_fetch, - // WebSocket ops - op_ws_connect, - op_ws_send, - op_ws_recv, - op_ws_close, - // IndexedDB ops - op_idb_open, - op_idb_close, - op_idb_delete_database, - op_idb_create_object_store, - op_idb_delete_object_store, - op_idb_get, - op_idb_put, - op_idb_delete, - op_idb_clear, - op_idb_get_all, - op_idb_get_all_keys, - op_idb_count, - // Skill bridge ops - op_db_exec, - op_db_get, - op_db_all, - op_db_kv_get, - op_db_kv_set, - op_store_get, - op_store_set, - op_store_delete, - op_store_keys, - op_net_fetch, - // State bridge ops - op_state_get, - op_state_set, - op_state_set_partial, - // Data bridge ops - op_data_read, - op_data_write, - // TDLib ops (telegram skill only) - op_tdlib_create_client, - op_tdlib_send, - op_tdlib_receive, - op_tdlib_destroy, - op_tdlib_is_available, - // Model ops (local LLM inference) - op_model_is_available, - op_model_get_status, - op_model_generate, - op_model_summarize, - ], - state = |state| { - // State will be initialized when runtime is created - } -); - -/// Build the deno_core Extension with all custom ops. -pub fn build_extension(_storage: IdbStorage) -> deno_core::Extension { - alphahuman_ops::init_ops_and_esm() -} - -/// Initialize storage in op state with data directory and shared skill state. -pub fn init_state_with_data_dir( - state: &mut OpState, - storage: IdbStorage, - skill_id: String, - data_dir: std::path::PathBuf, - skill_state: std::sync::Arc>, -) { - state.put(storage); - state.put(SkillContext::with_state(skill_id, data_dir, skill_state)); - state.put(TimerState::default()); - state.put(WebSocketState::default()); -} - -/// Poll timers and return IDs of timers that are ready to fire. -/// Also returns the duration until the next timer (for efficient sleeping). -pub fn poll_timers(state: &mut OpState) -> (Vec, Option) { - let timer_state = state.borrow_mut::(); - let ready = timer_state.poll_ready(); - let next = timer_state.time_until_next(); - (ready, next) -} - -/// Context for the current skill execution. -#[derive(Clone)] -pub struct SkillContext { - pub skill_id: String, - /// Skill-specific data directory for file I/O. - pub data_dir: Option, - /// Shared reference to the skill's state (same instance as V8SkillInstance). - pub skill_state: Option>>, -} - -impl Default for SkillContext { - fn default() -> Self { - Self { - skill_id: String::new(), - data_dir: None, - skill_state: None, - } - } -} - -impl SkillContext { - /// Create a new SkillContext with a skill ID, data directory, and shared state. - pub fn with_state( - skill_id: String, - data_dir: std::path::PathBuf, - skill_state: std::sync::Arc>, - ) -> Self { - Self { - skill_id, - data_dir: Some(data_dir), - skill_state: Some(skill_state), - } - } -} - -// ============================================================================ -// Timer State -// ============================================================================ - -/// A scheduled timer (setTimeout or setInterval). -#[derive(Clone, Debug)] -pub struct TimerEntry { - /// Whether this is a repeating interval - pub is_interval: bool, - /// Delay in milliseconds - pub delay_ms: u64, - /// When the timer should fire next (Instant) - pub next_fire: std::time::Instant, -} - -/// State for managing timers. -/// Timers are polled during the event loop and fire callbacks via JS. -#[derive(Default)] -pub struct TimerState { - /// Active timers: id -> TimerEntry - pub timers: HashMap, -} - -impl TimerState { - /// Get all timers that are ready to fire, returning their IDs. - /// For intervals, reschedules the next fire time. - /// For timeouts, removes them from the map. - pub fn poll_ready(&mut self) -> Vec { - let now = std::time::Instant::now(); - let mut ready = Vec::new(); - - // Collect IDs of ready timers - let ready_ids: Vec = self - .timers - .iter() - .filter(|(_, entry)| now >= entry.next_fire) - .map(|(id, _)| *id) - .collect(); - - for id in ready_ids { - if let Some(entry) = self.timers.get_mut(&id) { - ready.push(id); - - if entry.is_interval { - // Reschedule for next interval - entry.next_fire = now + std::time::Duration::from_millis(entry.delay_ms); - } else { - // Remove one-shot timeout - self.timers.remove(&id); - } - } - } - - ready - } - - /// Get the duration until the next timer fires (for sleep optimization). - pub fn time_until_next(&self) -> Option { - let now = std::time::Instant::now(); - self.timers - .values() - .map(|entry| { - if entry.next_fire > now { - entry.next_fire - now - } else { - std::time::Duration::ZERO - } - }) - .min() - } -} - -// ============================================================================ -// WebSocket State -// ============================================================================ - -/// State for managing WebSocket connections. -/// Currently a placeholder - full state management is TODO. -#[derive(Default)] -#[allow(dead_code)] -pub struct WebSocketState { - next_id: u32, - /// Active connections: id -> WebSocket sender - pub connections: HashMap, -} - -#[allow(dead_code)] -pub struct WebSocketConnection { - pub write_tx: mpsc::Sender, - pub read_rx: mpsc::Receiver, - pub close_tx: Option>, -} - -// ============================================================================ -// Console Ops -// ============================================================================ - -#[op2(fast)] -fn op_console_log(#[string] msg: &str) { - log::info!("[js] {}", msg); -} - -#[op2(fast)] -fn op_console_warn(#[string] msg: &str) { - log::warn!("[js] {}", msg); -} - -#[op2(fast)] -fn op_console_error(#[string] msg: &str) { - log::error!("[js] {}", msg); -} - -// ============================================================================ -// Crypto Ops -// ============================================================================ - -#[op2] -#[buffer] -fn op_crypto_random(len: u32) -> Vec { - use rand::RngCore; - let mut bytes = vec![0u8; len as usize]; - rand::thread_rng().fill_bytes(&mut bytes); - bytes -} - -#[op2] -#[string] -fn op_atob(#[string] input: &str) -> Result { - use base64::Engine; - let decoded = base64::engine::general_purpose::STANDARD.decode(input)?; - Ok(String::from_utf8_lossy(&decoded).to_string()) -} - -#[op2] -#[string] -fn op_btoa(#[string] input: &str) -> String { - use base64::Engine; - base64::engine::general_purpose::STANDARD.encode(input.as_bytes()) -} - -// ============================================================================ -// Performance Ops -// ============================================================================ - -#[op2(fast)] -fn op_performance_now() -> f64 { - use std::time::{SystemTime, UNIX_EPOCH}; - SystemTime::now() - .duration_since(UNIX_EPOCH) - .map(|d| d.as_secs_f64() * 1000.0) - .unwrap_or(0.0) -} - -// ============================================================================ -// Platform Ops -// ============================================================================ - -#[op2] -#[string] -fn op_platform_os() -> &'static str { - #[cfg(target_os = "windows")] - return "windows"; - #[cfg(target_os = "macos")] - return "macos"; - #[cfg(target_os = "linux")] - return "linux"; - #[cfg(target_os = "android")] - return "android"; - #[cfg(target_os = "ios")] - return "ios"; - #[cfg(not(any( - target_os = "windows", - target_os = "macos", - target_os = "linux", - target_os = "android", - target_os = "ios" - )))] - return "unknown"; -} - -#[op2] -#[string] -fn op_platform_env(#[string] key: &str) -> Option { - const ALLOWED_ENV_VARS: &[&str] = &[ - "VITE_TELEGRAM_BOT_USERNAME", - "VITE_TELEGRAM_BOT_ID", - "TELEGRAM_API_ID", // Skills may use this without VITE_ prefix - "TELEGRAM_API_HASH", // Skills may use this without VITE_ prefix - "VITE_BACKEND_URL", - "BACKEND_URL", // Skills may use this without VITE_ prefix - "VITE_DEBUG", - ]; - - if ALLOWED_ENV_VARS.contains(&key) { - std::env::var(key).ok() - } else { - None - } -} - -// ============================================================================ -// Timer Ops -// ============================================================================ - -/// Start a timer (setTimeout or setInterval). -/// The actual callback execution happens in JavaScript via __handleTimer, -/// triggered by the event loop polling TimerState. -#[op2(fast)] -fn op_ah_timer_start(state: &mut OpState, id: u32, delay_ms: u32, is_interval: bool) { - let timer_state = state.borrow_mut::(); - - let entry = TimerEntry { - is_interval, - delay_ms: delay_ms as u64, - next_fire: std::time::Instant::now() + std::time::Duration::from_millis(delay_ms as u64), - }; - - timer_state.timers.insert(id, entry); - log::debug!( - "[timer] Registered {} {} with delay {}ms", - if is_interval { "interval" } else { "timeout" }, - id, - delay_ms - ); -} - -/// Cancel a timer. -#[op2(fast)] -fn op_ah_timer_cancel(state: &mut OpState, id: u32) { - let timer_state = state.borrow_mut::(); - - if timer_state.timers.remove(&id).is_some() { - log::debug!("[timer] Cancelled timer {}", id); - } -} - -// ============================================================================ -// Fetch Ops -// ============================================================================ - -#[derive(Deserialize)] -struct FetchOptions { - method: Option, - headers: Option>, - body: Option, -} - -#[derive(Serialize)] -struct FetchResponse { - status: u16, - #[serde(rename = "statusText")] - status_text: String, - headers: HashMap, - body: String, -} - -/// Async fetch operation for the fetch API. -#[op2(async)] -#[serde] -async fn op_fetch( - #[string] url: String, - #[serde] options: FetchOptions, -) -> Result { - let client = reqwest::Client::new(); - - let method = options.method.unwrap_or_else(|| "GET".to_string()); - let method: reqwest::Method = method.parse().map_err(|_| { - deno_core::error::generic_error(format!("Invalid HTTP method: {}", method)) - })?; - - let mut request = client.request(method, &url); - - // Add headers - if let Some(headers) = options.headers { - for (key, value) in headers { - request = request.header(&key, &value); - } - } - - // Add body - if let Some(body) = options.body { - request = request.body(body); - } - - let response = request.send().await.map_err(|e| { - deno_core::error::generic_error(format!("Fetch failed: {}", e)) - })?; - - let status = response.status().as_u16(); - let status_text = response.status().canonical_reason().unwrap_or("").to_string(); - - let mut headers = HashMap::new(); - for (key, value) in response.headers() { - if let Ok(v) = value.to_str() { - headers.insert(key.to_string(), v.to_string()); - } - } - - let body = response.text().await.map_err(|e| { - deno_core::error::generic_error(format!("Failed to read response body: {}", e)) - })?; - - Ok(FetchResponse { - status, - status_text, - headers, - body, - }) -} - -// ============================================================================ -// WebSocket Ops -// ============================================================================ - -/// Connect to a WebSocket server. -#[op2(async)] -async fn op_ws_connect( - #[string] url: String, -) -> Result { - use futures::StreamExt; - use tokio_tungstenite::connect_async; - - let (ws_stream, _) = connect_async(&url).await.map_err(|e| { - deno_core::error::generic_error(format!("WebSocket connect failed: {}", e)) - })?; - - let (write, mut read) = ws_stream.split(); - - // Create channels for communication - // Note: These are set up for future full WebSocket state management - let (_write_tx, write_rx) = mpsc::channel::(32); - let (read_tx, _read_rx) = mpsc::channel::(32); - let (_close_tx, close_rx) = tokio::sync::oneshot::channel::<()>(); - - // Spawn write task - let _write_handle = tokio::spawn(async move { - use futures::SinkExt; - use tokio_tungstenite::tungstenite::Message; - - let mut write = write; - let mut write_rx_inner = write_rx; - let mut close_rx = close_rx; - - loop { - tokio::select! { - msg = write_rx_inner.recv() => { - match msg { - Some(text) => { - if write.send(Message::Text(text)).await.is_err() { - break; - } - } - None => break, - } - } - _ = &mut close_rx => { - let _ = write.close().await; - break; - } - } - } - }); - - // Spawn read task - let _read_handle = tokio::spawn(async move { - use tokio_tungstenite::tungstenite::Message; - - while let Some(result) = read.next().await { - match result { - Ok(Message::Text(text)) => { - if read_tx.send(text).await.is_err() { - break; - } - } - Ok(Message::Binary(data)) => { - // Convert binary to base64 for JavaScript - use base64::Engine; - let b64 = base64::engine::general_purpose::STANDARD.encode(&data); - if read_tx.send(b64).await.is_err() { - break; - } - } - Ok(Message::Close(_)) => break, - Err(_) => break, - _ => {} // Ignore ping/pong - } - } - }); - - // Generate a simple ID (in production, use proper state management) - let id = std::time::SystemTime::now() - .duration_since(std::time::UNIX_EPOCH) - .map(|d| d.as_millis() as u32) - .unwrap_or(1); - - log::info!("[ws] Connected to {} with id {}", url, id); - - Ok(id) -} - -/// Send a message over WebSocket. -#[op2(fast)] -fn op_ws_send( - _state: &mut OpState, - _id: u32, - #[string] _data: &str, -) -> Result<(), deno_core::error::AnyError> { - // Note: Full WebSocket state management would require more complex handling - // For now, this is a placeholder - log::debug!("[ws] Send message on connection {}", _id); - Ok(()) -} - -/// Receive a message from WebSocket (async). -#[op2(async)] -#[string] -async fn op_ws_recv(_id: u32) -> Result, deno_core::error::AnyError> { - // Note: Full WebSocket state management would require more complex handling - // For now, return None to indicate no message - Ok(None) -} - -/// Close a WebSocket connection. -#[op2(fast)] -fn op_ws_close( - _state: &mut OpState, - _id: u32, - _code: u16, - #[string] _reason: &str, -) -> Result<(), deno_core::error::AnyError> { - log::debug!("[ws] Close connection {}", _id); - Ok(()) -} - -// ============================================================================ -// IndexedDB Ops -// ============================================================================ - -#[derive(Serialize)] -struct IdbOpenResult { - #[serde(rename = "needsUpgrade")] - needs_upgrade: bool, - #[serde(rename = "oldVersion")] - old_version: u32, - #[serde(rename = "objectStores")] - object_stores: Vec, -} - -/// Open an IndexedDB database. -#[op2(async)] -#[serde] -async fn op_idb_open( - state: Rc>, - #[string] name: String, - version: u32, -) -> Result { - let storage = { - let state = state.borrow(); - state.borrow::().clone() - }; - - let result = storage.open_database(&name, version).await.map_err(|e| { - deno_core::error::generic_error(format!("IDB open failed: {}", e)) - })?; - - Ok(IdbOpenResult { - needs_upgrade: result.needs_upgrade, - old_version: result.old_version, - object_stores: result.object_stores, - }) -} - -/// Close an IndexedDB database. -#[op2(fast)] -fn op_idb_close(state: &mut OpState, #[string] name: &str) { - let storage = state.borrow::(); - storage.close_database(name); -} - -/// Delete an IndexedDB database. -#[op2(async)] -async fn op_idb_delete_database( - state: Rc>, - #[string] name: String, -) -> Result<(), deno_core::error::AnyError> { - let storage = { - let state = state.borrow(); - state.borrow::().clone() - }; - - storage.delete_database(&name).await.map_err(|e| { - deno_core::error::generic_error(format!("IDB delete database failed: {}", e)) - }) -} - -#[derive(Deserialize)] -struct CreateObjectStoreOptions { - #[serde(rename = "keyPath")] - key_path: Option, - #[serde(rename = "autoIncrement")] - auto_increment: Option, -} - -/// Create an object store. -#[op2] -fn op_idb_create_object_store( - state: &mut OpState, - #[string] db_name: &str, - #[string] store_name: &str, - #[serde] options: CreateObjectStoreOptions, -) -> Result<(), deno_core::error::AnyError> { - let storage = state.borrow::(); - - storage - .create_object_store( - db_name, - store_name, - options.key_path.as_deref(), - options.auto_increment.unwrap_or(false), - ) - .map_err(|e| deno_core::error::generic_error(format!("Create object store failed: {}", e))) -} - -/// Delete an object store. -#[op2(fast)] -fn op_idb_delete_object_store( - state: &mut OpState, - #[string] db_name: &str, - #[string] store_name: &str, -) -> Result<(), deno_core::error::AnyError> { - let storage = state.borrow::(); - - storage - .delete_object_store(db_name, store_name) - .map_err(|e| deno_core::error::generic_error(format!("Delete object store failed: {}", e))) -} - -/// Get a value from an object store. -#[op2(async)] -#[serde] -async fn op_idb_get( - state: Rc>, - #[string] db_name: String, - #[string] store_name: String, - #[serde] key: serde_json::Value, -) -> Result, deno_core::error::AnyError> { - let storage = { - let state = state.borrow(); - state.borrow::().clone() - }; - - storage.get(&db_name, &store_name, &key).await.map_err(|e| { - deno_core::error::generic_error(format!("IDB get failed: {}", e)) - }) -} - -/// Put a value into an object store. -#[op2(async)] -async fn op_idb_put( - state: Rc>, - #[string] db_name: String, - #[string] store_name: String, - #[serde] key: serde_json::Value, - #[serde] value: serde_json::Value, -) -> Result<(), deno_core::error::AnyError> { - let storage = { - let state = state.borrow(); - state.borrow::().clone() - }; - - storage.put(&db_name, &store_name, &key, &value).await.map_err(|e| { - deno_core::error::generic_error(format!("IDB put failed: {}", e)) - }) -} - -/// Delete a value from an object store. -#[op2(async)] -async fn op_idb_delete( - state: Rc>, - #[string] db_name: String, - #[string] store_name: String, - #[serde] key: serde_json::Value, -) -> Result<(), deno_core::error::AnyError> { - let storage = { - let state = state.borrow(); - state.borrow::().clone() - }; - - storage.delete(&db_name, &store_name, &key).await.map_err(|e| { - deno_core::error::generic_error(format!("IDB delete failed: {}", e)) - }) -} - -/// Clear all values from an object store. -#[op2(async)] -async fn op_idb_clear( - state: Rc>, - #[string] db_name: String, - #[string] store_name: String, -) -> Result<(), deno_core::error::AnyError> { - let storage = { - let state = state.borrow(); - state.borrow::().clone() - }; - - storage.clear(&db_name, &store_name).await.map_err(|e| { - deno_core::error::generic_error(format!("IDB clear failed: {}", e)) - }) -} - -/// Get all values from an object store. -#[op2(async)] -#[serde] -async fn op_idb_get_all( - state: Rc>, - #[string] db_name: String, - #[string] store_name: String, - count: Option, -) -> Result, deno_core::error::AnyError> { - let storage = { - let state = state.borrow(); - state.borrow::().clone() - }; - - storage.get_all(&db_name, &store_name, count).await.map_err(|e| { - deno_core::error::generic_error(format!("IDB get_all failed: {}", e)) - }) -} - -/// Get all keys from an object store. -#[op2(async)] -#[serde] -async fn op_idb_get_all_keys( - state: Rc>, - #[string] db_name: String, - #[string] store_name: String, - count: Option, -) -> Result, deno_core::error::AnyError> { - let storage = { - let state = state.borrow(); - state.borrow::().clone() - }; - - storage.get_all_keys(&db_name, &store_name, count).await.map_err(|e| { - deno_core::error::generic_error(format!("IDB get_all_keys failed: {}", e)) - }) -} - -/// Count values in an object store. -#[op2(async)] -async fn op_idb_count( - state: Rc>, - #[string] db_name: String, - #[string] store_name: String, -) -> Result { - let storage = { - let state = state.borrow(); - state.borrow::().clone() - }; - - storage.count(&db_name, &store_name).await.map_err(|e| { - deno_core::error::generic_error(format!("IDB count failed: {}", e)) - }) -} - -// ============================================================================ -// Skill Bridge Ops (db, store, net) -// ============================================================================ - -#[op2] -#[bigint] -fn op_db_exec( - state: &mut OpState, - #[string] sql: &str, - #[string] params_json: Option, -) -> Result { - let storage = state.borrow::(); - let ctx = state.borrow::(); - - let params: Vec = match params_json { - Some(p) => serde_json::from_str(&p).unwrap_or_default(), - None => Vec::new(), - }; - - storage - .skill_db_exec(&ctx.skill_id, sql, ¶ms) - .map(|n| n as i64) - .map_err(|e| deno_core::error::generic_error(e)) -} - -#[op2] -#[string] -fn op_db_get( - state: &mut OpState, - #[string] sql: &str, - #[string] params_json: Option, -) -> Result { - let storage = state.borrow::(); - let ctx = state.borrow::(); - - let params: Vec = match params_json { - Some(p) => serde_json::from_str(&p).unwrap_or_default(), - None => Vec::new(), - }; - - storage - .skill_db_get(&ctx.skill_id, sql, ¶ms) - .map(|v| v.to_string()) - .map_err(|e| deno_core::error::generic_error(e)) -} - -#[op2] -#[string] -fn op_db_all( - state: &mut OpState, - #[string] sql: &str, - #[string] params_json: Option, -) -> Result { - let storage = state.borrow::(); - let ctx = state.borrow::(); - - let params: Vec = match params_json { - Some(p) => serde_json::from_str(&p).unwrap_or_default(), - None => Vec::new(), - }; - - storage - .skill_db_all(&ctx.skill_id, sql, ¶ms) - .map(|v| v.to_string()) - .map_err(|e| deno_core::error::generic_error(e)) -} - -#[op2] -#[string] -fn op_db_kv_get(state: &mut OpState, #[string] key: &str) -> Result { - let storage = state.borrow::(); - let ctx = state.borrow::(); - - storage - .skill_kv_get(&ctx.skill_id, key) - .map(|v| v.to_string()) - .map_err(|e| deno_core::error::generic_error(e)) -} - -#[op2(fast)] -fn op_db_kv_set( - state: &mut OpState, - #[string] key: &str, - #[string] value_json: &str, -) -> Result<(), deno_core::error::AnyError> { - let storage = state.borrow::(); - let ctx = state.borrow::(); - - let value: serde_json::Value = - serde_json::from_str(value_json).unwrap_or(serde_json::Value::Null); - - storage - .skill_kv_set(&ctx.skill_id, key, &value) - .map_err(|e| deno_core::error::generic_error(e)) -} - -#[op2] -#[string] -fn op_store_get(state: &mut OpState, #[string] key: &str) -> Result { - let storage = state.borrow::(); - let ctx = state.borrow::(); - - storage - .skill_store_get(&ctx.skill_id, key) - .map(|v| v.to_string()) - .map_err(|e| deno_core::error::generic_error(e)) -} - -#[op2(fast)] -fn op_store_set( - state: &mut OpState, - #[string] key: &str, - #[string] value_json: &str, -) -> Result<(), deno_core::error::AnyError> { - let storage = state.borrow::(); - let ctx = state.borrow::(); - - let value: serde_json::Value = - serde_json::from_str(value_json).unwrap_or(serde_json::Value::Null); - - storage - .skill_store_set(&ctx.skill_id, key, &value) - .map_err(|e| deno_core::error::generic_error(e)) -} - -#[op2(fast)] -fn op_store_delete(state: &mut OpState, #[string] key: &str) -> Result<(), deno_core::error::AnyError> { - let storage = state.borrow::(); - let ctx = state.borrow::(); - - storage - .skill_store_delete(&ctx.skill_id, key) - .map_err(|e| deno_core::error::generic_error(e)) -} - -#[op2] -#[string] -fn op_store_keys(state: &mut OpState) -> Result { - let storage = state.borrow::(); - let ctx = state.borrow::(); - - storage - .skill_store_keys(&ctx.skill_id) - .map(|keys| serde_json::to_string(&keys).unwrap_or_else(|_| "[]".to_string())) - .map_err(|e| deno_core::error::generic_error(e)) -} - -#[op2] -#[string] -fn op_net_fetch( - #[string] url: &str, - #[string] options_json: &str, -) -> Result { - crate::runtime::bridge::net::http_fetch(url, options_json) - .map_err(|e| deno_core::error::generic_error(e)) -} - -// ============================================================================ -// State Bridge Ops -// ============================================================================ - -/// Get a value from the skill's published state. -#[op2] -#[string] -fn op_state_get(state: &mut OpState, #[string] key: &str) -> Result { - let ctx = state.borrow::(); - - let skill_state = ctx.skill_state.as_ref().ok_or_else(|| { - deno_core::error::generic_error("Skill state not initialized") - })?; - - let published_state = &skill_state.read().published_state; - let value = published_state.get(key).cloned().unwrap_or(serde_json::Value::Null); - Ok(value.to_string()) -} - -/// Set a value in the skill's published state. -#[op2(fast)] -fn op_state_set( - state: &mut OpState, - #[string] key: &str, - #[string] value_json: &str, -) -> Result<(), deno_core::error::AnyError> { - let ctx = state.borrow::(); - - let skill_state = ctx.skill_state.as_ref().ok_or_else(|| { - deno_core::error::generic_error("Skill state not initialized") - })?; - - let value: serde_json::Value = - serde_json::from_str(value_json).unwrap_or(serde_json::Value::Null); - skill_state.write().published_state.insert(key.to_string(), value); - Ok(()) -} - -/// Merge a partial object into the skill's published state. -#[op2(fast)] -fn op_state_set_partial( - state: &mut OpState, - #[string] partial_json: &str, -) -> Result<(), deno_core::error::AnyError> { - let ctx = state.borrow::(); - - let skill_state = ctx.skill_state.as_ref().ok_or_else(|| { - deno_core::error::generic_error("Skill state not initialized") - })?; - - let partial: serde_json::Value = - serde_json::from_str(partial_json).unwrap_or(serde_json::Value::Object(Default::default())); - - if let serde_json::Value::Object(map) = partial { - let mut state_guard = skill_state.write(); - for (k, v) in map { - state_guard.published_state.insert(k, v); - } - } - Ok(()) -} - -// ============================================================================ -// Data Bridge Ops -// ============================================================================ - -/// Read a file from the skill's data directory. -#[op2] -#[string] -fn op_data_read( - state: &mut OpState, - #[string] filename: &str, -) -> Result { - let ctx = state.borrow::(); - - let data_dir = ctx.data_dir.as_ref().ok_or_else(|| { - deno_core::error::generic_error("Data directory not configured") - })?; - - let path = data_dir.join(filename); - - // Prevent path traversal - if !path.starts_with(data_dir) { - return Err(deno_core::error::generic_error("Invalid filename: path traversal")); - } - - std::fs::read_to_string(&path).map_err(|e| { - deno_core::error::generic_error(format!("Failed to read file '{}': {}", filename, e)) - }) -} - -/// Write a file to the skill's data directory. -#[op2(fast)] -fn op_data_write( - state: &mut OpState, - #[string] filename: &str, - #[string] content: &str, -) -> Result<(), deno_core::error::AnyError> { - let ctx = state.borrow::(); - - let data_dir = ctx.data_dir.as_ref().ok_or_else(|| { - deno_core::error::generic_error("Data directory not configured") - })?; - - let path = data_dir.join(filename); - - // Prevent path traversal - if !path.starts_with(data_dir) { - return Err(deno_core::error::generic_error("Invalid filename: path traversal")); - } - - // Ensure parent directories exist - if let Some(parent) = path.parent() { - std::fs::create_dir_all(parent).map_err(|e| { - deno_core::error::generic_error(format!("Failed to create directory: {}", e)) - })?; - } - - std::fs::write(&path, content).map_err(|e| { - deno_core::error::generic_error(format!("Failed to write file '{}': {}", filename, e)) - }) -} - -// ============================================================================ -// TDLib Ops (telegram skill only) -// ============================================================================ - -/// Check if the current skill is the telegram skill. -fn check_telegram_skill(state: &OpState) -> Result<(), deno_core::error::AnyError> { - let ctx = state.borrow::(); - if ctx.skill_id != "telegram" { - return Err(deno_core::error::generic_error( - "TDLib is only available to the telegram skill", - )); - } - Ok(()) -} - -/// Check if TDLib is available (always true on desktop). -#[op2(fast)] -fn op_tdlib_is_available() -> bool { - true -} - -/// Create a TDLib client with the given data directory. -/// This is synchronous since create_client just spawns a worker thread and returns. -#[op2(fast)] -fn op_tdlib_create_client( - state: &mut OpState, - #[string] data_dir: String, -) -> Result { - // Check skill permission - check_telegram_skill(state)?; - - let path = std::path::PathBuf::from(data_dir); - - crate::services::tdlib::TDLIB_MANAGER - .create_client(path) - .map_err(|e| deno_core::error::generic_error(e)) -} - -/// Send a request to TDLib and wait for the response. -#[op2(async)] -#[serde] -async fn op_tdlib_send( - state: Rc>, - #[serde] request: serde_json::Value, -) -> Result { - // Check skill permission - { - let state = state.borrow(); - check_telegram_skill(&state)?; - } - - crate::services::tdlib::TDLIB_MANAGER - .send(request) - .await - .map_err(|e| deno_core::error::generic_error(e)) -} - -/// Receive the next update from TDLib (with timeout in ms). -#[op2(async)] -#[serde] -async fn op_tdlib_receive( - state: Rc>, - timeout_ms: u32, -) -> Result, deno_core::error::AnyError> { - // Check skill permission - { - let state = state.borrow(); - check_telegram_skill(&state)?; - } - - Ok(crate::services::tdlib::TDLIB_MANAGER.receive(timeout_ms).await) -} - -/// Destroy the TDLib client and clean up resources. -#[op2(async)] -async fn op_tdlib_destroy( - state: Rc>, -) -> Result<(), deno_core::error::AnyError> { - // Check skill permission - { - let state = state.borrow(); - check_telegram_skill(&state)?; - } - - crate::services::tdlib::TDLIB_MANAGER - .destroy() - .await - .map_err(|e| deno_core::error::generic_error(e)) -} - -// ============================================================================ -// Model Ops (local LLM inference) -// ============================================================================ - -/// Check if local model API is available (desktop only). -#[op2(fast)] -fn op_model_is_available() -> bool { - true -} - -/// Get model status (loading, ready, error). -#[op2] -#[serde] -fn op_model_get_status() -> serde_json::Value { - let status = crate::services::llama::LLAMA_MANAGER.get_status(); - serde_json::to_value(status).unwrap_or_default() -} - -/// Generate text from prompt (async, blocking inference on thread pool). -#[op2(async)] -#[string] -async fn op_model_generate( - #[string] prompt: String, - #[serde] config: serde_json::Value, -) -> Result { - let cfg: crate::services::llama::GenerateConfig = - serde_json::from_value(config).unwrap_or_default(); - - crate::services::llama::LLAMA_MANAGER - .generate(&prompt, cfg) - .await - .map_err(|e| deno_core::error::generic_error(e)) -} - -/// Summarize text (async). -#[op2(async)] -#[string] -async fn op_model_summarize( - #[string] text: String, - max_tokens: u32, -) -> Result { - crate::services::llama::LLAMA_MANAGER - .summarize(&text, max_tokens) - .await - .map_err(|e| deno_core::error::generic_error(e)) -} diff --git a/src-tauri/src/services/tdlib_v8/qjs_ops.rs b/src-tauri/src/services/tdlib_v8/qjs_ops.rs new file mode 100644 index 000000000..95003d42b --- /dev/null +++ b/src-tauri/src/services/tdlib_v8/qjs_ops.rs @@ -0,0 +1,799 @@ +use parking_lot::RwLock; +use rquickjs::{function::Async, Ctx, Function, Object, Result as JsResult}; +use serde::{Deserialize, Serialize}; +use std::collections::HashMap; +use std::path::PathBuf; +use std::sync::Arc; +use std::time::{Duration, Instant}; + +use super::storage::IdbStorage; + +// ============================================================================ +// Timer State +// ============================================================================ + +#[derive(Debug)] +pub struct TimerEntry { + pub deadline: Instant, + pub delay_ms: u32, + pub is_interval: bool, +} + +#[derive(Debug, Default)] +pub struct TimerState { + pub timers: HashMap, +} + +impl TimerState { + pub fn poll_ready(&mut self) -> Vec { + let now = Instant::now(); + let mut ready = Vec::new(); + let mut to_remove = Vec::new(); + + for (&id, entry) in &self.timers { + if now >= entry.deadline { + ready.push(id); + if !entry.is_interval { + to_remove.push(id); + } + } + } + + for id in to_remove { + self.timers.remove(&id); + } + + for &id in &ready { + if let Some(entry) = self.timers.get_mut(&id) { + if entry.is_interval { + entry.deadline = now + Duration::from_millis(entry.delay_ms as u64); + } + } + } + + ready + } + + pub fn time_until_next(&self) -> Option { + let now = Instant::now(); + self.timers + .values() + .map(|e| e.deadline.saturating_duration_since(now)) + .min() + } +} + +pub fn poll_timers(timer_state: &RwLock) -> (Vec, Option) { + let mut ts = timer_state.write(); + let ready = ts.poll_ready(); + let next = ts.time_until_next(); + (ready, next) +} + +// ============================================================================ +// Skill Context +// ============================================================================ + +#[derive(Clone)] +pub struct SkillContext { + pub skill_id: String, + pub data_dir: PathBuf, +} + +// ============================================================================ +// Skill State (shared published state) +// ============================================================================ + +#[derive(Debug, Clone, Serialize, Deserialize)] +pub struct SkillState { + #[serde(flatten)] + pub data: serde_json::Map, +} + +impl Default for SkillState { + fn default() -> Self { + Self { + data: serde_json::Map::new(), + } + } +} + +// ============================================================================ +// WebSocket State (placeholder) +// ============================================================================ + +#[derive(Debug)] +pub struct WebSocketConnection { + pub url: String, +} + +#[derive(Debug, Default)] +pub struct WebSocketState { + pub connections: HashMap, + pub next_id: u32, +} + +// ============================================================================ +// Allowed Environment Variables +// ============================================================================ + +const ALLOWED_ENV_VARS: &[&str] = &[ + "VITE_BACKEND_URL", + "VITE_TELEGRAM_API_ID", + "VITE_TELEGRAM_API_HASH", + "VITE_TELEGRAM_BOT_USERNAME", + "VITE_TELEGRAM_BOT_ID", + "NODE_ENV", +]; + +// ============================================================================ +// Helpers +// ============================================================================ + +fn check_telegram_skill(skill_id: &str) -> Result<(), String> { + if skill_id != "telegram" { + Err("TDLib operations only available in telegram skill".to_string()) + } else { + Ok(()) + } +} + +fn js_err(msg: String) -> rquickjs::Error { + rquickjs::Error::new_from_js_message("ops", "Error", msg) +} + +// ============================================================================ +// Main Registration Function +// ============================================================================ + +pub fn register_ops( + ctx: &Ctx<'_>, + storage: IdbStorage, + skill_context: SkillContext, + skill_state: Arc>, + timer_state: Arc>, + ws_state: Arc>, +) -> JsResult<()> { + let globals = ctx.globals(); + let ops = Object::new(ctx.clone())?; + + // ======================================================================== + // Console (3) + // ======================================================================== + + ops.set("console_log", Function::new(ctx.clone(), |msg: String| { + log::info!("[js] {}", msg); + }))?; + + ops.set("console_warn", Function::new(ctx.clone(), |msg: String| { + log::warn!("[js] {}", msg); + }))?; + + ops.set("console_error", Function::new(ctx.clone(), |msg: String| { + log::error!("[js] {}", msg); + }))?; + + // ======================================================================== + // Crypto (3) + // ======================================================================== + + ops.set("crypto_random", Function::new(ctx.clone(), |len: usize| -> Vec { + use rand::RngCore; + let mut buf = vec![0u8; len]; + rand::thread_rng().fill_bytes(&mut buf); + buf + }))?; + + ops.set("atob", Function::new(ctx.clone(), |input: String| -> rquickjs::Result { + use base64::Engine; + let bytes = base64::engine::general_purpose::STANDARD + .decode(&input) + .map_err(|e| js_err(e.to_string()))?; + String::from_utf8(bytes).map_err(|e| js_err(e.to_string())) + }))?; + + ops.set("btoa", Function::new(ctx.clone(), |input: String| -> String { + use base64::Engine; + base64::engine::general_purpose::STANDARD.encode(input.as_bytes()) + }))?; + + // ======================================================================== + // Performance (1) + // ======================================================================== + + ops.set("performance_now", Function::new(ctx.clone(), || -> f64 { + std::time::SystemTime::now() + .duration_since(std::time::UNIX_EPOCH) + .unwrap() + .as_secs_f64() + * 1000.0 + }))?; + + // ======================================================================== + // Platform (2) + // ======================================================================== + + ops.set("platform_os", Function::new(ctx.clone(), || -> &'static str { + if cfg!(target_os = "windows") { "windows" } + else if cfg!(target_os = "macos") { "macos" } + else if cfg!(target_os = "linux") { "linux" } + else if cfg!(target_os = "android") { "android" } + else if cfg!(target_os = "ios") { "ios" } + else { "unknown" } + }))?; + + ops.set("platform_env", Function::new(ctx.clone(), |key: String| -> Option { + if ALLOWED_ENV_VARS.contains(&key.as_str()) { + std::env::var(&key).ok() + } else { + None + } + }))?; + + // ======================================================================== + // Timers (2) + // ======================================================================== + + { + let ts = timer_state.clone(); + ops.set("timer_start", Function::new(ctx.clone(), + move |id: u32, delay_ms: u32, is_interval: bool| { + let mut state = ts.write(); + state.timers.insert(id, TimerEntry { + deadline: Instant::now() + Duration::from_millis(delay_ms as u64), + delay_ms, + is_interval, + }); + }, + ))?; + } + + { + let ts = timer_state.clone(); + ops.set("timer_cancel", Function::new(ctx.clone(), move |id: u32| { + let mut state = ts.write(); + state.timers.remove(&id); + }))?; + } + + // ======================================================================== + // Fetch (1) - ASYNC + // ======================================================================== + + ops.set("fetch", Function::new(ctx.clone(), + Async(move |url: String, options: String| async move { + let opts: serde_json::Value = + serde_json::from_str(&options).map_err(|e| js_err(e.to_string()))?; + + let method = opts["method"].as_str().unwrap_or("GET"); + let headers_obj = opts["headers"].as_object(); + let body = opts["body"].as_str(); + + let client = reqwest::Client::new(); + let mut req = match method { + "GET" => client.get(&url), + "POST" => client.post(&url), + "PUT" => client.put(&url), + "DELETE" => client.delete(&url), + _ => client.get(&url), + }; + + if let Some(h) = headers_obj { + for (k, v) in h { + if let Some(val_str) = v.as_str() { + req = req.header(k, val_str); + } + } + } + + if let Some(b) = body { + req = req.body(b.to_string()); + } + + let response = req.send().await.map_err(|e| js_err(e.to_string()))?; + + let status = response.status().as_u16(); + let status_text = response.status().canonical_reason().unwrap_or("").to_string(); + let headers: HashMap = response + .headers() + .iter() + .map(|(k, v)| (k.to_string(), v.to_str().unwrap_or("").to_string())) + .collect(); + let body_text = response.text().await.map_err(|e| js_err(e.to_string()))?; + + let result = serde_json::json!({ + "status": status, + "statusText": status_text, + "headers": headers, + "body": body_text, + }); + + Ok::(result.to_string()) + }), + ))?; + + // ======================================================================== + // WebSocket (4) - placeholders + // ======================================================================== + + { + let ws = ws_state.clone(); + ops.set("ws_connect", Function::new(ctx.clone(), + Async(move |url: String| { + let ws = ws.clone(); + async move { + let mut state = ws.write(); + let id = state.next_id; + state.next_id += 1; + state.connections.insert(id, WebSocketConnection { url }); + Ok::(id) + } + }), + ))?; + } + + { + let ws = ws_state.clone(); + ops.set("ws_send", Function::new(ctx.clone(), move |_id: u32, _data: String| { + let _state = ws.read(); + }))?; + } + + { + let ws = ws_state.clone(); + ops.set("ws_recv", Function::new(ctx.clone(), + Async(move |_id: u32| { + let _ws = ws.clone(); + async move { Ok::, rquickjs::Error>(None) } + }), + ))?; + } + + { + let ws = ws_state.clone(); + ops.set("ws_close", Function::new(ctx.clone(), move |id: u32, _code: u16, _reason: String| { + let mut state = ws.write(); + state.connections.remove(&id); + }))?; + } + + // ======================================================================== + // IndexedDB (11) - all sync + // ======================================================================== + + { + let s = storage.clone(); + ops.set("idb_open", Function::new(ctx.clone(), + move |name: String, version: u32| -> rquickjs::Result { + let result = s.open_database(&name, version).map_err(|e| js_err(e))?; + serde_json::to_string(&result).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + { + let s = storage.clone(); + ops.set("idb_close", Function::new(ctx.clone(), move |name: String| { + s.close_database(&name); + }))?; + } + + { + let s = storage.clone(); + ops.set("idb_delete_database", Function::new(ctx.clone(), + move |name: String| -> rquickjs::Result<()> { + s.delete_database(&name).map_err(|e| js_err(e)) + }, + ))?; + } + + { + let s = storage.clone(); + ops.set("idb_create_object_store", Function::new(ctx.clone(), + move |db_name: String, store_name: String, options: String| -> rquickjs::Result<()> { + let opts: serde_json::Value = + serde_json::from_str(&options).map_err(|e| js_err(e.to_string()))?; + let key_path = opts["keyPath"].as_str(); + let auto_increment = opts["autoIncrement"].as_bool().unwrap_or(false); + s.create_object_store(&db_name, &store_name, key_path, auto_increment) + .map_err(|e| js_err(e)) + }, + ))?; + } + + { + let s = storage.clone(); + ops.set("idb_delete_object_store", Function::new(ctx.clone(), + move |db_name: String, store_name: String| -> rquickjs::Result<()> { + s.delete_object_store(&db_name, &store_name).map_err(|e| js_err(e)) + }, + ))?; + } + + { + let s = storage.clone(); + ops.set("idb_get", Function::new(ctx.clone(), + move |db_name: String, store_name: String, key: String| -> rquickjs::Result { + let key_val: serde_json::Value = + serde_json::from_str(&key).map_err(|e| js_err(e.to_string()))?; + let result = s.get(&db_name, &store_name, &key_val).map_err(|e| js_err(e))?; + serde_json::to_string(&result).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + { + let s = storage.clone(); + ops.set("idb_put", Function::new(ctx.clone(), + move |db_name: String, store_name: String, key: String, value: String| -> rquickjs::Result<()> { + let key_val: serde_json::Value = + serde_json::from_str(&key).map_err(|e| js_err(e.to_string()))?; + let value_val: serde_json::Value = + serde_json::from_str(&value).map_err(|e| js_err(e.to_string()))?; + s.put(&db_name, &store_name, &key_val, &value_val).map_err(|e| js_err(e)) + }, + ))?; + } + + { + let s = storage.clone(); + ops.set("idb_delete", Function::new(ctx.clone(), + move |db_name: String, store_name: String, key: String| -> rquickjs::Result<()> { + let key_val: serde_json::Value = + serde_json::from_str(&key).map_err(|e| js_err(e.to_string()))?; + s.delete(&db_name, &store_name, &key_val).map_err(|e| js_err(e)) + }, + ))?; + } + + { + let s = storage.clone(); + ops.set("idb_clear", Function::new(ctx.clone(), + move |db_name: String, store_name: String| -> rquickjs::Result<()> { + s.clear(&db_name, &store_name).map_err(|e| js_err(e)) + }, + ))?; + } + + { + let s = storage.clone(); + ops.set("idb_get_all", Function::new(ctx.clone(), + move |db_name: String, store_name: String, count: Option| -> rquickjs::Result { + let result = s.get_all(&db_name, &store_name, count).map_err(|e| js_err(e))?; + serde_json::to_string(&result).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + { + let s = storage.clone(); + ops.set("idb_get_all_keys", Function::new(ctx.clone(), + move |db_name: String, store_name: String, count: Option| -> rquickjs::Result { + let result = s.get_all_keys(&db_name, &store_name, count).map_err(|e| js_err(e))?; + serde_json::to_string(&result).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + { + let s = storage.clone(); + ops.set("idb_count", Function::new(ctx.clone(), + move |db_name: String, store_name: String| -> rquickjs::Result { + s.count(&db_name, &store_name).map_err(|e| js_err(e)) + }, + ))?; + } + + // ======================================================================== + // DB Bridge (5) + // ======================================================================== + + { + let s = storage.clone(); + let sc = skill_context.clone(); + ops.set("db_exec", Function::new(ctx.clone(), + move |sql: String, params_json: Option| -> rquickjs::Result { + let params: Vec = if let Some(p) = params_json { + serde_json::from_str(&p).map_err(|e| js_err(e.to_string()))? + } else { + Vec::new() + }; + let rows = s.skill_db_exec(&sc.skill_id, &sql, ¶ms).map_err(|e| js_err(e))?; + Ok(rows as i64) + }, + ))?; + } + + { + let s = storage.clone(); + let sc = skill_context.clone(); + ops.set("db_get", Function::new(ctx.clone(), + move |sql: String, params_json: Option| -> rquickjs::Result { + let params: Vec = if let Some(p) = params_json { + serde_json::from_str(&p).map_err(|e| js_err(e.to_string()))? + } else { + Vec::new() + }; + let result = s.skill_db_get(&sc.skill_id, &sql, ¶ms).map_err(|e| js_err(e))?; + serde_json::to_string(&result).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + { + let s = storage.clone(); + let sc = skill_context.clone(); + ops.set("db_all", Function::new(ctx.clone(), + move |sql: String, params_json: Option| -> rquickjs::Result { + let params: Vec = if let Some(p) = params_json { + serde_json::from_str(&p).map_err(|e| js_err(e.to_string()))? + } else { + Vec::new() + }; + let result = s.skill_db_all(&sc.skill_id, &sql, ¶ms).map_err(|e| js_err(e))?; + serde_json::to_string(&result).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + { + let s = storage.clone(); + let sc = skill_context.clone(); + ops.set("db_kv_get", Function::new(ctx.clone(), + move |key: String| -> rquickjs::Result { + let result = s.skill_kv_get(&sc.skill_id, &key).map_err(|e| js_err(e))?; + serde_json::to_string(&result).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + { + let s = storage.clone(); + let sc = skill_context.clone(); + ops.set("db_kv_set", Function::new(ctx.clone(), + move |key: String, value_json: String| -> rquickjs::Result<()> { + let value: serde_json::Value = + serde_json::from_str(&value_json).map_err(|e| js_err(e.to_string()))?; + s.skill_kv_set(&sc.skill_id, &key, &value).map_err(|e| js_err(e)) + }, + ))?; + } + + // ======================================================================== + // Store Bridge (4) + // ======================================================================== + + { + let s = storage.clone(); + let sc = skill_context.clone(); + ops.set("store_get", Function::new(ctx.clone(), + move |key: String| -> rquickjs::Result { + let result = s.skill_store_get(&sc.skill_id, &key).map_err(|e| js_err(e))?; + serde_json::to_string(&result).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + { + let s = storage.clone(); + let sc = skill_context.clone(); + ops.set("store_set", Function::new(ctx.clone(), + move |key: String, value_json: String| -> rquickjs::Result<()> { + let value: serde_json::Value = + serde_json::from_str(&value_json).map_err(|e| js_err(e.to_string()))?; + s.skill_store_set(&sc.skill_id, &key, &value).map_err(|e| js_err(e)) + }, + ))?; + } + + { + let s = storage.clone(); + let sc = skill_context.clone(); + ops.set("store_delete", Function::new(ctx.clone(), + move |key: String| -> rquickjs::Result<()> { + s.skill_store_delete(&sc.skill_id, &key).map_err(|e| js_err(e)) + }, + ))?; + } + + { + let s = storage.clone(); + let sc = skill_context.clone(); + ops.set("store_keys", Function::new(ctx.clone(), + move || -> rquickjs::Result { + let keys = s.skill_store_keys(&sc.skill_id).map_err(|e| js_err(e))?; + serde_json::to_string(&keys).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + // ======================================================================== + // Net (1) + // ======================================================================== + + ops.set("net_fetch", Function::new(ctx.clone(), + |url: String, options_json: String| -> rquickjs::Result { + crate::runtime::bridge::net::http_fetch(&url, &options_json).map_err(|e| js_err(e)) + }, + ))?; + + // ======================================================================== + // State Bridge (3) + // ======================================================================== + + { + let ss = skill_state.clone(); + ops.set("state_get", Function::new(ctx.clone(), + move |key: String| -> rquickjs::Result { + let state = ss.read(); + let value = state.data.get(&key).cloned().unwrap_or(serde_json::Value::Null); + serde_json::to_string(&value).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + { + let ss = skill_state.clone(); + ops.set("state_set", Function::new(ctx.clone(), + move |key: String, value_json: String| -> rquickjs::Result<()> { + let value: serde_json::Value = + serde_json::from_str(&value_json).map_err(|e| js_err(e.to_string()))?; + let mut state = ss.write(); + state.data.insert(key, value); + Ok(()) + }, + ))?; + } + + { + let ss = skill_state.clone(); + ops.set("state_set_partial", Function::new(ctx.clone(), + move |partial_json: String| -> rquickjs::Result<()> { + let partial: serde_json::Map = + serde_json::from_str(&partial_json).map_err(|e| js_err(e.to_string()))?; + let mut state = ss.write(); + for (k, v) in partial { + state.data.insert(k, v); + } + Ok(()) + }, + ))?; + } + + // ======================================================================== + // Data Bridge (2) + // ======================================================================== + + { + let sc = skill_context.clone(); + ops.set("data_read", Function::new(ctx.clone(), + move |filename: String| -> rquickjs::Result { + let path = sc.data_dir.join(&filename); + std::fs::read_to_string(&path).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + { + let sc = skill_context.clone(); + ops.set("data_write", Function::new(ctx.clone(), + move |filename: String, content: String| -> rquickjs::Result<()> { + let path = sc.data_dir.join(&filename); + std::fs::write(&path, content).map_err(|e| js_err(e.to_string())) + }, + ))?; + } + + // ======================================================================== + // TDLib (5) - gated on skill_id == "telegram" + // ======================================================================== + + { + let sc = skill_context.clone(); + ops.set("tdlib_is_available", Function::new(ctx.clone(), + move || -> bool { sc.skill_id == "telegram" }, + ))?; + } + + { + let sc = skill_context.clone(); + ops.set("tdlib_create_client", Function::new(ctx.clone(), + move |data_dir: String| -> rquickjs::Result { + check_telegram_skill(&sc.skill_id).map_err(|e| js_err(e))?; + crate::services::tdlib::TDLIB_MANAGER + .create_client(PathBuf::from(data_dir)) + .map_err(|e| js_err(e)) + }, + ))?; + } + + { + let sc = skill_context.clone(); + ops.set("tdlib_send", Function::new(ctx.clone(), + Async(move |request_json: String| { + let skill_id = sc.skill_id.clone(); + async move { + check_telegram_skill(&skill_id).map_err(|e| js_err(e))?; + let request: serde_json::Value = + serde_json::from_str(&request_json).map_err(|e| js_err(e.to_string()))?; + let result = crate::services::tdlib::TDLIB_MANAGER + .send(request) + .await + .map_err(|e| js_err(e))?; + serde_json::to_string(&result).map_err(|e| js_err(e.to_string())) + } + }), + ))?; + } + + { + let sc = skill_context.clone(); + ops.set("tdlib_receive", Function::new(ctx.clone(), + Async(move |timeout_ms: u32| { + let skill_id = sc.skill_id.clone(); + async move { + check_telegram_skill(&skill_id).map_err(|e| js_err(e))?; + let result = crate::services::tdlib::TDLIB_MANAGER.receive(timeout_ms).await; + if let Some(val) = result { + let json = serde_json::to_string(&val).map_err(|e| js_err(e.to_string()))?; + Ok::, rquickjs::Error>(Some(json)) + } else { + Ok(None) + } + } + }), + ))?; + } + + { + let sc = skill_context.clone(); + ops.set("tdlib_destroy", Function::new(ctx.clone(), + Async(move || { + let skill_id = sc.skill_id.clone(); + async move { + check_telegram_skill(&skill_id).map_err(|e| js_err(e))?; + crate::services::tdlib::TDLIB_MANAGER.destroy().await.map_err(|e| js_err(e)) + } + }), + ))?; + } + + // ======================================================================== + // Model (4) - local LLM + // ======================================================================== + + ops.set("model_is_available", Function::new(ctx.clone(), || -> bool { false }))?; + + ops.set("model_get_status", Function::new(ctx.clone(), || -> rquickjs::Result { + let status = crate::services::llama::LLAMA_MANAGER.get_status(); + serde_json::to_string(&status).map_err(|e| js_err(e.to_string())) + }))?; + + ops.set("model_generate", Function::new(ctx.clone(), + Async(move |prompt: String, config_json: String| async move { + let config: crate::services::llama::GenerateConfig = + serde_json::from_str(&config_json).map_err(|e| js_err(e.to_string()))?; + crate::services::llama::LLAMA_MANAGER + .generate(&prompt, config) + .await + .map_err(|e| js_err(e)) + }), + ))?; + + ops.set("model_summarize", Function::new(ctx.clone(), + Async(move |text: String, max_tokens: u32| async move { + crate::services::llama::LLAMA_MANAGER + .summarize(&text, max_tokens) + .await + .map_err(|e| js_err(e)) + }), + ))?; + + // ======================================================================== + // Register on globalThis + // ======================================================================== + + globals.set("__ops", ops)?; + + Ok(()) +} diff --git a/src-tauri/src/services/tdlib_v8/storage.rs b/src-tauri/src/services/tdlib_v8/storage.rs index 4f6b27a21..955c9ffb0 100644 --- a/src-tauri/src/services/tdlib_v8/storage.rs +++ b/src-tauri/src/services/tdlib_v8/storage.rs @@ -13,7 +13,7 @@ use std::sync::Arc; /// Result of opening an IndexedDB database. /// Used by the IndexedDB emulation layer for tdweb. -#[derive(Debug, Clone)] +#[derive(Debug, Clone, serde::Serialize)] pub struct IdbOpenResult { /// Whether a version upgrade is needed. pub needs_upgrade: bool, @@ -29,7 +29,7 @@ pub struct IdbStorage { /// Base directory for all databases. data_dir: PathBuf, /// Open database connections (db_name -> connection). - connections: Arc>>>>, + connections: Arc>>>>, /// Database version info (used by IndexedDB emulation). #[allow(dead_code)] versions: Arc>>, @@ -49,7 +49,7 @@ impl IdbStorage { } /// Get or create a database connection. - fn get_connection(&self, db_name: &str) -> Result>, String> { + fn get_connection(&self, db_name: &str) -> Result>, String> { // Check if already open if let Some(conn) = self.connections.read().get(db_name) { return Ok(conn.clone()); @@ -81,7 +81,7 @@ impl IdbStorage { ) .map_err(|e| format!("Failed to initialize database schema: {e}"))?; - let conn = Arc::new(RwLock::new(conn)); + let conn = Arc::new(parking_lot::Mutex::new(conn)); self.connections .write() .insert(db_name.to_string(), conn.clone()); @@ -90,9 +90,9 @@ impl IdbStorage { } /// Open or create an IndexedDB database. - pub async fn open_database(&self, name: &str, version: u32) -> Result { + pub fn open_database(&self, name: &str, version: u32) -> Result { let conn = self.get_connection(name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); // Get current version let current_version: u32 = conn_guard @@ -145,7 +145,7 @@ impl IdbStorage { } /// Delete a database. - pub async fn delete_database(&self, name: &str) -> Result<(), String> { + pub fn delete_database(&self, name: &str) -> Result<(), String> { self.close_database(name); let db_path = self.data_dir.join(format!("{}.sqlite", name)); if db_path.exists() { @@ -164,7 +164,7 @@ impl IdbStorage { auto_increment: bool, ) -> Result<(), String> { let conn = self.get_connection(db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); // Register the store conn_guard @@ -197,7 +197,7 @@ impl IdbStorage { /// Delete an object store. pub fn delete_object_store(&self, db_name: &str, store_name: &str) -> Result<(), String> { let conn = self.get_connection(db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); // Remove from registry conn_guard @@ -214,14 +214,14 @@ impl IdbStorage { } /// Get a value from an object store. - pub async fn get( + pub fn get( &self, db_name: &str, store_name: &str, key: &serde_json::Value, ) -> Result, String> { let conn = self.get_connection(db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); let table_name = format!("store_{}", sanitize_name(store_name)); let key_str = serde_json::to_string(key).unwrap_or_else(|_| "null".to_string()); @@ -245,7 +245,7 @@ impl IdbStorage { } /// Put a value into an object store. - pub async fn put( + pub fn put( &self, db_name: &str, store_name: &str, @@ -253,7 +253,7 @@ impl IdbStorage { value: &serde_json::Value, ) -> Result<(), String> { let conn = self.get_connection(db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); let table_name = format!("store_{}", sanitize_name(store_name)); let key_str = serde_json::to_string(key).unwrap_or_else(|_| "null".to_string()); @@ -273,14 +273,14 @@ impl IdbStorage { } /// Delete a value from an object store. - pub async fn delete( + pub fn delete( &self, db_name: &str, store_name: &str, key: &serde_json::Value, ) -> Result<(), String> { let conn = self.get_connection(db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); let table_name = format!("store_{}", sanitize_name(store_name)); let key_str = serde_json::to_string(key).unwrap_or_else(|_| "null".to_string()); @@ -296,9 +296,9 @@ impl IdbStorage { } /// Clear all values from an object store. - pub async fn clear(&self, db_name: &str, store_name: &str) -> Result<(), String> { + pub fn clear(&self, db_name: &str, store_name: &str) -> Result<(), String> { let conn = self.get_connection(db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); let table_name = format!("store_{}", sanitize_name(store_name)); @@ -310,14 +310,14 @@ impl IdbStorage { } /// Get all values from an object store. - pub async fn get_all( + pub fn get_all( &self, db_name: &str, store_name: &str, count: Option, ) -> Result, String> { let conn = self.get_connection(db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); let table_name = format!("store_{}", sanitize_name(store_name)); let limit = count.map(|c| format!(" LIMIT {}", c)).unwrap_or_default(); @@ -337,14 +337,14 @@ impl IdbStorage { } /// Get all keys from an object store. - pub async fn get_all_keys( + pub fn get_all_keys( &self, db_name: &str, store_name: &str, count: Option, ) -> Result, String> { let conn = self.get_connection(db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); let table_name = format!("store_{}", sanitize_name(store_name)); let limit = count.map(|c| format!(" LIMIT {}", c)).unwrap_or_default(); @@ -364,9 +364,9 @@ impl IdbStorage { } /// Count values in an object store. - pub async fn count(&self, db_name: &str, store_name: &str) -> Result { + pub fn count(&self, db_name: &str, store_name: &str) -> Result { let conn = self.get_connection(db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); let table_name = format!("store_{}", sanitize_name(store_name)); @@ -394,7 +394,7 @@ impl IdbStorage { ) -> Result { let db_name = format!("skill_{}", skill_id); let conn = self.get_connection(&db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); let params: Vec> = params .iter() @@ -418,7 +418,7 @@ impl IdbStorage { ) -> Result { let db_name = format!("skill_{}", skill_id); let conn = self.get_connection(&db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); let params: Vec> = params .iter() @@ -463,7 +463,7 @@ impl IdbStorage { ) -> Result { let db_name = format!("skill_{}", skill_id); let conn = self.get_connection(&db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); let params: Vec> = params .iter() @@ -502,7 +502,7 @@ impl IdbStorage { pub fn skill_kv_get(&self, skill_id: &str, key: &str) -> Result { let db_name = format!("skill_{}", skill_id); let conn = self.get_connection(&db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); // Ensure KV table exists conn_guard @@ -535,7 +535,7 @@ impl IdbStorage { ) -> Result<(), String> { let db_name = format!("skill_{}", skill_id); let conn = self.get_connection(&db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); // Ensure KV table exists conn_guard @@ -580,7 +580,7 @@ impl IdbStorage { pub fn skill_store_delete(&self, skill_id: &str, key: &str) -> Result<(), String> { let db_name = format!("skill_{}", skill_id); let conn = self.get_connection(&db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); conn_guard .execute( @@ -596,7 +596,7 @@ impl IdbStorage { pub fn skill_store_keys(&self, skill_id: &str) -> Result, String> { let db_name = format!("skill_{}", skill_id); let conn = self.get_connection(&db_name)?; - let conn_guard = conn.read(); + let conn_guard = conn.lock(); // Ensure KV table exists conn_guard diff --git a/src-tauri/src/utils/config.rs b/src-tauri/src/utils/config.rs index 4f5823a81..db6f20c3b 100644 --- a/src-tauri/src/utils/config.rs +++ b/src-tauri/src/utils/config.rs @@ -3,8 +3,6 @@ /// This module provides configuration values that can be /// overridden via environment variables at runtime. use std::env; -use std::path::PathBuf; -use std::sync::Once; /// Default backend URL (can be overridden via BACKEND_URL env var) pub const DEFAULT_BACKEND_URL: &str = "https://api.alphahuman.xyz"; @@ -15,55 +13,9 @@ pub const APP_IDENTIFIER: &str = "com.alphahuman.app"; /// Service name for keychain pub const KEYCHAIN_SERVICE: &str = "AlphaHuman"; -/// Ensure .env is loaded once -static DOTENV_INIT: Once = Once::new(); - -/// Try to find and load .env file from various locations -fn ensure_dotenv_loaded() { - DOTENV_INIT.call_once(|| { - // Try current directory first (project root when running `tauri dev`) - if dotenvy::dotenv().is_ok() { - log::debug!("[config] Loaded .env from current directory"); - return; - } - - // Try parent directory (when cwd is src-tauri) - if let Ok(cwd) = env::current_dir() { - let parent_env = cwd.parent().map(|p| p.join(".env")); - if let Some(path) = parent_env { - if path.exists() { - if dotenvy::from_path(&path).is_ok() { - log::debug!("[config] Loaded .env from parent directory: {:?}", path); - return; - } - } - } - } - - // Try CARGO_MANIFEST_DIR (available during development builds) - if let Ok(manifest_dir) = env::var("CARGO_MANIFEST_DIR") { - let manifest_path = PathBuf::from(&manifest_dir); - // .env is one level up from src-tauri - let project_root_env = manifest_path.parent().map(|p| p.join(".env")); - if let Some(path) = project_root_env { - if path.exists() { - if dotenvy::from_path(&path).is_ok() { - log::debug!("[config] Loaded .env from project root: {:?}", path); - return; - } - } - } - } - - log::debug!("[config] No .env file found, using defaults/environment"); - }); -} - /// Get the backend URL from environment or use default /// Checks VITE_BACKEND_URL first, then BACKEND_URL, then defaults pub fn get_backend_url() -> String { - ensure_dotenv_loaded(); - let url = env::var("VITE_BACKEND_URL") .or_else(|_| env::var("BACKEND_URL")) .unwrap_or_else(|_| DEFAULT_BACKEND_URL.to_string()); diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index a596e65fc..848569802 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "AlphaHuman", - "version": "0.1.0", + "version": "0.31.0", "identifier": "com.alphahuman.app", "build": { "beforeDevCommand": "npm run dev",